June 21, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6187

           Summary: compiler could use move semantics for appending
                    temporaries to an array
           Product: D
           Version: D2
          Platform: Other
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody@puremagic.com
        ReportedBy: schveiguy@yahoo.com


--- Comment #0 from Steven Schveighoffer <schveiguy@yahoo.com> 2011-06-21 04:52:58 PDT ---
Currently, the following code:

import std.stdio;

struct S
{
   int x;
   this(this) { writeln("postblit"); }
   ~this() { writeln("dtor"); }
}

void main()
{
   S[] arr;
   arr ~= S();
}

outputs:

postblit
dtor

But it could have move semantics.  However, the runtime function which appends data does not know whether the given data to append is an rvalue or not.  For example, the following cannot have move semantics:

S s;
s.x = 1;
arr ~= s;
writeln(s.x);

So the compiler must give an additional flag (or call a separate runtime function) when appending an rvalue.  When the compiler does this, flip the bug to a druntime bug and assign it to me, and I'll fix the runtime.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
June 21, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6187


Steven Schveighoffer <schveiguy@yahoo.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |enhancement


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