"doesn't synthesize"和"defined as deleted"有什么区别?

What's the difference between "doesn't synthesize" and "defined as deleted"?

本文关键字:deleted as 什么 区别 defined doesn synthesize      更新时间:2023-10-16

我阅读了C++入门 5th,发现移动构造函数和移动赋值令人困惑。

在一页上,它说:

编译器仅合成移动构造函数和移动赋值 如果类没有定义任何自己的复制控制成员,并且 仅当所有数据成员都可以构造和移动时 分别分配。

在另一页上,它说:

如果我们显式要求编译器生成移动操作 使用 = 默认值,并且编译器无法移动所有成员, 则移动操作将定义为已删除。

"

不合成"和"将被定义为删除"有什么区别吗?

定义为

已删除的函数仍参与重载解析;如果选择此选项,则程序格式不正确。如果一个函数根本不存在,它当然不参与重载解析。

相关文章: