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"? --John TradeStation Group, Inc. is a publicly-traded holding company (NASDAQ GS: TRAD) of three operating subsidiaries, TradeStation Securities, Inc. (Member NYSE, FINRA, SIPC and NFA), TradeStation Technologies, Inc., a trading software and subscription company, and TradeStation Europe Limited, a United Kingdom, FSA-authorized introducing brokerage firm. None of these companies provides trading or investment advice, recommendations or endorsements of any kind. The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from any computer.