例如,
template<class T,size_t N>
void swap(T (&a)[N], T (&b)[N]) noexcept(noexcept(swap(*a,*b)));在什么情况下,函数可以或不能抛出异常?
发布于 2015-11-30 02:58:02
noexcept(noexcept(swap(*a,*b)))外层是noexcept specifier,内层是noexcept operator。
如果T%s的swap为noexcept,则为noexcept。
它只能在交换可以抛出的情况下才能抛出。
发布于 2015-11-30 03:00:25
快速解释:
如果函数swap(T&, T&)被标记为noexcept,则内部noexcept返回true。
如果内部noexcept返回true,则外部noexcept将此函数标记为noexcept。
因此,此函数复制swap(T&, T&)的noexcept语义。
https://stackoverflow.com/questions/33986541
复制相似问题