在下面的示例类中,两个赋值运算符定义之间有什么区别?有没有?它们似乎都以相同的方式进行编译/操作。
template <typename T>
struct S
{
T internal;
//#1
S& operator= (const T& other)
{
internal = other;
return *this;
}
//#2
S<T>& operator= (const T& other)
{
internal = other;
return *this;
}
}
一个更笼统的问题可能是“在返回(引用/指向)模板化对象时,您必须指定模板特殊化类型吗?或者,如果您不指定它,编译器会自动提供特殊化类型吗? “