c++ - 禁用复制和 move 语义的最简洁方法

标签 c++ c++11 copy move-semantics

以下方法确实有效,但非常乏味:

T(const T&) = delete;
T(T&&) = delete;
T& operator=(const T&) = delete;
T& operator=(T&&) = delete;

我正在尝试发现最简洁的方法。以下是否可行?

T& operator=(T) = delete;

更新

请注意,我选择 T& operator=(T) 而不是 T& operator=(const T&)T& operator=(T&&) ,因为它可以同时满足这两个目的。

最佳答案

根据这张图表(由 Howard Hinnant 提供):

meow

简洁的方式是=delete move 赋值运算符(或者 move 构造函数,但是会导致注释中提到的问题)。

不过,在我看来,最可读的方法是=delete both复制构造函数和复制赋值操作符。

关于c++ - 禁用复制和 move 语义的最简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48864976/

相关文章:

database - 使用 Postgres 复制整个表

c++ - 临时 CUDA 设备阵列

python - Python 中 % 或 .format 运算符的 C++ 等价物是什么?

c++ - 解释 C++ 中的位测试宏

C++正则表达式错误

c++ - 为什么 C++ 设计者选择不允许非成员运算符 ()()?

c++ - 为什么我们在c++中声明头文件时,空格不被视为空格?

c++ - 为什么这个删除仍然导致运行时异常即使我在删除后将指针设置为NULL

windows - 使用批处理文件将文件夹的所有内容复制到另一个文件夹?

c++ - Poco::DOMParser 和 wstring