c++ noexcept

C++ ISO noexcept de noexcept



(1)

En el estándar de C ++ ( http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4296.pdf )

Existe la siguiente definición:

template <class T, size_t N> void swap(T (&a)[N], T (&b)[N]) noexcept(noexcept(swap(*a, *b)));

¿Qué hace noexcept(noexcept(swap(*a, *b))) ?


Tener el noexcept(x) en una declaración de función significa que la función no se lanza si y solo si x evalúa como true .

noexcept(y) también se puede usar como operator , evaluando a true si y es una expresión de no lanzar, y a false si y potencialmente puede lanzar.

Combinado, esto significa void foo() noexcept(noexcept(y)); significa: foo es no lanzar exactamente cuando y no es lanzar.

En el caso de la pregunta, se declara que la función de swap plantillas para matrices no es lanzada si y solo si el intercambio de miembros individuales de las matrices es no lanzable, lo que tiene sentido.