2013/9/6 Daryle Walker <
dar...@gmail.com>:
Exactly, these functions which have a so-called "narrow contract"
(contrast these to functions with "wide contract" such as size(),
empty(), etc), therefore the standard library specification does not
add an explicit noexcept specifier for functions with narrow contract,
because we want to allow implementations to throw an exception *in
case of a contract violation*. Of-course a feasible implementation
could simply mark these functions with noexcept and assert. You should
explicitly specify:
Throws: Nothing
for functions with narrow contract that won't throw an exception
within the contract boundaries.
- Daniel