On Monday, 20 October 2014 at 06:17:40 UTC, Walter Bright wrote:
On 10/19/2014 1:56 AM, Iain Buclaw via Digitalmars-d wrote:
Good thing that overflow is strictly defined in D then. You can rely on
overflowing to occur rather than be optimised away.

Yeah, but one has to be careful when using a backend designed for C that it doesn't use the C semantics on that anyway.


8-I

And here I was hoping that Iain was being ironic!


If you want to support wrapping you could do it like this:

int x = @@wrapcalc( y + DELTA );

And clamping:

int x = @@clampcalc(y+ DELTA);

And overflow

int x  = y+DELTA;
if(x.status!=0){
  x.status.carry…
  x.status.overflow…
}

or

if(@@overflowed( x=a+b+c+d )){
    if(@@overflowed( x=cast(somebigint)a+b+c+d )){
        throw …
    }
}


or

int x = @@throw_on_overflow(a+b+c+d)

Reply via email to