digitalmars.D.learn - Process a TypeTuple
- Yuxuan Shui (4/4) Jun 14 2015 Is it possible to apply some operation on every member of a
- Baz (24/28) Jun 14 2015 You can do that with std.typetuple.staticMap, example:
- Justin Whear (4/10) Jun 15 2015 For this particular example you use std.range.ElementType:
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?
Jun 14 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:
Jun 14 2015
On Mon, 15 Jun 2015 04:06:12 +0000, Baz wrote:On Monday, 15 June 2015 at 03:53:35 UTC, Yuxuan Shui wrote:For this particular example you use std.range.ElementType: import std.typecons, std.range; alias Elements = staticMap!(ElementType, MyRangeOrArrayTypes);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?
Jun 15 2015