私は現在C++の勉強をしていますが、今は数時間困ったことがあります。 テンプレートを作成して特殊化すると、特殊なバージョンの関数を呼び出せない、または定義できないのはなぜですか?コンパイラは文句を言って、私が間違っていることについてヒントを探すためにGoogleを精査したが、役に立たない。私はそれが私が見渡せるだということを非常に単純なもので非常に確信しています:特殊なテンプレートのC++関数の定義と呼び出し
template <typename T>
class C { };
//specialization to type char
template <>
class C <char>
{
public:
void echo();
};
//compiler complains here
template <>
void C <char> :: echo()
{
cout << "HERE" << endl;
}
error: template-id ‘echo<>’ for ‘void C::echo()’ does not match any template declaration
Demo。
[template-idはテンプレートのdelcarationと一致しません](http://stackoverflow.com/questions/4694181/template-id-does-not-match-any-template-delcaration) – GWW