Proszę rozważyć następujące źle sformułowane program:Niedokonana definicja funkcji wyspecjalizowanego szablonu klasy wewnętrznej?
struct S {
template<class T> struct J { };
};
template<>
struct S::J<void> {
void f();
};
template<>
void S::J<void>::f() {} // ERROR
$ clang++ -std=c++11 test.cpp
no function template matches function template specialization 'f'
$ g++ -std=c++11 test.cpp
template-id ‘f<>’ for ‘void S::J<void>::f()’ does not match any template declaration
Dlaczego nie definicja f
skompilować? Jak poprawnie zdefiniować funkcję f
w powyższym?
"* Potrzebujesz tylko szablonu" jeśli definiujesz funkcję członkowską szablonu * "lub funkcję elementu szablonu. – ildjarn
@ildjarn zaktualizowany – Barry