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