diff --git a/libcxx/docs/UsingLibcxx.rst b/libcxx/docs/UsingLibcxx.rst --- a/libcxx/docs/UsingLibcxx.rst +++ b/libcxx/docs/UsingLibcxx.rst @@ -346,3 +346,19 @@ * ``unique`` * ``upper_bound`` * ``lock_guard``'s constructors + +.. _noexcept extension: + +Extended applications of ``noexcept`` +------------------------------------------ + +As of version 14 libc++ will mark functions that do not throw (i.e., +"Throws: nothing" as ``noexcept``). This means that functions will not +report precondition violations by throwing and user-provided functions, +such as custom predicates or custom traits, which throw will not be +propagated up to the caller (unless specified otherwise by the standard). + +Before version 14, libc++ did not specify whether a function that did not +throw would be marked as ``noexcept``, so users should not rely on any +non-throwing functions to be marked ``noexcept`` (unless the standard +specifies it). \ No newline at end of file