[Issue 14466] New: destructive move

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Sun Apr 19 16:31:37 PDT 2015


https://issues.dlang.org/show_bug.cgi?id=14466

          Issue ID: 14466
           Summary: destructive move
           Product: D
           Version: unspecified
          Hardware: All
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: DMD
          Assignee: nobody at puremagic.com
          Reporter: code at dawg.eu

Currently the moved from object has to be reinitialized in order to avoid
double freeing in it's destructor.
Both operations reinitialization and destroying the moved from object are
superfluous, if we had a mean to tell the compiler not to destroy a particular
object.
https://github.com/D-Programming-Language/phobos/blob/41d1162619039e8e535060b920ff54cc2c44ebbb/std/algorithm/mutation.d#L1015

A destructive move intrinsic would turn an object into an rvalue, disable
destruction of the moved from object, and disallow any further usage of the
moved from object.
The object must be unaliased to make destructive move @safe.
Destructively moving anything but named variables (such as fields or single
array elements) would be prohibited as it adds compiler complexity or runtime
overhead.

--


More information about the Digitalmars-d-bugs mailing list