There is no difference. typename
and class
are interchangeable in the declaration of a type template parameter.
You do, however, have to use class
(and not typename
) when declaring a template template parameter:
template <template <typename> class T> class C { }; // valid!
template <template <typename> typename T> class C { }; // invalid! o noez!