checkedint call removal

via Digitalmars-d digitalmars-d at puremagic.com
Mon Jul 28 13:49:13 PDT 2014


> assert() says: this ought to hold when I do testing
> assume() says: I have proven this to hold

Just as another example of how these two are different:

You might want to assert() that you have enough headroom in a 
statically allocated buffer when testing. Say you assert that the 
buffer is never more than 50% full for normal loads. You 
obviously don't want the -release build to make such an 
assumption!

So the content of an assert() is in this regard different from a 
prove(). It can sometimes be desirable to put too strong 
constraints on the program when testing, then relax it on release 
to get that extra headroom for "odd situations".

You can probably make the same argument for tolerances in 
computations that are approximate/randomized/iterative. Testing 
for a tight tolerance does not mean that you want the optimizer 
to assume that the tolerance is always within that bound. You 
want some extra headroom in release to be sure that it behaves 
correctly under more difficult circumstances.


More information about the Digitalmars-d mailing list