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 }
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).