What is going on here?
import std.stdio, std.typecons;
struct S
{
int x;
Tuple!(S) foo() { return tuple(this); }
}
void main()
{
S s;
s.x = 8;
writeln((s.foo())); //output: Tuple!(S)(S(8))
writeln((s.foo())[0]); //output: S(0)
}