Passing several tuples (T...) to templates without expanding them

simendsjo simendsjo at gmail.com
Wed Mar 13 04:21:41 PDT 2013


On Wednesday, 13 March 2013 at 11:13:55 UTC, monarch_dodra wrote:
> On Wednesday, 13 March 2013 at 10:34:14 UTC, simendsjo wrote:
>> Say you have a tuple type:
>>    struct Tuple(T...) {
>>        alias T Tuple;
>>    }
>>
>> and a template
>>    template t(alias A, alias B) {
>>        // something something
>>    }
>>
>> Given
>>    alias Tuple!(int, 1) A;
>>    alias Tuple!(int, 1) B;
>>
>> Is it possible to send this to template t as follows
>>    t!(A, B)
>> without it expanding to
>>    t!(int, 1, int, 1)
>> ?
>>
>> This is what I'm trying to achieve, but encapsulated in a 
>> template:
>>    alias Tuple!(int, "aoeu", short) A;
>>    alias Tuple!(int, "aoeu", short) B;
>>    foreach(i, T; A) {
>>        pragma(msg, i, " ", T);
>>        pragma(msg, isEqual!(T, B[i]));
>>    }
>
> I have trouble understanding the question. Perhaps you are 
> confusing Tuple and TypeTuple?

I'm not using phobos Tuple as it didn't work well with both types 
and values.
I want a Tuple!(int, 1, "aoeu") to have exactly these values; 
int, 1, "aoeu".

     alias Tuple!(int, 1) T; // Attempted to instantiate Tuple 
with an invalid argument: 1


More information about the Digitalmars-d-learn mailing list