digitalmars.D.bugs - [Issue 11873] New: function templates conflict with aliases
- d-bugmail puremagic.com (58/58) Jan 05 2014 https://d.puremagic.com/issues/show_bug.cgi?id=11873
- d-bugmail puremagic.com (19/38) Jan 05 2014 https://d.puremagic.com/issues/show_bug.cgi?id=11873
https://d.puremagic.com/issues/show_bug.cgi?id=11873 Summary: function templates conflict with aliases Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: enhancement Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: monarchdodra gmail.com Apparently, this is according to spec, but I think it should be legal. Simple functions? No problem: //---- void foo(); void bar(int); alias foo = bar; void main() { foo(); foo(5); } //---- Templates? Problem: //---- void foo()(); //Template here void bar(int); alias foo = bar; void main() { foo(); foo(5); } //---- main.d(4): Error: alias main.foo conflicts with template main.foo()() at main.d(1) //---- I think there should not be such a conflict. There is no reason for the alias not to work. The above code is trivial, but a real world scenario where this can happen, is when a module wants to publicly import a named template function overload: A.d //---- module a; foo(int); //Special "int" overload //---- B.d //---- module b; foo()(); //Standard 0-arg signature; public import A : foo; //re-use "int" //---- Because of this, -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 05 2014
https://d.puremagic.com/issues/show_bug.cgi?id=11873Templates? Problem: //---- void foo()(); //Template here void bar(int); alias foo = bar; void main() { foo(); foo(5); } //---- main.d(4): Error: alias main.foo conflicts with template main.foo()() at main.d(1) //---- I think there should not be such a conflict. There is no reason for the alias not to work.Just to be clear, I think this should be legal, as there is absolutly no conflict between the original symbol, and the alias anyways. Perfectly legal: //---- void foo()(); void foo(int); void main() { foo(); foo(5); } //---- If that works, why does the alias create a conflict? -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 05 2014