"Walter" <newshound@digitalmars.com> wrote in message news:c889f4$2io2$1@digitaldaemon.com...
>
> "Hauke Duden" <H.NS.Duden@gmx.net> wrote in message
> news:c87go0$1f8j$2@digitaldaemon.com...
> > Walter wrote:
> >
> > > I have this mostly implemented. It's been based on a lot of your
> > > suggestions. The way I did it is, I think, pretty unexplored territory.
> > > That means there may be some pretty cool uses for it I've never thought of.
> > > Let me know what you think, and if I missed the boat completely <g>.
> > >
> > > www.digitalmars.com/d/mixin.html
> > >
> > >
> >
> > Oh yeah, forgot to mention: THANKS very much for implementing this! I
> > think this is a kick-ass feature!
>
> You're welcome! Now, I want to see a kick-ass use for this, so I can write a
> magazine article about it! A use that is cool, not easilly expressed in
> other languages, and so would highlight the capabilities of D.
>
This is GREAT (8^)
I personally like the way you have handled scope of mixins, makes perfect sense to me.
BTW you missed one of the (! in the text and can i suggest a minor grammatical change (in bold);
 
A TemplateMixin can occur in declaration lists of modules, classes, structs, unions, and as a statement. The TemplateIdentifier refers to a TemplateDeclaration. If the TemplateDeclaration has no parameters, the mixin form that has no (!TemplateArgumentList) can be used.

Unlike a template instantiation, a template mixin's body is evaluated within the scope where the mixin appears, not where the template declaration is defined. It is analogous to cutting and pasting the body of the template into the location of the mixin. It is useful for injecting parameterized 'boilerplate' code, as well as for creating templated nested functions, which is not possible with template instantiations.

As an advocate of class aggregation, I believe your implementation has a very promising future in this area.
I also think that MIXIN's are D's answer to MI, and plan to pursue this with some examples.
 
Watch this space
 
fred