Although function throw lists are deprecated, its younger cousin ti(noexcept)
is not. The tt(noexcept) keyword is used where previously empty function throw
lists were used (cf. section ref(SYSTEMERROR) for examples where tt(noexcept)
is used). Like empty function throw lists you incur some run-time overhead,
but tt(noexcept) is more strict than empty function throw lists when
violations are observed. When violating function throw list specifications a
tt(std::unexpected) exception is thrown, when violating tt(noexcept) it
results in tt(std::terminate), ending the program.

In addition, tt(noexcept) can be given an argument that is evaluated
compile-time: if the evaluation returns tt(true) then the tt(noexcept)
requirement is used; if the evaluation returns tt(false), then the
tt(noexcept) requirement is ignored. Examples of this advanced use of
tt(noexcept) are provided in section ref(NOEXCEPT).


