Boost logo

Boost :

Subject: Re: [boost] Movable but not copyable bug?
From: Peter Dimov (lists_at_[hidden])
Date: 2014-08-25 19:18:28


Mostafa wrote:
> Then why is it that in C++03 with g++ 4.8.2 the code sample compiles if
> the copy ctor for Bar is not explicitly defined?

C++03 12.8/5:

The implicitly-declared copy constructor for a class X will have the form
X::X(const X&)
if
— each direct or virtual base class B of X has a copy constructor whose
first parameter is of type const
B& or const volatile B&, and
— for all the nonstatic data members of X that are of a class type M (or
array thereof), each such class type
has a copy constructor whose first parameter is of type const M& or const
volatile M&.107)
Otherwise, the implicitly declared copy constructor will have the form
X::X(X&)

My guess is that Boost.Move declares Foo's copy constructor to take Foo&.
This causes Bar's implicit copy constructor to take Bar&, which doesn't
match rvalues.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk