llvm/libcxx/docs/DesignDocs/NoexceptPolicy.rst

===================
``noexcept`` Policy
===================

Extended applications of ``noexcept``
-------------------------------------

As of version 13 libc++ may mark functions that do not throw (i.e.,
"Throws: Nothing") as ``noexcept``. This has two primary consequences:
first, functions might not report precondition violations by throwing.
Second, user-provided functions, such as custom predicates or custom
traits, which throw might not be propagated up to the caller (unless
specified otherwise by the Standard).