5 Algorithms from `std.typetuple` are re-written to accept
non-expanding template argument lists and form base for
`std.meta.` package.
Why? This seems to me like it would create duplication for
nothing. These templates would do the expanding themselves?
Unless I'm mistaken, the `TemplateArgumentList`represents a
packaged and convenient to use type. You only unpack it when you
actually pass around the types.
If anything, this would create ambiguity. If the algorithms from
typetuple accept a TemplateArgumentList, and expand it
themselves, then we'd be creating ambiguity:
eg:
staticIndexOf(int, TemplateArgumentList!(int, double), int);
Produces 1? 2? 3?
I really don't know.
I think TemplateArgumentList should be handled as what it is: a
*type*, and not unpackaged by clients receiving the type, but by
providers of the type.