August 12, 2015 Should these aliases kind be illegal ? | ||||
|---|---|---|---|---|
| ||||
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 ?
| ||||
August 13, 2015 Re: Should these aliases kind be illegal ? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to anonymous | 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.
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply