www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Specialize mixin templates

reply "Henning Pohl" <henning still-hidden.de> writes:
A struct takes a mixin template as argument:

struct S(alias Mixin) {
     mixin Mixin;
}


How to specialize a mixin template like this one to pass to S?

mixin template MixinTemplate(T) {
}


S(MixinTemplate!float); // Something like this
Aug 11 2012
next sibling parent Timon Gehr <timon.gehr gmx.ch> writes:
On 08/11/2012 11:42 PM, Henning Pohl wrote:
 A struct takes a mixin template as argument:

 struct S(alias Mixin) {
 mixin Mixin;
 }


 How to specialize a mixin template like this one to pass to S?

 mixin template MixinTemplate(T) {
 }


 S(MixinTemplate!float); // Something like this

This is a way to do it: struct S(alias Mixin){ mixin Mixin; } mixin template MixinTemplate(T){ } mixin template MixinTemplateFloat(){ mixin MixinTemplate!float; } S!MixinTemplateFloat s;
Aug 11 2012
prev sibling parent "Henning Pohl" <henning still-hidden.de> writes:
On Sunday, 12 August 2012 at 02:32:30 UTC, Timon Gehr wrote:
 On 08/11/2012 11:42 PM, Henning Pohl wrote:
 A struct takes a mixin template as argument:

 struct S(alias Mixin) {
 mixin Mixin;
 }


 How to specialize a mixin template like this one to pass to S?

 mixin template MixinTemplate(T) {
 }


 S(MixinTemplate!float); // Something like this

This is a way to do it: struct S(alias Mixin){ mixin Mixin; } mixin template MixinTemplate(T){ } mixin template MixinTemplateFloat(){ mixin MixinTemplate!float; } S!MixinTemplateFloat s;

I've already found another way, but I think this proposal seems cleaner, thank you.
Aug 12 2012