Discussion: Rvalue refs and a Move construtor for D
turkeyman at gmail.com
Thu Sep 5 21:21:05 UTC 2019
On Thu, Sep 5, 2019 at 12:00 PM kinke via Digitalmars-d
<digitalmars-d at puremagic.com> wrote:
> On Thursday, 5 September 2019 at 18:46:59 UTC, Exil wrote:
> > There's still similar to the problem we have now. You're still
> > doing a memcpy() each time with S.init.
> Resetting the moved-from instance to T.init or something similar
> is what you'd do in the move ctor anyway (besides blitting the
> previous contents into the new instance and maybe doing some more
> adjustments), and definitely what the default implementation of
> the move ctor would do.
I agree the default might do that, but it's equally valid to do
nothing (if destruction has no side-effects), or do swap() if you want
to allow the naturally occurring destructor to tidy up, or various
If we want to allow these potentially efficient implementations, then
perhaps we should mark moved lvalues with a bit saying they have been
invalidated, and the compiler can complain about future references?
More information about the Digitalmars-d