在 C 11 标准的早期版本中,移动构造函数和赋值运算符的隐式生成是辩论的话题。这导致了后续草案的更改,导致当前可用的编译器中出现以下行为:
自 11 月发布 C 标准 (N3225) 以来,隐式移动构造函数和赋值可以在以下条件下生成运算符:
在早期草案中不包括默认移动构造函数/赋值实现的决定是由于担心可能出现混乱和意外行为。但是,后续修订通过收紧隐式移动生成的条件解决了这些问题。
如果您正在寻找一种在不编写显式移动构造函数/赋值运算符的情况下利用移动语义的方法,您可以使用[GManNickG的宏](https://stackoverflow.com/a/12316884/8674521)。该宏为您的类生成必要的移动语义。
通过实现移动语义,您也可以选择不提供交换成员函数。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3