How to enforce compile time evaluation (and test if it was done at compile time)
    XavierAP via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Wed Mar  1 09:24:09 PST 2017
    
    
  
On Wednesday, 1 March 2017 at 09:19:53 UTC, Christian Köstlin 
wrote:
> On 01/03/2017 00:09, Joseph Rushton Wakeling wrote:
>> if (!__ctfe) assert(false);
>> 
>> ... might be the best option.  That shouldn't be compiled out 
>> even in -release builds.
> thats a nice idea! is this happening because of assert(false) 
> being always part of release builds (as mentioned here: 
> https://dlang.org/spec/contracts.html#assert_contracts) or 
> because the if would have no instructions anymore if this is 
> removed.
Yes assert(false) or assert(0) is a special case according to the 
specification. At least in the DMD implementation it is not 
removed for -release. If reached it throws an "object.Error@(0): 
assert(0) or HLT instruction" instead of 
core.exception.AssertError
    
    
More information about the Digitalmars-d-learn
mailing list