Spécialisation partielles de méthodes.
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 :aie:
Voici mon code:
Code:
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;
} |
Je suis obligé de spécialiser partiellement toute la classe :cry:
Le code suivant ne pose pas de problème:
Code:
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;
}
}; |
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?