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.