假设我声明了这样的函数noexcept:
int pow(int base, int exp) noexcept
{
return (exp == 0 ? 1 : base * pow(base, exp - 1));
}
Run Code Online (Sandbox Code Playgroud)
从我对 C++ 的了解很少,但慢慢增长的知识来看,noexcept当我确定该函数不会抛出异常时,我可以做到这一点。我还了解到它可以在某个值范围内,假设我在小于 10 和小于 8noexcept时考虑我的函数(仅作为示例)。我如何声明这个函数处于这样的值范围内?或者我最多能做的就是给其他程序员留下评论,说它应该在某个特定的范围内?expbasenoexcept
您可以使用条件 for noexcept,但该条件必须是常量表达式。它不能依赖于传递给函数的参数值,因为它们只有在调用函数时才知道。
C++ 中的每个函数要么不抛出,要么可能抛出
它不可能两者兼而有之,也不可能介于两者之间。在您的示例中,我们可以创建base一个模板参数:
template <int base>
int pow(int exp) noexcept( base < 10)
{
return (exp == 0 ? 1 : base * pow<base>(exp - 1));
}
Run Code Online (Sandbox Code Playgroud)
Nowpow<5>是一个不抛出异常的函数,而 whilepow<10>是一个可能抛出异常的函数。
| 归档时间: |
|
| 查看次数: |
261 次 |
| 最近记录: |