On Sat, Dec 17, 2011 at 01:23, Simen Kjærås <simen.kja...@gmail.com> wrote: > A few small tests later: > > import std.typetuple; > import std.typecons; > import std.stdio; > > void main() { > int a, b; > TypeTuple!(a, b) = tuple(4,5); > > assert(a == 4 && b == 5); > } > > In other words, the language already has this.
Wow. How does that work? I'd understand: TypeTuple!(a,b) = tuple(a,b).expand; // Or .tupleof, even. but not your example... Does that mean TypeTuple!() = does some destructuring? Let's do some test: struct Pair1 { TypeTuple!(int,int) value; } struct Pair2 { TypeTuple!(int,int) value; alias value this;} void main() { int a, b; a = 1; b = 2; // TypeTuple!(a, b) = Pair1(b, a+b); // boom! TypeTuple!(a, b) = Pair2(b, a+b); // works! writeln(a," ",b); } So it's a side effect of alias this and tuples...