如何在带有复制和交换习惯用法的赋值运算符中使用 noexcept ?

2024-03-01

移动赋值运算符通常应声明为 noexcept(即将类型存储在 STL 容器中)。但是复制和交换习惯用法允许在单段代码中定义复制和移动赋值运算符。在这种情况下,如何使用 noexcept 说明符?复制构造可以抛出异常,但我怀疑它是否会违反 noexcept 说明符。

// Is it correct considering that T copy constructor can throw?
T& operator=(T other) noexcept;

既然已经复制了on the caller's side调用的一部分,它不是您的函数所做的一部分。因此,它不能由您的功能控制,因此您不能将此信息包含在noexcept规格。

你唯一能做的就是谨慎行事并添加both给你的选项noexcept规格。当然,这意味着您会得到一些假阴性结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在带有复制和交换习惯用法的赋值运算符中使用 noexcept ? 的相关文章

随机推荐