Is there a difference?
There is no difference. For naming template parameters,
class are equivalent.
typename however is possible in another context when using templates - to hint at the compiler that you are referring to a dependent type. §14.6.2:
A name used in a template declaration or definition and that is dependent on a template-parameter is assumed not to name a type unless the applicable name lookup finds a type name or the name is qualified by the keyword
But, pre-C++98 only
class was allowed, but that was a long time ago!
However, some people would argue that semantically it would make more sense to use one keyword over another.