Recursive template

Chris Nicholson-Sauls via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Nov 15 18:54:45 PST 2014


Slightly simpler:


struct SomeType(K, V) {}

alias X(V)       = V;
alias X(V, K...) = SomeType!(K[0], X!(V, K[1 .. $]));




That's a recurring pattern to get used to: aliasing away to one 
of the parameters in a terminal and/or degenerate case.  Also: 
that an empty tuple matches no parameter "more exactly" than a 
tuple parameter.  I know that's not at all obvious, but it's what 
I've found to be the case; so when K[1 ..$] above ends up as the 
empty tuple (that is, when all K have been exhausted), the 
template for X(V) will be the "more exact match."


More information about the Digitalmars-d-learn mailing list