在the C++ standard中有以下定义:
template <class T, size_t N> void swap(T (&a)[N], T (&b)[N])
noexcept(noexcept(swap(*a, *b)));noexcept(noexcept(swap(*a, *b)))是做什么的?
发布于 2018-02-09 18:44:51
在函数声明中包含noexcept(x) specifier意味着当且仅当x的计算结果为true时,该函数才是非抛出的。
noexcept(y)也可以用作operator,如果y是非抛出表达式,则计算结果为true,如果y可能会抛出,则计算结果为false。
结合在一起,这意味着void foo() noexcept(noexcept(y));意味着:foo是非抛出的,而y是非抛出的。
在问题中的情况下,当且仅当交换数组的单个成员是非抛出的时,数组的函数模板swap被声明为非抛出的,这是有意义的。
https://stackoverflow.com/questions/48703988
复制相似问题