digitalmars.D.bugs - [Issue 11715] New: templatized method shadowed by non-templatized in parameterless eponymous template
- d-bugmail puremagic.com (55/55) Dec 10 2013 https://d.puremagic.com/issues/show_bug.cgi?id=11715
https://d.puremagic.com/issues/show_bug.cgi?id=11715 Summary: templatized method shadowed by non-templatized in parameterless eponymous template Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: monarchdodra gmail.com //---- template bar(T) { void bar(){} //Non template void bar(U)(U u){} //Template } template foo1() { void foo1()(){} //Template void foo1(U)(U u){} //Template } template foo2() { void foo2(){} //Non template void foo2(U)(U u){} //Template } void main() { bar!int(); //OK bar!int(1); //OK foo1(); //OK foo1(1); //OK foo2(); //OK foo2(1); //NOPE! } //---- Results in: //---- Error: template main.foo2 does not match any function template declaration. Candidates are: main.foo2()() Error: template main.foo2()() cannot deduce template function from argument types !()(int) //---- I think this is not correct behavior. "bar" and "foo2" should have the same behavior. It *seems* like the compiler does not "see" foo2().foo2(U)(U u) The workaround (as seen in foo1), is to make the non-template function a parameter-less template. -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Dec 10 2013