如何解决我应该只对构造函数和移动运算符写 noexcept 吗?
关于 noexcept
的用法有相当(非常)popular question,但它来自 8 年前,其他流行的答案也同样古老。看到其他人在不同项目中的一些代码,在我看来,noexcept
并没有成为许多开发人员编写的非常普遍的东西。
除了移动构造函数和移动赋值运算符之外,使用 noexcept
的好处似乎还不够清楚,无法为每个函数考虑(“我是否应该在此处添加 noexcept
?”)。
有人发现了这个说明符的一个很好的用法,可以分享他们的经验吗?
解决方法
除了您链接的问题中的答案(今天仍然具有相关性)之外,C++ Core Guidelines 中还列出了许多您可能想要查看的特定案例:
- F.6: If your function must not throw,declare it
noexcept
- C.37: Make destructors
noexcept
- C.66: Make move operations
noexcept
- C.85: Make
swap
noexcept
- C.86: Make
==
symmetric with respect of operand types andnoexcept
- C.89: Make a
hash
noexcept
- E.12: Use
noexcept
when exiting a function because of athrow
is impossible or unacceptable
正如 Discussion: Usage of noexcept
部分中持续缺乏内容(截至 2021 年 3 月)所指出的那样,这不是一个容易总结的主题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。