On Monday, 23 December 2013 at 13:31:36 UTC, Dicebot wrote:
On Monday, 23 December 2013 at 13:23:39 UTC, monarch_dodra
eg:
staticIndexOf(int, TemplateArgumentList!(int, double), int);

Produces 1? 2? 3?
I really don't know.

Compile-time error, new `staticIndexOf` will strictly accept 2 template arguments - element and the list, similar to normal `indexOf`:

template staticIndexOf(T...)
    if ((T.length == 2) && isTemplateArgumentList!(T[1]))

Ok... Then that'll break existing code that doesn't even *use* TypeTuple... Seems lose-lose to me :/

In any case, let me re-write my question it as:

staticIndexOf(int, TemplateArgumentList!(TemplateArgumentList!(int, double), int));

This time, its legal, right? What result does it create? Only the "outer" TAL gets auto-expanded, right? Expanding the inner one would seem wrong to me.

With that said, I can only image that the implementation of templates that simply recurse would become very hard to imlement.

I see value in having a packed type with explicit auto-expand, but I don't really see why it should replace the language's built-in variadic type list.

Reply via email to