Spécialisation partielle d'une fonction template
Bonjour !
J'essaie de spécialiser une fonction d'une classe template A, dans le cas particulier ou le type est une autre classe template B.
Je n'arrive pas à savoir si c'est une erreur de syntaxe ou si c'est tout simplement impossible ?
J'ai essayé de chercher mais je n'arrive pas à formuler ce cas particulier de manière à avoir des résultats... alors toute indice/aide serait bienvenue !
Merci d'avance !
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class C
{};
template <class T>
class B
{};
template <class T>
class A
{
void foo() {}
};
template <class T>
void A<B<T> >::foo() { std::cout << "Allo"; }
// error C3860: template argument list following class template name must list parameters in the order used in template parameter list
// error C2995: 'void A<T>::foo(void)' : function template has already been defined |
EDIT - Auto-Réponse :
D'après mes recherches donc il est impossible de faire une spécialisation partielle d'une fonction membre.
Du coup, soit je spécialise manuellement pour chaque sous-type possible (je n'en aurais jamais plus de 3 ou 4 différents)... Soit, je suis à court d'idées la.