[Issue 18426] Conversion from Tuple with named fields to Tuple without named fields should work during compilation

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon Feb 12 20:51:44 UTC 2018


https://issues.dlang.org/show_bug.cgi?id=18426

--- Comment #2 from Seb <greensunny12 at gmail.com> ---
And a stripped down version of std.typecons.Tuple:

https://gist.github.com/wilzbach/0a55a571f1c46e9d59420cf158354b85

> A better implementation would be to have the Tuple with named fields use the Tuple with no named fields as its only member variable; then, "alias this" needs to simply return a reference to that member.

This is already done:


struct Tuple
{
   Types expand; // e.g. AliasSeq!(int, int)
}


However, if `alias expand this` is used, this stops to work:

---
auto t1 = Tuple!(int, "x", string, "y")(1, "a");
void foo(Tuple!(int, string) t2) {}
foo(t1);
---

foo.d(149): Error: function foo.__unittest_L143_C7.foo(Tuple!(int, string) t2)
is not callable using argument types (Tuple!(int, "x", string, "y"))
foo.d(149):        cannot pass argument t1 of type Tuple!(int, "x", string,
"y") to parameter Tuple!(int, string) t2

--


More information about the Digitalmars-d-bugs mailing list