Spécialisation partielle de template
Bonjour tout le monde,
Je bute sur un problème et je ne comprends pas comment le résoudre.
J'essaie de spécialiser un seul de mes typename au niveau de mon template mais je n'y arrive pas:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| template <typename A, typename B, typename C>
class Test
{
public:
void foo(const B & d)
{
//fait quelque chose
}
};
template<typename B, typename C>
void Test<int, B, C>::foo(const B & d)
{
//fait autre chose
} |
Je suis avec clang (Apple LLVM version 6.0 (clang-600.0.56)), je compile en C++11 et j'obtiens l'erreur de compilation suivante:
Code:
1 2 3
| error: nested name specifier 'Test<int, B, C>::' for declaration does not refer into a class, class template or class template partial specialization
void Test<int, B, C>::foo(const B & d)
~~~~~~~~~~~~~~~~~^ |
La logique de mon raisonnement est de pouvoir avoir un autre comportement de fonction si le premier typename A est un int sans à se soucier des autres typenames.
Première question, est-ce possible?
Si oui, qu'est-ce que je fait de mal?
Merci pour tout!