In many ways similar to generic classes in C# and Java
Template classes versus classes
A template can be used to create classes by means of template instantiation
Template instantiation
Supplying actual template parameters
Template parameters to classes must be supplied explicitly
Each instantiation creates a class which has the same status as a hand crafted class
"The generated classes and functions are perfectly ordinary classes that obey all the usual rules for classes"
"... a powerful way of generating code"
"... a certain amount of caution is in order to avoid flooding memory with almost identical [...] definitions"
The C++ Prog. Lang. (4. edition) page 671.
Type parameters are not related by inheritance
"There are no requirements that different arguments for the same template parameter should be related by inheritance", The C++ Prog. Lang. (4. edition) page 671.