Any way to expand a tuple?

Jonathan M Davis jmdavisProg at gmx.com
Sat Sep 24 15:36:29 PDT 2011


On Sunday, September 25, 2011 00:23:18 Andrej Mitrovic wrote:
> import std.typetuple;
> import std.typecons;
> 
> struct Foo
> {
>     void test(int x, double y) { }
> 
>     void opOpAssign(string op, T...)(T t)
>         if (op == "~")
>     {
>         test(t);
>     }
> }
> 
> void main()
> {
>     Foo foo;
>     foo.opOpAssign!"~"(4, 5.0);  // ok
>     foo ~= tuple(4, 5.0);  // fail
> }
> 
> If I understand this correctly in the first call T becomes a D
> language tuple, while in the second one it's a phobos library tuple. I
> really hate this distinction and would love these two to be merged so
> the second call could compile.

They're completely different. The problem isn't that they're not the same. The 
problem is that TypeTuple even has a similar name.

> Is it possible to expand the phobos tuple in the call to test()? I can
> use the isTuple template in a `static if` to figure out if it needs
> expansion, so all that's left is to actually expand the phobos tuple.

expand might work, but I haven't tried it, so I don't know exactly what it 
does. I question that it'll work, but it might.

- Jonathan m Davis


More information about the Digitalmars-d-learn mailing list