Hi, I'm playing around with a recursive template type that allows for named template parameters. The problem is that it requires a lot of repetition and becomes more error prone as the number of named arguments increase. So

1) Any ideas on how to make it less error prone? less repetition? a better way to do this? 2) Right now I can only have named optional parameters. Any ideas on how to make named required parameters (e.g. the first type parameter of Type).

Here's an example of a type that has one required parameter and 4 optional named parameters:

private struct TypeImpl(
    T,
    string _arg0 = null,
    int _arg1 = 0,
    float _arg2 = 0,
    alias _arg3 = null,
) {
    alias Arg0 = _arg0;
    alias Arg1 = _arg1;
    alias Arg2 = _arg2;
    alias Arg3 = _arg3;
public alias arg0(string value) = TypeImpl!(T, value, Arg1, Arg2, Arg3); public alias arg1(int value) = TypeImpl!(T, Arg0, value, Arg2, Arg3); public alias arg2(float value) = TypeImpl!(T, Arg0, Arg1, value, Arg3);
    public static template arg3(alias value) {
        alias arg3 = TypeImpl!(T, Arg0, Arg1, Arg2, value);
    }
}

public template Type(T) {
    alias Type = TypeImpl!(T);
}

void main() {
    void fun() {}
    alias U = Type!int
        .arg0!"string"
        .arg1!3
        .arg3!fun;
    pragma(msg, U);
}

Cheers,
- Ali

Reply via email to