struct inheritance

Reiner Pope some at address.com
Sat Sep 1 05:25:46 PDT 2007


Bruno Medeiros wrote:
> Reiner Pope wrote:
>> Bill Baxter wrote:
>>> Let us all turn our copies of WalterAndrei.pdf to page 40 where yea 
>>> verily it doth say:
>>>
>>>     struct M { int a; }
>>>     struct S {
>>>        M m;
>>>        alias m this;
>>>        int b;
>>>     }
>>>
>>> Why not just allow mixin to do this?
>>>
>>>     struct M { int a; }
>>>     struct S {
>>>        mixin M;
>>>        int b;
>>>     }
>>>
>>> That's basically the way it's done now except now it would be more like:
>>> template MMixin() { int a; }
>>> struct M { mixin M; }
>>> struct S { mixin M; int b; }
>>>
>>> Just let us treat a struct like a zero arg template for mixin purposes.
>>>
>>> --bb
>>
>> Template mixins require that the sourcecode of the template is 
>> available to the compiler. Aliases don't. In this sense at least, 
>> aliases are cleaner.
>>
>>  -- Reiner
> 
> Huh? Explain how the above alias example would work if the compiler 
> doesn't know the source code of what is being aliased:
> 
>   struct M;
>   struct S {
>     M m;
>     alias m this;
>     int b;
>   }
> 
> It's not even possible to declare m without knowing the source of M! 
> Perhaps I misunderstood you?
> 
All you need is a declaration of M's interface, you don't need to 
distribute the source code of your implementation, whereas template 
mixins require that the implementation source is also available.

    -- Reiner



More information about the Digitalmars-d mailing list