There are three kinds of template parameters:
- Type template parameters
- Non-type template parameters
- Template template parameters
Template parameter packs can also
be a kind of template parameter. For more information, see
Variadic templates (C++0x).
You can interchange the keywords class and typename in
a template parameter declaration. You cannot use storage class specifiers
(static and auto) in a template
parameter declaration.