Recursive template
Eric via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Nov 15 11:24:02 PST 2014
Thanks!
-Eric
On Saturday, 15 November 2014 at 18:49:32 UTC, anonymous wrote:
> On Saturday, 15 November 2014 at 18:30:00 UTC, Eric wrote:
>> Hi -
>>
>> I've never designed a recursive template before, but I think
>> that would solve my problem. What I would like is
>> someting like this:
>>
>> class X(V, K...)
>> {
>> // I want to declare a type based on K and V such
>> // that for X!(V, int, string, double) the resulting
>> // declaration would be:
>> SomeType!(int, SomeType!(string, SomeType!(double, V))) var;
>>
>> // or put another way:
>> SomeType!(K[0], SomeType!(K[1], SomeType(K[2], V))) var;
>> }
>>
>> Can anyone give me some ideas on how to set up the declaration?
>>
>> Thanks,
>>
>> Eric
>
> It's pretty straight forward:
>
> struct SomeType(K, V) {}
>
> template X(V, K...)
> {
> static if(K.length == 1)
> alias X = SomeType!(K[0], V);
> else static if(K.length > 1)
> alias X = SomeType!(K[0], X!(V, K[1 .. $]));
> else static assert(false);
> }
More information about the Digitalmars-d-learn
mailing list