Mam szablonie klasy z matrycy funkcji członkaSpecjalizacja matrycy funkcji członka w szablonie klasy
template<class T>
class A {
public:
template<class CT>
CT function();
};
teraz chcę się specjalizować w szablonie funkcji członka na 2 sposoby. Po pierwsze za to, że ten sam typ jak klasa:
template<class T>
template<> // Line gcc gives an error for, see below
T A<T>::function<T>() {
return (T)0.0;
}
sekundę typu bool:
template<class T>
template<>
bool A<T>::function<bool>() {
return false;
}
Oto jak próbuję go przetestować:
int main() {
A<double> a;
bool b = a.function<bool>();
double d = a.function<double>();
}
Teraz gcc daje mi dla linii zaznaczonej powyżej:
error: invalid explicit specialization before ‘>’ token
error: enclosing class templates are not explicitly specialize
Więc gcc mówi mi, że muszę specjalizować A, jeśli chcę specjalizować się w funkcji, prawda? Nie chcę tego robić, chcę, aby typ zewnętrznej klasy był otwarty ...
Czy ostateczna odpowiedź: nie jest możliwe? A może jest jakiś sposób?
Możliwy duplikat http://stackoverflow.com/q/3040201/498253 – Tom