我想定义多种赋值运算符的方法。最小的示例代码。
enum class AssignType {
DeepCopy,
SharedCopy
};
struct Container
{
const char* x;
template<AssignType >
Container& operator=(const Container& other) {
x = other.x; return *this;
}
// ...some specialisations of operator=() could be made
};
int main()
{
Container i1, i2;
i2.operator=<AssignType::DeepCopy>(i1);
i2 =<AssignType::DeepCopy> i1; // line 20
return 0;
}
g ++的解析器给了我第20行的错误。有没有办法在显式模板中使用“短”形式的运算符(如第20行)?允许C ++ 11。