1

我想定义赋值运算符的多种方式。最小的示例代码。

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。

4

0 回答 0