Variadic Tuple of Structs with Mixed Types

jmh530 via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Jul 9 08:04:22 PDT 2016


On Saturday, 9 July 2016 at 05:40:10 UTC, ag0aep6g wrote:
>
> ----
> template bar(T, U...)
> if (U.length > 1)
> {
>     import std.meta : staticMap;
>     import std.typecons : Tuple;
>
>     alias baz(A) = Tuple!(T, A);
>     alias V = staticMap!(baz, U);
>     alias TupleToFoo(T : Tuple!(Types), Types ...) = Foo!Types;
>     // Alternative TupleToFoo with less complex syntax:
>     // alias TupleToFoo(T) = Foo!(T.Types);
>     alias bar = staticMap!(TupleToFoo, V);
> }
> ----
>
> Or with a more lightweight, custom wrapper:
>
> ----
> template bar(T, U...)
> if (U.length > 1)
> {
>     import std.meta : staticMap;
>
>     template Box(stuff ...) { alias contents = stuff; }
>
>     alias baz(A) = Box!(T, A);
>     alias V = staticMap!(baz, U);
>     alias BoxToFoo(alias box) = Foo!(box.contents);
>     alias bar = staticMap!(BoxToFoo, V);
> }
> ----

I'll give this a try. Thanks.


More information about the Digitalmars-d-learn mailing list