Я в настоящее время изучаю C ++ всесторонне, и я столкнулся с чем-то, что озадачило пару часов сейчас. Почему, когда я делаю шаблон, а затем специализирую его, я не могу вызвать или определить эту функцию для специализированной версии? Компилятор жалуется, и я отыскивал Google для возможной подсказки относительно того, что Я делаю не так, но безрезультатно. Я очень уверен, что это что-то очень простое, что я пропускаю:
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;
}
ошибка: идентификатор шаблона "echo <>" для "void C :: echo ()" не совпадает
любой шаблон объявления
Демо .