immutable int n = Test(); int[n] x;---- compiles, but __ctfe is false. How?
Gopan
gggopan at gmail.com
Sun Feb 23 03:39:25 PST 2014
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.
More information about the Digitalmars-d-learn
mailing list