www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 10168] New: Named tuple: inconsistent behavior

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=10168

           Summary: Named tuple: inconsistent behavior
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Phobos
        AssignedTo: nobody puremagic.com
        ReportedBy: r.97all gmail.com



---
The code at the bottom outputs
 S(314159265)
 S(0)
in DMD 2.062, http://dpaste.1azy.net/96d42b70 but
 S(0)
 S(314159265)
in another version, http://dpaste.1azy.net/edc065ea I think right output is S(314159265) repeated 2 times. ----- import std.stdio; import std.typecons : Tuple; struct S { int x; Tuple!(S, "x") toTuple() { return Tuple!(S, "x")(this); } } void main() { auto y = S(314159265).toTuple(); y[0].writeln(); y.x.writeln(); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 25 2013
parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=10168


bearophile_hugs eml.cc changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bearophile_hugs eml.cc



Also this similar program gives an unusual error message:


import std.stdio: writeln;
import std.typecons: Tuple;
struct Foo {
    int x;
    Tuple!(Foo, "x") toTuple() {
        return Tuple!(Foo, "x")(this);
    }
}
void main() {
    auto y = Foo(100).toTuple;
    y[1].writeln; // line 11
    y.x.writeln;
}


temp.d(11): Error: no [] operator overload for type Tuple!(Foo, "x")

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 26 2013