Boost logo

Boost :

Subject: [boost] [move] unique_ptr: problems with move-assign constructor when used with base/derived classes in C++03
From: Adam Romanek (romanek.adam_at_[hidden])
Date: 2015-03-05 06:17:53


Hi,

There is a problem with move-assignment constructor in
boost::movelib::unique_ptr when used with a pair of base/derived classes
in C++98/03 mode [1] (uncomment the code to see the compiler error).

Is it a known issue? Or a limitation of the emulation?

I discovered the issue when I wanted to use boost::movelib::make_shared
in an answer to a question on StackOverflow [2], i.e.

return boost::movelib::make_shared<Derived>();

Where the return value is boost::movelib::unique_ptr<Base>, but
unfortunately because of this issue, in C++03 we need to use:

return unique_ptr<Base> x(new Derived());

I can create a ticket if that is desired.

Nevertheles, thanks for boost::movelib::unique_ptr anyway!

BTW, note how the appearance of boost::movelib::unique_ptr makes the
most voted answer on the question [3] invalid. This is where my answer
comes in.

Best regards,
Adam Romanek

[1] http://melpon.org/wandbox/permlink/8Rvk2g7LJ0Ey0BQL
[2] http://stackoverflow.com/a/28193068/1776942
[3] http://stackoverflow.com/q/2953530/1776942


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