Supposons que l'on désire créer des listes pour des réels, des complexes ou tou autre type de nombres. Une possibilité serait d'écrire une classe pour chacun de ces types. Cependant, cela serait fastidieux. Heureusement, le C++ permet la création de classes patron dont le but est de résoudre ce genre de problème: le type des données contenues dans la classe est un paramètre. Il suffira alors à la création effective de la liste de donner le type, soit par exemple int pour entier, float pour réel, etc.
La déclaration d'une classe patron est la suivante:
template<class T> class nom_de_classe { ... };
Cela permet d'utiliser la variable T comme un type de données. Au moment de la déclaration d'un objet de la classe, il faudra donc également indiquer le type effectif de T. Par exemple, si T représente un entier, la déclaration sera: nom_de_classe<int>. Il est aussi possible d'avoir plusieurs patrons, donc plusieurs variables de type de données, pour une classe.