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=11873
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.
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








d-bugmail puremagic.com