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: nob...@puremagic.com ReportedBy: schvei...@yahoo.com --- Comment #0 from Steven Schveighoffer <schvei...@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: -------