On 28 July 2011 18:12, Nathan Ridge <zeratul976@hotmail.com> wrote:
On the other hand, I think that is the most common case:

- you don't want to allow copying, either because it doesn't make sense
  semantically, or because it's too inefficient
- you want to allow moving so that e.g. you can store the object in a
  container without having to add a layer of indirection such as unique_ptr
- the default move constructor does the correct thing (just like in
  most cases, the default copy constructor does the correct thing)

In most (if not all) of the above cases, the rules of C++0x will already do the right thing.  If I want to allow moving but not copying, all I have to do is declare a move constructor.  What exactly do I need the noise of an extra header and deriving from some boost::moveableonly class for?

It's more for the readers of my code to learn with no semantic benefit, and given that they have to learn the C++0x rules anyway, I probably would never use such a class.

boost::noncopyable bought us something in C++03.  I really don't see what boost::noncopyable or some boost::moveableonly class buys us in C++0x.
-- 
Nevin ":-)" Liber  <mailto:nevin@eviloverlord.com>  (847) 691-1404