Thread overview
Specialize mixin templates
Aug 11, 2012
Henning Pohl
Aug 12, 2012
Timon Gehr
Aug 12, 2012
Henning Pohl
August 11, 2012
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
August 12, 2012
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;
August 12, 2012
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.