|
Boost : |
Subject: Re: [boost] [xint] Third release is ready, requesting preliminary review
From: DE (satan66613_at_[hidden])
Date: 2010-05-04 07:10:13
on 04.05.2010 at 14:25
Giovanni Piero Deretta wrote :
>> Chad Nelson:
>> [...]
>> In #1, the compiler can eliminate all copies, if f is written in a
>> RVO-friendly way. (It won't be able to in general if there's more than one
>> return statement, or the return value is a ternary ?: expression.)
>>
>> But in #2, there's going to be one allocation for the result of the unary
>> op-. Even if operator- takes its parameter by value and directly flips its
>> sign and returns it, I don't think that the compiler is allowed to allocate
>> the return value and the parameter at the same address.
> 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
-- Pavel P.S. if you notice a grammar mistake or weird phrasing in my message please point it out
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk