dcollections 1.0 and 2.0a beta released

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Fri May 21 11:45:16 PDT 2010


On 05/21/2010 01:34 PM, Walter Bright wrote:
> Andrei Alexandrescu wrote:
>> I wrote a solution to the problem in native D. It goes like this:
>>
>> alias Container!(int, addable | purgeable) Messerschmidt;
>>
>> void messWith(Messerschmidt i) {
>> ... use i's capabilities to add and purge ...
>> }
>
> I agree with Michael Fortin that the | is questionable. I'd like to
> suggest instead that it should instead be a variadic list of names, like:
>
> alias Container!(int, addable, purgeable) Msserschmidt;
>
> Perhaps the names should follow a naming convention,
>
>
> alias Container!(int, ContainerAddable, ContainerPurgeable) Msserschmidt;
>
> The problem with using scoped names, like Container.Addable, is scoped
> names cannot be added to.

Well the problem stays: compound interfaces grow combinatorially with 
the number of components, because an interface X!(A, B, C) inherits at 
the same time X!(A, B), X!(A, C), and X!(B, C).

Check the epic inheritance diagram here:

http://www.artima.com/cppsource/codefeatures2.html

and the equally epic table here:

http://www.artima.com/cppsource/codefeatures3.html


Andrei


More information about the Digitalmars-d-announce mailing list