模板运算符专门化=

时间:2017-01-06 15:34:11

标签: c++ templates generics g++

我正在尝试实现此模板运算符专门化

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)                ^ ~~~

1 个答案:

答案 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; 
}