
on Wed Jun 24 2009, klaus triendl <klaus-AT-triendl.eu> wrote:
Sorry for not catching this yet because I can't find time to fully understand your approach and do some portability tests. Just to make things a bit easier when I have some time, what do you mean with "make copyable types *implicitly* movable"? Can you give me a concrete example of what's possible with your approach that was not possible before?
Ok, I'm working on my ability to explain :)
Simply put: <code> clone_ptr<int> return_rvalue() { return clone_ptr<int>(new int(1)); }
clone_ptr<int> p; // Boost.Move ---> temporary gets copied // my approach ---> temporary gets moved p = return_rvalue(); </code>
In both cases the temporary should get RVO'd (i.e. the copy should be elided) on all modern compilers. If you can find a modern compiler where Boost.Move does not RVO, then its design needs to be fixed. -- Dave Abrahams BoostPro Computing http://www.boostpro.com