struct X {
template<typename T>
X( const T& ); // NOT copy ctor, T can't be X
template<typename T>
perator=( const T& ); // NOT copy ass't, T can't be X
};
原因很简单, 成员函数模版并不改变语言的规则,而语言的规则说,如果程序需要一个拷贝构造函数而你没有声明它,那么编译器会为你自动生成一个。 所以成员函数模版并不会阻止编译器生成拷贝构造函数, 赋值运算符重载也遵循同样的规则。(参见Effective C++ 3edition, Item45)