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









"simendsjo" <simendsjo gmail.com> 