Inf*_*ity 4 c++ noexcept c++11
我正在尝试理解noexcept
。我发现全局交换函数通常是这样指定的
void swap (T& x, T& y) noexcept(noexcept(x.swap(y)))
{
x.swap(y);
}
Run Code Online (Sandbox Code Playgroud)
我想了解为什么 noexcept 规范是noexcept(noexcept(x.swap(y)))
但不是noexcept(x.swap(y))
。
这是 的两种用法noexcept
。
如果声明不抛出异常,则使用的noexcept 运算符将noexcept(x.swap(y))
返回,否则返回。true
x.swap(y)
false
它可以在函数模板的 noexcept 说明符中使用,以声明该函数将引发某些类型的异常,但不会引发其他类型的异常。
noexcept说明符用于指定函数是否可以抛出异常。根据 的结果noexcept(noexcept(x.swap(y)))
指定是否抛出;即能否抛出取决于能否抛出。swap
noexcept(x.swap(y))
swap
x.swap(y)
归档时间: |
|
查看次数: |
298 次 |
最近记录: |