Benjamin Shropshire Wrote:
> The same expression twice gets different results
>
> code:
>
> import std.stdio;
>
> bool Fn(float i){ return true; }
> const bool b = Fn(cast(int)0);
>
> static if(b) bool Fn(int i){ return false; }
> const bool c = Fn(cast(int)0);
>
> void main()
> {
> writef("%s\n", b);
> writef("%s\n", c);
> }
>
> output:
>
> true
> false
>
The value of 'b' is assigned during compile time, but since it is indirectly
called the behavior seems odd. I suppose it is something to be aware of, but it
is behaving correctly.