Checking if CTFE is used?
Steven Schveighoffer
schveiguy at gmail.com
Tue Dec 18 14:04:00 UTC 2018
On 12/18/18 7:21 AM, berni wrote:
> Is there a way to check if a function is indeed executed at compile time
> or not? (Other than going through the whole executable binaries...)
>
> I tried
>
>> static this()
>> {
>> if (__ctfe) pragma(msg,"works");
>> // some other stuff
>> }
>
> but unfortunatley this "if" is also executed at compile time, when I put
> it into a function that is only called at runtime. When I try "static
> if" instead the compiler complains about "__ctfe" being not known at
> compile time.
Well, asserting would at least tell you that it's used.
if(__ctfe) assert(0, "Yep, CTFE used");
But obviously, it couldn't be there for release purposes :)
-Steve
More information about the Digitalmars-d-learn
mailing list