digitalmars.D.learn - How to add n items to TypeTuple?
- denizzzka (5/5) Nov 01 2012 For example, adding 3 strings to type tuple t:
- Justin Whear (11/19) Nov 01 2012 Use a recursive template. Here's one that repeats a given type N times:
- Simen Kjaeraas (17/36) Nov 01 2012 I've always preferred the opposite order of arguments, as that
- denizzzka (1/1) Nov 01 2012 Great! Thanks!
For example, adding 3 strings to type tuple t: foreach( i; 0..2 ) alias TypeTuple!( t, string ) t; // this is wrong code and result should be: TypeTuple!( string, string, string );
Nov 01 2012
On Thu, 01 Nov 2012 19:42:07 +0100, denizzzka wrote:For example, adding 3 strings to type tuple t: foreach( i; 0..2 ) alias TypeTuple!( t, string ) t; // this is wrong code and result should be: TypeTuple!( string, string, string );Use a recursive template. Here's one that repeats a given type N times: template Repeat(Type, size_t Times) { static if (Times == 0) alias TypeTuple!() Repeat; else alias TypeTuple!(Type, Repeat!(Type, Times - 1)) Repeat; } Invoke like so: Repeat!(string, 3) threeStrings;
Nov 01 2012
On 2012-11-01, 19:52, Justin Whear wrote:On Thu, 01 Nov 2012 19:42:07 +0100, denizzzka wrote:I've always preferred the opposite order of arguments, as that allows repetition of more complex things: template Repeat(size_t times, T...) { static if ( times == 0 ) { alias TypeTuple!() Repeat; } else { alias TypeTuple!( T, Repeat!( times - 1, T ) ) Repeat; } } Invoke like so: alias Repeat!(4, string, int, "Hello, template world!") YeahThisIsGonnaBeUseful; Or: alias Repeat!(3, string) ThreeStrings; -- SimenFor example, adding 3 strings to type tuple t: foreach( i; 0..2 ) alias TypeTuple!( t, string ) t; // this is wrong code and result should be: TypeTuple!( string, string, string );Use a recursive template. Here's one that repeats a given type N times: template Repeat(Type, size_t Times) { static if (Times == 0) alias TypeTuple!() Repeat; else alias TypeTuple!(Type, Repeat!(Type, Times - 1)) Repeat; } Invoke like so: Repeat!(string, 3) threeStrings;
Nov 01 2012