Bitte beachten Sie das folgende schlecht gebildet Programm:Out-of-class Definition der Funktion der spezialisierten inneren Klassenvorlage?
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
Warum nicht die Definition von f
kompilieren? Wie definiere ich die Funktion f
richtig in obigem?
"* Sie würden nur' template' benötigen, wenn Sie eine Elementfunktion einer Vorlage definieren * "Oder eine Template-Member-Funktion. – ildjarn
@ildjarn aktualisiert – Barry