c++ - noexcept 会 boost 性能吗?

标签 c++ boost c++11

noexcept 函数说明符是否旨在 boost 性能,因为生成的对象中可能没有记录异常的代码,因此应尽可能将其添加到函数声明和定义中?我首先想到了可调用对象的包装器,其中 noexcept 可能会产生一些影响,尽管检查表达式可能会“膨胀”源代码。值得吗?

最佳答案

从理论上讲,noexcept 会 boost 性能。但另一方面,它也可能会导致一些问题。

在大多数情况下,不应指定,因为专业人士太少而无法考虑,并且可能会使您的代码升级变得痛苦。 This post由Andrzej撰写,详细介绍了原因。

如果太长,请采纳我从中得出的以下建议:

  1. noexcept 注释函数 if
    • 它们已经用 throw() 进行了注释,
    • 或者他们是不错的候选人(在帖子中列出)并且永远不会 throw ,
    • 或者它们是移动构造函数,移动赋值,其 noexcept 注释不能被编译器正确推断,它们的实例应该被放入某个 STL 容器中。
  2. 如果出现以下情况,请勿使用 noexcept 注释函数
    • 您真的很担心性能下降,
    • 或关于调用std::terminate的风险,
    • 或者您只是不确定新功能,
    • 或者你怀疑你是否应该让你的函数noexcept

关于c++ - noexcept 会 boost 性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16104057/

相关文章:

c++ - 如何获取 graphicsmagick 的头文件

c++ - 如何使我的 BigInt 和 BigFraction 类与 C++ 中的基本数据类型交互

c++ - 想要在使用 boost 程序选项时允许多次指定选项。现在我多次出现

STL - 交换的 noexcept 规范对性能有影响吗?

c++ - 反转字符串 find_first_not_of

c++ - boost 时间戳 UDP 数据包

C++ cmake 错误 BOOST_ROOT DOXYGEN

c++ - 删除模板分配的数组,可能已经分配了索引

c++ - 在 C++11 中使用 decltype() 时出错(在 gcc 4.7.0 中创建不透明的错误消息)

今天的 C++ 多线程与 C++ 11 的流动情况 - 书籍建议