Process a TypeTuple

Baz via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Jun 14 21:06:12 PDT 2015


On Monday, 15 June 2015 at 03:53:35 UTC, Yuxuan Shui wrote:
> Is it possible to apply some operation on every member of a 
> TypeTuple, then get the result back?
>
> Say I have a TypeTuple of array types, and I want a TypeTuple 
> of their element types, how could I do that?

You can do that with std.typetuple.staticMap, example:
---
import std.stdio;
import std.typetuple;

template ElemType(T)
{
     alias ElemType = typeof(T.init[0]);
}

void main(string[] args)
{
     alias T1 = TypeTuple!(int[],ubyte[]);
     alias T2 = staticMap!(ElemType, T1);
     writeln(typeof(T1.init).stringof);
     writeln(typeof(T2.init).stringof);
}
---

outputs:

---
(int[], ubyte[])
(int, ubyte)
---

It's like the higher-order function map() but for type list:

http://dlang.org/phobos/std_typetuple.html#.staticMap




More information about the Digitalmars-d-learn mailing list