indexing a tuple containing a struct strange result

Anthony Goins neontotem at gmail.com
Sun Jun 23 21:40:46 PDT 2013


On Monday, 24 June 2013 at 01:22:12 UTC, cal wrote:
> 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)
> }

import std.stdio, std.typecons;

struct S
{
     int x;
     int y;
     int z;

     auto foo() { return tuple(this.tupleof); }
}

void main()
{
     S s;
     s.x = 8;
     s.y = 9;
     s.z = 10;
     writeln((s.foo()));     //output: Tuple!(int, int, int)(8, 9, 
10)

     writeln(s.foo()[2]);  //output: 10
}

Is this what you expected?
I would explain what's going on but I'd be wrong.


More information about the Digitalmars-d-learn mailing list