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.