Boost logo

Boost Users :

Subject: Re: [Boost-users] move/copy parameter advice
From: OvermindDL1 (overminddl1_at_[hidden])
Date: 2010-05-12 03:47:43


On Tue, May 11, 2010 at 12:48 PM, John Dlugosz
<JDlugosz_at_[hidden]> wrote:
>> If you want or need a primer on the subject, please look at the
>> working draft for C++1x.  This linked site has also been shown to be
>> quite useful in describing move usefulness:
>>
>>   Want Speed? Pass by Value.:
>> http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/
>>
>>   Move It With Rvalue References:
>> http://cpp-next.com/archive/2009/09/move-it-with-rvalue-references/
>>
>
> This article suggests passing by value and letting the compiler make (or omit) the copy.  It also has specific advice on return value behavior: return a local variable, but not a formal parameter (even if you have to swap them).
>
> But, I recall reading that Boost has conditional code with a lengthy explanation about what optimizes for one compiler is bad for another, and vice versa, and concerned passing const ref (or not).  Is this specific advice more up-to-date with current compilers, or "just his"?

I am pretty sure that is rather up-to-date with GCC/VS (even slightly
older versions), unsure about others. Boost.Move is more general
though, used for construction of objects, moving values (excellent for
sorting as the articles demonstrate) and others. RVO and Move'ing
combined provides for quite a few efficiencies, and for compilers that
do not support RVO, more liberal use of Boost.Move could emulate it
rather well.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net