digitalmars.D.learn - How to Mixin a Type List?
- Nick <nick example.com> Jan 25 2011
- Philippe Sigaud <philippe.sigaud gmail.com> Jan 25 2011
- "Simen kjaeraas" <simen.kjaras gmail.com> Jan 25 2011
- Nick <nick example.com> Feb 19 2011
Instead of mixing in type by type, is there a way to mixin a Type Tuple? Some foreach Type mixin; Otherwise, I guess recursive templated inheritance with a single mixin at each level should to the trick? Thanks, Nick
Jan 25 2011
On Tue, Jan 25, 2011 at 12:33, Nick <nick example.com> wrote:Instead of mixing in type by type, is there a way to mixin a Type Tuple? Some foreach Type mixin; Otherwise, I guess recursive templated inheritance with a single mixin at each level should to the trick?
Could you give an example of type mixin? I'm not sure I understand what you're trying to do. Philippe
Jan 25 2011
Nick <nick example.com> wrote:Instead of mixing in type by type, is there a way to mixin a Type Tuple? Some foreach Type mixin; Otherwise, I guess recursive templated inheritance with a single mixin at each level should to the trick?
That would be the way to do it, yes: template chainedMixin( alias head, tail... ) { mixin head; mixin chainedMixin!tail; } template chainedMixin( alias head ) { mixin head; } -- Simen
Jan 25 2011
On 1/25/2011 11:33 PM, Simen kjaeraas wrote:Nick <nick example.com> wrote:Instead of mixing in type by type, is there a way to mixin a Type Tuple? Some foreach Type mixin; Otherwise, I guess recursive templated inheritance with a single mixin at each level should to the trick?
That would be the way to do it, yes: template chainedMixin( alias head, tail... ) { mixin head; mixin chainedMixin!tail; } template chainedMixin( alias head ) { mixin head; }
Thanks! The problem is with mixing containing identical members. Then I need to disambiguate to address them. For that, I'd need to say something like mixin head headIdentifier; But I would need to differentiate somehow those identifiers... Any ideas? Thanks!
Feb 19 2011









Philippe Sigaud <philippe.sigaud gmail.com> 