https://herbsutter.com/2018/07/02/trip-report-summer-iso-c-standards-meeting-rapperswil/

This looks to me like a huge step forward for C++....

* You get to install your own violation handler and ship a release build with the option of turning on enforcement at run time. * You get to express audit to distinguish expensive checks to be run only when explicitly requested. * You get to express axiom contracts that are intended to never generate run-time code but are available to static analysis tools. * Finally, you will likely get better performance, because contracts should enable compilers to perform more optimizations, more easily, than expressing them using assertions.

The last to look very important to me.

I have been looking closely at what the compiler (and splint) does with asserts in our code https://stackoverflow.com/questions/50165291/how-can-one-implement-assert-to-make-use-of-gccs-optimizers-static-dataflo

And found that counter intuitively (in C at least), asserts weakened gcc's static analysis abilities!

Step 2 is to (gradually) migrate std:: standard library precondition violations in particular from exceptions (or error codes) to contracts. The programming world now broadly recognizes that programming bugs (e.g., out-of-bounds access, null dereference, and in general all pre/post/assert-condition violations) cause a corrupted state that cannot be recovered from programmatically, and so they should never be reported to the calling code as exceptions or error codes that code could somehow handle.

Ah, that's a really nice statement.

Reply via email to