Re: Process a TypeTuple

2015-06-15 Thread Justin Whear via Digitalmars-d-learn
On Mon, 15 Jun 2015 04:06:12 +, Baz wrote:

 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?

For this particular example you use std.range.ElementType:

import std.typecons, std.range;
alias Elements = staticMap!(ElementType, MyRangeOrArrayTypes);




Re: Process a TypeTuple

2015-06-14 Thread Baz via Digitalmars-d-learn

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




Process a TypeTuple

2015-06-14 Thread Yuxuan Shui via Digitalmars-d-learn
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?