D's equivalent to C++'s std::move?
Ali Çehreli via Digitalmars-d
digitalmars-d at puremagic.com
Tue Feb 2 15:21:38 PST 2016
On 02/02/2016 03:09 PM, Ola Fosheim Grøstad wrote:
> On Tuesday, 2 February 2016 at 22:36:22 UTC, Ali Çehreli wrote:
>> This question has been brought up a lot lately. I've decided to look
>> at this more seriously yesterday.
>
> Nice to see that others are playing around with this, I don't have time
> to check your code, but one key issue with move semantics is exception
> safety.
>
> AFAICT D's "std.move" is insufficient, as it would null out the original
> pointer prematurely and when an exception is thrown the resource will
> disappear rather than simple remain "unmoved".
>
Exactly. I've saved my rear end by inserting a TODO comment just before
posting the code: :p
/* TODO: Be exception-safe; don't destroy before succesful
* construction. */
if (occupied) {
destroy_at(i);
}
emplace(place, args);
Ali
More information about the Digitalmars-d
mailing list