On 2/26/2017 1:15 PM, Andrei Alexandrescu wrote:
Indeed, the routines in core.checkedint are everything needed (in addition to
some inline code for comparisons) if the purpose is to check operations
individually.
The purpose of core.checkedint is to provide the smallest possible building
block for doing checked integers. This is to encapsulate it so it:
1. can be made portable
2. can be recognized by the compiler with the potential for using the knowledge
of the semantics of it to generate /better/faster/reliable/more correct/ code
3. is a clue to the reader of the code what the point of the odd looking
expressions is
As John Regehr pointed out in a series of articles,
http://blog.regehr.org/archives/1139
most people do ad-hoc checking which turns out to be very fragile in the face of
compiler optimizations and handling of undefined behavior.