应该仅因整数溢出而失败的函数是noexcept?

问题描述 投票:0回答:1

完整的问题适合标题。这是一个简单的例子:

constexpr int increment(int const value) /*noexcept?*/ {
  return value + 1;
}

据我所知,noexcept在决定是否用功能标记功能时应解释为“ nofail”。因此,throw ing的所有可能情况并不是必须考虑的唯一推理。

我未使用C ++ 20,因此尚未定义我的签名溢出。 :)

c++ c++17 integer-overflow noexcept
1个回答
0
投票

据我所知,noexcept应该解释为“ nofail”

这是不正确的。 noexcept的字面意思是“我保证此函数永远不会引发异常”。还有很多其他类型的故障,例如分段错误,非法指令,纯虚拟函数的调用,整数除以零,更不用说“会计中的鲍勃告诉我,我们所有的客户编号都只包含数字,但是我刚刚发现我们的第一个客户的ID实际上是Q001,并且无法解析。“

© www.soinside.com 2019 - 2024. All rights reserved.