The terms template argument and template parameter do not mean the same thing. A template parameter is a symbol, or a placeholder which is replaced by the actual argument when you instantiate a template. For example, T in the following template is a template parameter:
template < class T > class List{ //..};
A template argument is a typename or a const value that a template instance uses. For example:
List li; // 'int' is a template argument
The parameter T is substituted for the arguments ‘int’ when the List