digitalmars.D.bugs - [Issue 1263] New: Template function overload fails when overloading on both template and non-template class
- d-bugmail puremagic.com (33/33) Jun 10 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1263
- d-bugmail puremagic.com (14/14) Jun 10 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1263
- d-bugmail puremagic.com (9/9) Jun 26 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1263
http://d.puremagic.com/issues/show_bug.cgi?id=1263 Summary: Template function overload fails when overloading on both template and non-template class Product: D Version: 1.015 Platform: PC OS/Version: Linux Status: NEW Keywords: rejects-valid Severity: normal Priority: P2 Component: DMD AssignedTo: bugzilla digitalmars.com ReportedBy: dhaffey gmail.com struct A {} class B() {} class C {} void foo()(int) {} void foo()(A) {} void foo()(B!()) {} //void foo()(C) {} void main() { foo(5); // ok foo(A()); // ok foo(new B!()); // error if C overload available //foo(new C); // ok (with C overload available) } Uncommenting the C overload declaration produces this error: template t.foo() foo() matches more than one function template declaration, foo() and foo() This is apparently only triggered by the call to the B overload. --
Jun 10 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1263 ------- Comment #1 from dhaffey gmail.com 2007-06-10 19:21 ------- It appears to behave similarly with aliased template instantiations: class B() {} class C() {} alias C!() D; void foo()(B!()) {} void foo()(C!()) {} //void foo()(D) {} void main() { foo(new B!()); // error if D overload is used instead of C } --
Jun 10 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1263 onlystupidspamhere yahoo.se changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED ------- Comment #2 from onlystupidspamhere yahoo.se 2007-06-26 14:25 ------- Fixed in 1.017. --
Jun 26 2007