Should these aliases kind be illegal ?

2015-08-12 Thread anonymous via Digitalmars-d-learn
The following alias declaration is totally legal but actually 
it's not usable


---
class Foo
{
void something(size_t param){}
}

class Bar
{
private Foo foo;
this(){foo = new Foo;}
alias somethingelse = foo.something;
}

void main(string[] args)
{
auto bar = new Bar;
//bar.somethingelse(0u);
}
---

The call doesn't work but the declaration is fine. What is 
possible to make with this declaration ?


Re: Should these aliases kind be illegal ?

2015-08-12 Thread Timon Gehr via Digitalmars-d-learn

On 08/13/2015 12:17 AM, anonymous wrote:

The following alias declaration is totally legal but actually it's not
usable

---
class Foo
{
 void something(size_t param){}
}

class Bar
{
 private Foo foo;
 this(){foo = new Foo;}
 alias somethingelse = foo.something;
}

void main(string[] args)
{
 auto bar = new Bar;
 //bar.somethingelse(0u);
}
---

The call doesn't work but the declaration is fine. What is possible to
make with this declaration ?


I believe it currently just does the same thing as:

---
class Foo{
void something(size_t param){}
}

class Bar{
private Foo foo;
this(){foo = new Foo;}
alias somethingelse = typeof(foo).something;
}
---

But IMO the appropriate response here is to just make it work as one 
would expect, not to make it illegal.