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