Subject: Re: [boost] noncopyable && C++11
From: Nathan Ridge (zeratul976_at_[hidden])
Date: 2012-07-06 13:21:52


> Hmm, I see this was discussed before:
> http://listarchives.boost.org/boost-users/2011/07/69621.php
>
> Which I failed to find first time I searched.
>
> There is still the case where I want to prevent copying (but allow
> moving), and boost::noncopyable was what I used before move semantics.
>
> I guess we could have:
>
> class moveonly
> {
> protected:
> moveonly() = default;
> moveonly(moveonly&&) = default;
> moveonly& operator=(moveonly&&) = default;
> // implicit
> // moveonly(moveonly const&) = delete;
> // moveonly& operator=(moveonly const&) = delete;
> };
>
> So that there is an expressive and concise form of "I want this to have
> default move semantics without being copyable".

I believe the conclusion of that thread was to simply declare a defaulted
move constructor in your derived class. Its presence will inhibit the
generation of a copy constructor (on conformant compilers) and so your
class will be moveable but not copyable.

Regards,
Nate