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