c++ - 我应该只向构造函数和移动运算符编写 noexcept 吗?
问题描述
关于 的用法有一个非常(非常)流行的问题noexcept
,但它是从 8 年前开始的,其他流行的答案也同样古老。在不同项目中看到其他人的一些代码,在我看来这noexcept
并没有成为许多开发人员编写的很常见的事情。
除了移动构造函数和移动赋值运算符之外,使用的好处noexcept
似乎还不够清楚,无法为每个函数考虑(“我应该在noexcept
这里添加还是不添加?”)。
有人找到了这个说明符的一个很好的用法,并且可以分享他们的经验吗?
解决方案
除了您链接的问题中的答案(今天仍然相关)之外,您可能想要查看C++ 核心指南中提到的许多特定案例:
- F.6: 如果你的函数不能抛出,声明它
noexcept
- C.37:制作析构函数
noexcept
- C.66:进行移动操作
noexcept
- C.85:制作
swap
noexcept
- C.86:
==
关于操作数类型和noexcept
- C.89:制作一个
hash
noexcept
- E.12:
noexcept
在因为 athrow
不可能或不可接受而退出功能时使用
正如讨论中持续缺乏内容(截至 2021 年 3 月)所指出的那样,这不是一个容易总结的话题:noexcept
部分的使用。
推荐阅读
- google-sheets - 当单元格相等时执行数学运算
- python - 如何让我的图像(矩形)与我随机生成的圆圈碰撞以结束游戏?
- javascript - 如何在 json 中使用 mustache 和单个实体呈现 html 块
- python - 查找一系列行并搜索匹配的列参数
- spring-kafka - @Header 和 Spring Stream 函数式编程模型
- c++ - 初始化结构数组 - C++
- javascript - 使用 javascript 在正文中查找乱码
- javascript - Angular FxFlex Layout MediaOberver - 根据给定的 div 计算活动宽度?
- gradle - 如何在 gradle 任务中从依赖 jar 中引用资源文件?
- aws-lambda - AWS Lambda 函数短暂监听来自 Thing 的 MQTT 消息