5
請考慮以下病態的程序:專門的內部類模板的功能的類外定義?
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
爲什麼不的f
定義編譯?如何在上面正確定義函數f
?
「*如果您正在定義模板的成員函數*」或模板成員函數,則只需要'template'。 – ildjarn 2015-02-11 13:54:26
@ildjarn更新 – Barry 2015-02-11 14:00:20