
----- Original Message ----- From: "Mathias Gaunard" <mathias.gaunard@ens-lyon.org> To: <boost@lists.boost.org> Sent: Saturday, December 06, 2008 11:00 PM Subject: Re: [boost] Composing non copyable and movable classes
vicente.botet wrote:
The question is how to make X movable efficiently. The first way is to move each one of the movable objects one by one. This could be expensive if the number of members is high. In addition X can have also member that are not movable.
The second approach is to use the same technique, store a pointer to the data on a shared_pointer, and move on one operation all the members via the pointer.
Why shared_ptr? There is no sharing of ownership required. Just use std::unique_ptr.
Right, std::unique_ptr is enough.
I think that this separation is in line with the C++ principle "you don't pay for what you don't use". Any thoughts?
You're just stating the advantages and disadvantages between storing the data in the object itself and storing it in a separate object that is referenced.
It's simply a tradeoff between {locality, compactness, allocation speed} and moving speed.
If both classes were available, will you use the class Ci in contexts where nonmovable_Ci is more performant? Vicente