I don't think this is a bug but...

Jesse Phillips jessekphillips+d at gmail.com
Fri Aug 14 12:50:15 PDT 2009


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.



More information about the Digitalmars-d mailing list