Bonjour,
Je part d'une classe template avec 2 arguments template. Je souhaite spécialiser une des méthodes sur un seul de deux arguments. Echec
Voici mon code:
Je suis obligé de spécialiser partiellement toute la classe
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
19
20
21
22
23
24
25 template< class A, class B> class T { public: void MaFonction() { std::cout<<"?,?"<<std::endl; } }; // cette spécialisation fonctionne template<> void T<int,int>::MaFonction() { std::cout<<"int,int"<<std::endl; } // celle-ci ne compile pas template<class B> void T<int,B>::MaFonction() { std::cout<<"int,?"<<std::endl; }
Le code suivant ne pose pas de problème:
Je n'ai rien trouvé sur la spécialisation partielle de méthodes. En général, les docs parlent de spécialisation partielle pour les classes et de spécialisation (tout court) pour les méthodes. Une idée?
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
19
20
21
22
23
24
25
26
27
28
29
30 template< class A, class B> class T { public: void MaFonction() { std::cout<<"?,?"<<std::endl; } }; template<class B> class T<int,B> { public: void MaFonction() { std::cout<<"int,?"<<std::endl; } }; template<> class T<int,int> { public: void MaFonction() { std::cout<<"int,int"<<std::endl; } };
Partager