Spécialisation explicite de modèles de fonctions
Avec un modèle de fonction, vous pouvez définir un comportement spécial pour un type spécifique en fournissant une spécialisation explicite (substitution) du modèle de fonction pour ce type. Par exemple :
template<> void MySwap(double a, double b);
Cette déclaration vous permet de définir une fonction différente pour les variables double. Comme les fonctions sans modèle, les conversions de type standard (comme la promotion d'une variable de type float en double) sont appliquées.
Exemple
// explicit_specialization.cpp
template<class T> void f(T t)
{
};
// Explicit specialization of f with 'char' with the
// template argument explicitly specified:
//
template<> void f<char>(char c)
{
}
// Explicit specialization of f with 'double' with the
// template argument deduced:
//
template<> void f(double d)
{
}
int main()
{
}