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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Partager