static if( 1 ) { int var; } static if( 1 ) { float var; // Error, var already defined. As expected. } But if we do this.... static if(is(int T == int)) { writefln("T: ", typeid(T)); // T: int } static if(is(float T == float)) { writefln("T: ", typeid(T)); // T: int.... Where's my float? } Shouldn't this be a compiler error, or at least a warning?