有没有办法禁用operator =和复制构造函数并仅允许使用std::move()
?
我知道我能做到
foo& operator= (const foo&) = delete;
foo(const foo&) = delete;
但这也会禁用std :: move。
我想要的是阻止复制此类
并仅允许foo foo2 = std::move(foo1);
顺便说一下。我有私人的结构。
答案 0 :(得分:6)
使用defaulted
特殊成员函数:
foo(foo&&) = default;
foo& operator=(foo&&) = default;