next up previous
Next: Templater une classe Up: Les templates Previous: Gestion par le compilateur

Spécification

Il est possible de spécifier des définitions particulières de la fonction pour certaines valeurs des templates. Ainsi l'on peut ajouter après le bloc:

template <class T, class U>
void f(int a, T b, U c, double d){ 
  ... // des instructions
}

une redéfinition de f pour le cas particulier où T et U sont int:

void f(int a, int b, int c, double d){ 
  // d'autres instructions
}

C'est cette fonction-là qui sera désormais appelée si T et U sont int.

Lors d'une spécification, on n'est pas obligé de préciser tous les templates. De même que pour les arguments par défaut des fonctions, il faut spécifier en commençant par les types les plus à droite derrière le mot-clé template (c-à-d qu'ici on ne peut pas spécifier T sans spécifier U en même temps).



Guillaume Charpiat 2006-12-07