为什么noexcept两次用于全局交换功能
Why noexcept is used twice for global swap function
我正在努力理解 noexcept
。我开始知道全局交换函数通常是这样指定的
void swap (T& x, T& y) noexcept(noexcept(x.swap(y)))
{
x.swap(y);
}
我想了解为什么 noexcept 规范是 noexcept(noexcept(x.swap(y)))
而不是 noexcept(x.swap(y))
。
这是noexcept
的两种用法。
如果 x.swap(y)
声明不抛出,noexcept(x.swap(y))
中使用的 noexcept operator 将 return true
,否则 false
。
It can be used within a function template's noexcept specifier to declare that the function will throw exceptions for some types but not others.
noexcept specifier 用于指定函数是否可以抛出异常。 noexcept(noexcept(x.swap(y)))
根据noexcept(x.swap(y))
的结果指定swap
是否抛出;即 swap
是否可以抛出取决于 x.swap(y)
是否可以抛出。
我正在努力理解 noexcept
。我开始知道全局交换函数通常是这样指定的
void swap (T& x, T& y) noexcept(noexcept(x.swap(y)))
{
x.swap(y);
}
我想了解为什么 noexcept 规范是 noexcept(noexcept(x.swap(y)))
而不是 noexcept(x.swap(y))
。
这是noexcept
的两种用法。
如果 x.swap(y)
声明不抛出,noexcept(x.swap(y))
中使用的 noexcept operator 将 return true
,否则 false
。
It can be used within a function template's noexcept specifier to declare that the function will throw exceptions for some types but not others.
noexcept specifier 用于指定函数是否可以抛出异常。 noexcept(noexcept(x.swap(y)))
根据noexcept(x.swap(y))
的结果指定swap
是否抛出;即 swap
是否可以抛出取决于 x.swap(y)
是否可以抛出。