digitalmars.D.learn - alias overloading strange error
- vitus (9/9) Jul 31 2015 //Why expression 'foobar(1);' doesn't work?
//Why expression 'foobar(1);' doesn't work? void foo()(){} void bar(int){} alias foobar = foo; alias foobar = bar; void main(){ .foobar(1); //OK foobar(1); //Error: overload alias 'foo' is not a variable }
Jul 31 2015
On Friday, 31 July 2015 at 10:56:33 UTC, vitus wrote://Why expression 'foobar(1);' doesn't work? void foo()(){} void bar(int){} alias foobar = foo; alias foobar = bar; void main(){ .foobar(1); //OK foobar(1); //Error: overload alias 'foo' is not a variable }foo is a template, while bar is a function. I would have thought the `.foobar(1)` should have failed too... Must be some strange lookup rules I don't know about (or a dmd bug). `alias foobar = foo!();` should make it work in both cases though.
Jul 31 2015
On Friday, 31 July 2015 at 10:56:33 UTC, vitus wrote://Why expression 'foobar(1);' doesn't work? void foo()(){} void bar(int){} alias foobar = foo; alias foobar = bar; void main(){ .foobar(1); //OK foobar(1); //Error: overload alias 'foo' is not a variable }It works when you switch the aliases around: ---- void foo()(){} void bar(int){} alias foobar = bar; alias foobar = foo; void main(){ foobar(1); } ---- Definitely a bug. Please file an issue at <https://issues.dlang.org/>.
Jul 31 2015
On Friday, 31 July 2015 at 11:09:39 UTC, anonymous wrote:Definitely a bug. Please file an issue at <https://issues.dlang.org/>.https://issues.dlang.org/show_bug.cgi?id=14858
Aug 01 2015