
11 Sep
2008
11 Sep
'08
9:06 a.m.
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. -Thorsten