On Friday, 21 February 2014 at 14:14:14 UTC, anonymous wrote:
Not sure if this should compile. n is a run-time value. It just happens that it can be CTFE'd. A more problematic case: --- void main() { immutable n = __ctfe ? 1 : 2; int[n] a; assert(a.length == n); // fails, wat }
ie, seeing the declaration 'int[n] a;' one should not assume a.length is same as 'n' at runtime. I would rather prefer getting a compilation error that n is not known at compile time and hence array declaration failed.
If this is eligible for a bugzilla, it is okay. Otherwise, I am very disappointed.