我应该只对构造函数和移动运算符写noexcept吗?
关于 的用法有一个非常(非常)流行的问题noexcept,但它是 8 年前的问题,其他流行的答案也同样古老。在不同的项目中看到其他人的一些代码,在我看来这noexcept并没有成为许多开发人员编写的非常普遍的事情。
除了移动构造函数和移动赋值运算符之外,使用的好处noexcept似乎还不够清楚,无法为每个函数考虑(“我应该在noexcept这里添加还是不添加?”)。
有人找到了这个说明符的一个很好的用法,可以分享他们的经验吗?
回答
除了您链接的问题中的答案(今天仍然相关)之外,C++ 核心指南中还列出了许多您可能想要查看的特定案例:
- F.6:如果你的函数不能抛出,声明它
noexcept - C.37:制作析构函数
noexcept - C.66:进行移动操作
noexcept - C.85:制作
swapnoexcept - C.86:
==关于操作数类型和noexcept - C.89:做一个
hashnoexcept - E.12:
noexcept当因为 athrowis不可能或不可接受而退出函数时使用
正如讨论:使用noexcept部分中持续缺乏内容(截至 2021 年 3 月)所指出的那样,这不是一个容易总结的主题。
- @KeithNicholas They seem to. Each point is clear english sentence.
- @KeithNicholas Answers that link to the defacto standard for how-to writing C++ are actually good. Each of his points is clearly expressed in English as well as providing links.