Citing Herb Sutter:
As noted in ยง1.1, preconditions, postconditions, and assertions are for identifying program bugs, they are never recoverable errors; violating them is always corruption, undefined behavior. Therefore they should never be reported via error reporting channels (regardless of whether exceptions, error codes, or another style is used). Instead, once we have contracts (expected in C++20), users should be taught to prefer expressing these as contracts, and we should consider using those also in the standard library.

Oh men, did you ever hear of non-determinism?
Why not just use compile time contracts and path dependent typing to solve those problems as well?
Because perfectionism is our enemy in productive development.
And terminating the whole program doesn't help either, exactly for this purpose we have error types or contexts, to know to which degree we are required to terminate and this should hold even for contracts.

Reply via email to