"doesn't synthesize"和"defined as deleted"有什么区别?
What's the difference between "doesn't synthesize" and "defined as deleted"?
我阅读了C++入门 5th,发现移动构造函数和移动赋值令人困惑。
在一页上,它说:
编译器仅合成移动构造函数和移动赋值 如果类没有定义任何自己的复制控制成员,并且 仅当所有数据成员都可以构造和移动时 分别分配。
在另一页上,它说:
"如果我们显式要求编译器生成移动操作 使用 = 默认值,并且编译器无法移动所有成员, 则移动操作将定义为已删除。
不合成"和"将被定义为删除"有什么区别吗?
定义为
已删除的函数仍参与重载解析;如果选择此选项,则程序格式不正确。如果一个函数根本不存在,它当然不参与重载解析。
相关文章:
- 为什么我会" void value not ignored as it ought to be"?
- 不断"Attempting to reference a deleted function"
- 为什么 std::shared_ptr 被认为是"heavy"和"expensive",但 std::array "same perfprmance as plain (c-style) arrays
- 了解 Linux 虚拟内存:valgrind 的 massif 输出显示了有和没有 --pages-as-heap 的主要差异
- 编译错误:"lvalue required as left operand of assignment" 不确定原因
- C++14 遇到奇怪的"use of deleted function"错误
- 如何理解"Temporary objs are destroyed as the last step in evaluating the full-expression"?谁能用一些简单的例子来说明这
- Atom gpp编译器给出"'C:UsersadminUser' is not recognized as an internal or..."错误
- r-在Rcpp和C++之间转换矢量(使用Rcpp::as或Rcpp:::wrap)是否会创建一个新的矢量并复制元素
- template<class T, int N> void h(T const(&)[N]); as friend function
- 我正在"void value not ignored as it ought to be"我该怎么办?
- 从'deleted function'获取内存错误
- 与映射和unordered_map相关的编译错误:"attempting to reference a deleted function"
- 使用互斥锁和条件变量作为成员时如何修复"use of deleted function"?
- 将 QMutex 添加到类后的"Attempting to reference a deleted function"
- 多级继承错误 C2280:"atttempting to reference a deleted function"
- 构造函数导致"use of deleted function"错误
- "expression cannot be used as a function"回报声明
- C5027 "Move assignment operator was implicitly defined as deleted"
- "doesn't synthesize"和"defined as deleted"有什么区别?