我正在尝试实现此模板运算符专门化
template <class T>
class test
{
public:
T value;
};
template <> test &test::operator=<std::string>(const char *rhs)
{ return *this;}
但是使用g ++,我收到了这个错误:
错误:无参数列表无效使用模板名称'test' 模板&lt;&gt; test&amp; test :: operator =(const char * rhs) ^ ~~~
答案 0 :(得分:0)
您似乎只是将模板参数放在了错误的位置。模板化类需要在其范围之外的模板参数,因此在这种情况下,返回类型也需要模板参数。
template<class T>
class test
{
public:
test & operator=(const char * rhs) {
return *this;
}
};
template<> test<std::string> & test<std::string>::operator=(const char * rhs) {
// type goes here ^^^^^^^^^ and here ^^^^^^^^^^
return *this;
}