J'ai une classe avec une fonction templated membre basé sur un modèle La spécialisation de la fonction membre en classe basé sur un modèle basé sur un modèle
template<class T>
class A {
public:
template<class CT>
CT function();
};
Maintenant, je veux me spécialiser la fonction membre de 2 façons basé sur un modèle. Tout d'abord pour avoir le même type que la classe:
template<class T>
template<> // Line gcc gives an error for, see below
T A<T>::function<T>() {
return (T)0.0;
}
deuxième pour le type bool:
template<class T>
template<>
bool A<T>::function<bool>() {
return false;
}
Voici comment je suis en train de le tester:
int main() {
A<double> a;
bool b = a.function<bool>();
double d = a.function<double>();
}
Maintenant gcc me donne pour la ligne marquée ci-dessus:
error: invalid explicit specialization before ‘>’ token
error: enclosing class templates are not explicitly specialize
Alors gcc me dit, que je dois spécialiser A, si je veux spécialiser la fonction, non? Je ne veux pas faire cela, je veux que le type de la classe externe soit ouvert ...
Est-ce la réponse finale: ce n'est pas possible? Ou y a-t-il un moyen?
double possible de http://stackoverflow.com/q/3040201/498253 – Tom