What is noexcept

throw is deprecated in C++11, will be removed in C++20.

noexcept operator

A specifier that indicates a function will not throw any exceptions.
If a noexcept function throws an exception, the program terminates via std::terminate().
This can potentially enable the compiler to perform optimizations, as it doesn't need to generate code for exception handling within the function.

noexcept(constant_expression)