Spécialisation de fonctions template pour certaines valeurs
Bonjour,
J'aimerai savoir si il existe un moyen pour que certaines valeurs spécifiques de template puissent appeler des versions personnalisées de methodes ?
Je m'explique, j'aimerais obtenir quelque chose ressemblant à ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| template <int S>
class toto
{
int calcul(int a, int b);
};
int calcul<3>(int a, int b)
{
/* calcul pour S = 3 */
}
int calcul<4>(int a, int b)
{
/* calcul pour S = 4 */
}
int calcul<S>(int a, int b)
{
/* calcul pour toutes les autres valeurs de S */
} |
Certaines valeurs remarquables de S permettent d'accelerer le calcul, je voudrais donc écrire la fonction calcul pour ces valeurs spécifiques de S et laisser la génération automatique de code gérer les autres cas.
Je pourrais bien évidemment simplement utiliser des conditions, mais je suis à la recherche maximum de vitesse et un embranchement conditionnel me fait perdre environ 10% au temps d'execution.
Merci d'avance.