Extended applications of
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).