禁用operator =和复制构造函数

Que*_*est 0 c++

有没有办法禁用operator =和复制构造函数,并允许std::move()只使用?我知道我能做到

foo& operator= (const foo&) = delete;
foo(const foo&) = delete;
Run Code Online (Sandbox Code Playgroud)

但这也会禁用std :: move.

我想要的是阻止复制此类 并仅允许foo foo2 = std::move(foo1);

顺便说一句.我有私人构造.

jua*_*nza 6

使用defaulted特殊成员函数:

foo(foo&&) = default;
foo& operator=(foo&&) = default;
Run Code Online (Sandbox Code Playgroud)