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?