Alias this and inheritance

ketmar via Digitalmars-d digitalmars-d at puremagic.com
Mon Jun 5 06:19:55 PDT 2017


Jacob Carlborg wrote:

> The following code does not compile:
>
> void foo(string a) {}
>
> class Base
> {
>      alias bar this;
>
>      string bar()
>      {
>          return "";
>      }
> }
>
> class Sub : Base {}
>
> void main()
> {
>      auto sub = new Sub;
>      foo(sub);
> }
>
> But if the "alias this" is copied/moved to the subclass it works. Is this 
> expected behavior?

yes, afaik. the reasons are similar to not automatically bringing overloads 
when you're doing override, and avoiding other "automatic helpers" most of 
the time: it can quickly get out of control.


More information about the Digitalmars-d mailing list