Confusion/trying to understand CTFE keywords

Stefan Koch uplink.coder at googlemail.com
Tue Jun 5 22:08:32 UTC 2018


On Tuesday, 5 June 2018 at 18:00:05 UTC, Steven Schveighoffer 
wrote:

> No, it's definitely a bug. main is not being evaluated at 
> compile time. The real result of this function should be a 
> compile-time error -- __ctfe is a *runtime* value that is 
> always defined based on whether you are __ctfe or not. 
> Therefore, n must be a runtime value, and not usable as a 
> static array dimension.
>
> If the posted code is valid, then this should be valid as well:
>
> static if(__ctfe)
>    immutable n = 1;
> else
>    immutable n = 2;
>
> But it's not.
>
> -Steve

I see what you mean.
I fear fixing this bug will not be easy without breaking arguably 
valid uses.



More information about the Digitalmars-d-learn mailing list