【发布时间】:2015-08-05 07:38:06
【问题描述】:
我开始将noexcept 添加到我的代码中,但我想知道将其添加到内联函数中是否明智。我假设优化器在明显不需要时会忽略运行时检查......但从人类/风格的角度来看,是否值得将 noexcept 添加到诸如 getter、设置、增量函数等琐碎的函数中?我认为这是完全明显的视觉混乱。我正在讨论一个规则,即内联函数可以省略 noexcept,但正常的 .hpp/.cpp 函数如果不抛出则必须具有它。
其次,我有大量根本无法抛出的代码,因为它没有分配(在我的国际象棋引擎中),不包括 STL 或任何其他可能失败的东西,所以总是可以保证成功。 noexcept 不会因为运行时检查而减慢它的速度吗?有没有人使用宏在使用noexcept 进行DEBUG 构建之间切换,但切换到throw() 进行发布,这只是编译时的?
【问题讨论】:
-
code that can't throw at all because it has no allocations分配是唯一的异常原因吗? -
什么“运行时检查”?
-
@deviantfan:嗯,没有操作系统调用,没有分配......这是一个没有任何功能的库,可能会以任何方式失败。这是国际象棋的计算。对于计算库 imo 来说非常合理。
-
noexcept函数不需要展开,因此不需要保持在可展开状态。这就是优化机会。
标签: c++ c++11 exception-handling coding-style noexcept