DIP54 : revamp of Phobos tuple types

Dicebot public at dicebot.lv
Mon Dec 23 06:00:20 PST 2013


On Monday, 23 December 2013 at 13:50:26 UTC, monarch_dodra wrote:
> Ok... Then that'll break existing code that doesn't even *use* 
> TypeTuple... Seems lose-lose to me :/

Yes, this DIP defines breaking transition that requires user 
action at some point. It is expected and approved by Andrei - we 
agreed that existing situation is even worse. But std.typetuple 
will remain as-is during deprecation process so there will be lot 
of time to do the change.

> In any case, let me re-write my question it as:
>
> staticIndexOf(int, 
> TemplateArgumentList!(TemplateArgumentList!(int, double), int));
>
> This time, its legal, right?

Yes. It is similar to indexOf(42, [ [ 42, 43 ], 42 ]) (forgetting 
about not being able to define such array type ;))

> What result does it create?

1

> Only the "outer" TAL gets auto-expanded, right?

Neither. But if you want to expand inner to create monotone list, 
you can do it explicitly:

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

// result is 0

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

Can you give an example? I suspect you may over-complicate things 
a bit :)

> 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.

It does not replace built-in one. This DIP does not touch 
language itself at all and it is stated several times. Only thing 
which gets replaced is std.typetuple in Phobos and documentation.


More information about the Digitalmars-d mailing list