Question about compile-time functions.

Nicholas Wilson via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Dec 14 00:48:57 PST 2016


On Wednesday, 14 December 2016 at 07:15:08 UTC, Bauss wrote:
> If a function is only called during compile-time will it be 
> available at runtime?

It depends. When linking unused functions can be removed by 
-gc-sections, but only when linking an executable.

But obviously if you use it at runtime then the linker won't 
remove it. If you want to ensure that it never gets called at 
runtime, put a `assert(__ctfe);` at the beginning of the function.

There was a discussion some time ago about having an attribute(?) 
to disable codegen for particular functions (e.g. code for 
generating string for string mixins), but i'm not sure what 
became of that.


More information about the Digitalmars-d-learn mailing list