Restreindre une instanciation de template à certains types
Hello,
Soit un template :
Code:
1 2 3 4 5
| template <typename T>
class MyClass
{
...
}; |
La façon habituelle de restreindre l'instanciation à un nombre données de types (ici, A et B) et de ne pas fournir d'implémentation générique, et de spécialiser pour chaque classe privilégiée :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| template<>
class MyClass;
template<>
class MyClass<A>
{
...
};
template<>
class MyClass<B>
{
...
}; |
Si le code est commun aux deux spécialisations (nonobstant le type fourni en argument template), on se retrouve avec de la duplication de code. Il y a-t-il moyen de faire autrement ?
J'essaye de bidouiller avec C++11, mais je l'impression que ça en va pas être très propre...