typename vs class in C++ Templates: What’s the Difference? | CodeTrail