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

BCS ao at pathlink.com
Fri Aug 14 13:22:25 PDT 2009


Reply to Jesse,

> 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.
> 

The only other option (beside saying this is correct) would be to make it 
illegal to add a new function to an overload set after the set is used. That 
could get very tricky to implement.





More information about the Digitalmars-d mailing list