typename
The keyword typename can be used instead of class in template parameter lists:template<typename T> class List;
But the more important use is to identify qualified names as types in the same way that template was used above to identify member templates:
template<class T>
class Wrapper
{
// ...
typename T::X data; // X is a type member
// of the parameter T
};