Below there are two routines with the same name. Apparently both can be present at the same time.
Which one of the two is the recommended code? import std.stdio; interface ITest { int first(); int second(); } class Test: ITest { int first() { writeln("first"); return 1; } int second() { writeln("second"); return 2; } } void routine(T:ITest) (T a) { a.second(); } void routine(T) (T a) if (is(T:ITest)) { a.first(); } int main() { routine(new Test()); return 0; } ----------------------- The above example prints out first.