|
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