
on 04.05.2010 at 15:30 Stewart, Robert wrote :
DE wrote:
Giovanni Piero Deretta wrote :
No, but swap is your friend:
X operator- (X x) { modify-in-place x;
X ret; // this should be cheap ret.swap(x); return ret; // NRVO should kick in }
i don't think it is a good idea to write such curious code in chase of a _possibility_ (there are no guarantees) of rvo
That's perfectly reasonable code. Consider <http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/>.
i've read the article (rather boring one) i don't understand how is that different to X operator- (const X &x) { X ret(x); //modify 'ret' return ret; } what about idiomatic return X().swap(x); //x is modified -- Pavel P.S. if you notice a grammar mistake or weird phrasing in my message please point it out