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.

Reply via email to