indexing a tuple containing a struct strange result
Ali Çehreli
acehreli at yahoo.com
Sun Jun 23 22:07:07 PDT 2013
On 06/23/2013 09:40 PM, Anthony Goins wrote:
> On Monday, 24 June 2013 at 01:22:12 UTC, cal wrote:
>> Tuple!(S) foo() { return tuple(this); }
> 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 think the OP is asking about the difference from when foo() is a
non-member function:
import std.stdio, std.typecons;
struct S
{
int x;
}
Tuple!(S) foo(S s)
{
return tuple(s);
}
void main()
{
S s;
s.x = 8;
writeln((s.foo())); //output: Tuple!(S)(S(8))
writeln((s.foo())[0]); //output: S(8)
}
This time the output is S(8).
I think it is a compiler bug.
Ali
More information about the Digitalmars-d-learn
mailing list