Boost logo

Boost :

Subject: Re: [boost] Improving the assignment operators of various Boosttypes
From: Giovanni Piero Deretta (gpderetta_at_[hidden])
Date: 2008-09-11 06:46:17

On Thu, Sep 11, 2008 at 11:06 AM, Thorsten Ottosen
<thorsten.ottosen_at_[hidden]> wrote:
> Gevorg Voskanyan skrev:
>> Giovanni Piero Deretta wrote:
>>> If you do not want to deal with move emulation (which I've found very
>>> brittle in complex expressions), a simple way to to gain the advantage
>>> of T::operator=(T rhs) even when assigning from lvalues is something
>>> like:
>>> templateT destructive_copy(T& x) {
>>> using std::swap;
>>> T result;
>>> swap(result, x);
>>> return x;
>>> }
>>> which relies on NRVO to eliminate expensive copies:
> I think the best way (= most RVOs) to write the assignment operator is to
> take the T argument by value.

Uh? I do not understand how your statement relates to the code above.
The point of destructive_copy is to move out of lvalues (by
'converting' them to rvalues), not optimizing out copies of rvalues.


Boost list run by bdawes at, gregod at, cpdaniel at, john at