 
 
 
 
 
   
Une classe peut aussi être templatée. Par exemple, si l'on souhaite que
l'un des champs ait un type générique T plutôt qu'un type précis:
template <class T>
class Vecteur {
  int n;
  T* tableau;
 public:
  Vecteur(const Vecteur<T>& A){}
  // etc.
};
Les différentes classes correspondantes s'appellent Vecteur<int>
(pour T = int),
Vecteur<double>, Vecteur<bool>, etc. Attention,
Vecteur lui-même n'est pas le nom d'une classe. Cette syntaxe
explique que le constructeur par copie indiqué dans l'exemple précédent
prend comme argument un const Vecteur<T>&.
Ainsi pour déclarer (avec le constructeur vide) un objet A de type Vecteur<T> pour T = int
on fait simplement:
Vecteur<int> A;