immutable int n = Test(); int[n] x;---- compiles, but __ctfe is false. How?
Gopan
gggopan at gmail.com
Fri Feb 21 08:46:24 PST 2014
On Friday, 21 February 2014 at 14:04:45 UTC, FreeSlave wrote:
> Another strange thing:
>
> import std.stdio;
>
> uint Test()
> {
> if (!__ctfe)
> {
> return 3;
> }
> return 2;
> }
>
>
>
> void main()
> {
> immutable n = Test();
> int[n] arr;
> writeln("arrary length = ", arr.length, " ; n = ", n);
> }
>
> Output:
> arrary length = 2 ; n = 3
>
> When you think about it you understand that it's logically
> right behavior, but it's not acceptable in practice.
It looks like 'immutable n = Test();' is executed during both
compile time and runtime. Is that what is happening?
More information about the Digitalmars-d-learn
mailing list