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