I'm trying to create a tuple of variadic length containing structs with mixed types. So for instance, given

struct Foo(T, U)
{
        T x;
        U y;
}

I want to create something like
Tuple!(Foo!(type1, type2), Foo!(type1, type3), ..., Foo!(type1, typeN)) x;

The bar function (below) is what I've tried to use to create it.

template bar(T, U...)
        if (U.length > 1)
{
        
        import std.meta : staticMap;
        
        template baz(A)
        {
                import std.meta : AliasSeq;
                
                alias baz = AliasSeq!(T, A);
        }
        
        alias V = staticMap!(baz, U);
        alias bar = staticMap!(Foo, V);
}

void main()
{
        import std.typecons : Tuple;

        Tuple!(bar!(int, float, int)) x;
}

My strategy was getting something like
AliasSeq!(AliasSeq!(type1, type2), AliasSeq!(type1, type3), ... )
and then I can staticMap over that with Foo in order to create the correct type.

However, I can't seem to get it working.

Any ideas?

Reply via email to