Question: what is the difference between class and typename?
Answer: For naming template parameters, typename and class are equivalent. ... There is no semantic difference between class and typename in a template-parameter. typename however is possible in another context when using templates - to hint at the compiler that you are referring to a dependent type.