[Issue 2696] New: Spurious "if"clause of template function shown in error message
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sat Feb 28 12:51:42 PST 2009
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: bugzilla at digitalmars.com
ReportedBy: andrei at 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).
--
More information about the Digitalmars-d-bugs
mailing list