http://d.puremagic.com/issues/show_bug.cgi?id=2696
Summary: Spurious "if"clause of template function shown in error message Product: D Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: bugzi...@digitalmars.com ReportedBy: and...@metalanguage.com (Thanks CLXX for submitting this to the newsgroup.) void fun(T)(T t) if (is(T == string)) {} void fun(T)(T t) if (is(T == int)) {} void main( ){ fun(1.0); } yields the errors: ./test.d(5): template test.fun(T) if (is(T == string)) does not match any function template declaration ./test.d(5): template test.fun(T) if (is(T == string)) cannot deduce template function from argument types !()(double) The if (...) clause is superfluous as the compiler seems to print there whatever fun overload was first in the module. The correct error message is: ./test.d(5): template test.fun(T) does not match any function template declaration ./test.d(5): template test.fun(T) cannot deduce template function from argument type !()(double) Notice the grammar fix too :o). --