为了澄清,我引用James McNellis在the post "Template assignment operator overloading mystery"中的回答:
仍然会生成隐式声明的复制赋值运算符,该运算符声明如下:
Wrapper& operator=(const Wrapper&);
现在我有一个类似的类,想知道这个运算符的定义需要什么样的。
这是召回的课程:
template<typename T>
struct Wrapper;
现在的纠正匹配是什么:
template<typename T>
Wrapper& Wrapper<T>::operator=(const Wrapper&)
或
Wrapper& Wrapper::operator=(const Wrapper&)
或者这是一样的吗?
答案 0 :(得分:2)
此
template<typename T>
Wrapper& Wrapper<T>::operator=(const Wrapper&)
这实际上只是
的简写template<typename T>
Wrapper<T>& Wrapper<T>::operator=(const Wrapper<T>&)
另一个版本适用于名为Wrapper
的非模板类,它对您的模板没有影响。