Re: alias overloading strange error

2015-08-01 Thread anonymous via Digitalmars-d-learn

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


alias overloading strange error

2015-07-31 Thread vitus via Digitalmars-d-learn

//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

}


Re: alias overloading strange error

2015-07-31 Thread simendsjo via Digitalmars-d-learn

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.


Re: alias overloading strange error

2015-07-31 Thread anonymous via Digitalmars-d-learn

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/.