我想定义赋值运算符的多种方式。最小的示例代码。
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。