noexcept
函数说明符是否旨在 boost 性能,因为生成的对象中可能没有记录异常的代码,因此应尽可能将其添加到函数声明和定义中?我首先想到了可调用对象的包装器,其中 noexcept
可能会产生一些影响,尽管检查表达式可能会“膨胀”源代码。值得吗?
最佳答案
从理论上讲,noexcept
会 boost 性能。但另一方面,它也可能会导致一些问题。
在大多数情况下,不应指定,因为专业人士太少而无法考虑,并且可能会使您的代码升级变得痛苦。 This post由Andrzej撰写,详细介绍了原因。
如果太长,请采纳我从中得出的以下建议:
- 用
noexcept
注释函数 if- 它们已经用
throw()
进行了注释, - 或者他们是不错的候选人(在帖子中列出)并且永远不会 throw ,
- 或者它们是移动构造函数,移动赋值,其
noexcept
注释不能被编译器正确推断,它们的实例应该被放入某个 STL 容器中。
- 它们已经用
- 如果出现以下情况,请勿使用
noexcept
注释函数- 您真的很担心性能下降,
- 或关于调用
std::terminate
的风险, - 或者您只是不确定新功能,
- 或者你怀疑你是否应该让你的函数
noexcept
。
关于c++ - noexcept 会 boost 性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16104057/