Casting between tuples
Simen kjaeraas
simen.kjaras at gmail.com
Wed Jan 12 13:45:06 PST 2011
Sean Eskapp <eatingstaples at gmail.com> wrote:
> I have a variable of type TypeTuple!(int, int), and I want to convert
> all its
> elements into a variable of type TypeTuple!(string, string). Is there a
> way to
> do this? Using a loop fails compilation with "Error: Integer constant
> expression expected instead of i".
Just to be sure, you want something( TypeTuple!(int, int) ) to yield
TypeTuple!( TypeTuple!(string, string), TypeTuple!(string, string) )?
This could be done by means of std.traits' staticMap in conjunction with
a custom template:
template replace( T ) {
alias TypeTuple!(string, string) replace;
}
alias staticMap!( replace, TypeTuple!( int, int ) ) myNewTuple;
static assert( myNewTuple.stringof == TypeTuple!( TypeTuple!(string,
string), TypeTuple!(string, string) ).stringof );
> I'd also like to be able to convert from arrays of base classes (static
> size)
> to TypeTuples of derived classes. "static for" doesn't work either. Is
> there a
> way to do this.. without a recursive template function?
Not that I know of. Recursive templates are fun, though.
--
Simen
More information about the Digitalmars-d-learn
mailing list