【发布时间】:2018-07-29 14:49:45
【问题描述】:
以下方法确实有效,但非常乏味:
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&&),因为它可以同时满足这两个目的。
【问题讨论】:
-
没有。使用 4 行版本显式禁用所有 4。
-
基类呢?
-
似乎在标准中最好删除复制构造函数和复制赋值运算符。比较this discussion。
-
boost::noncopyable是一种简洁而富有表现力的方法,如果您不介意为依赖项付费(或已经拥有它) -
@ricab 从 C++11 开始我就有点厌烦 Boost,因为它承诺向后兼容 C++03。
标签: c++ c++11 copy move-semantics