2014-04-14 10:16 GMT+04:00 Adam Romanek
On 04/13/2014 02:59 PM, Steven Watanabe wrote:
Boost.Move is not completely backwards compatible. i.e. adding it to an existing class can break user code.
Steven, could you please elaborate on this? I mean how can it break existing code? And what about backward compatibility? I haven't found anything on it in the documentation. Thanks in advance.
Main restriction that affect portability is described here: http://www.boost.org/doc/libs/1_55_0/doc/html/move/emulation_limitations.html#move.emulation_limitations.assignment_operator("Assignment operator in classes derived from or holding copyable and movable types") It is a big problem. For example this limitation broke compilation of Boost.ProgramOptions after move emulation was added to Boost.Any: http://boost.2283326.n4.nabble.com/any-last-commit-breaks-program-options-td... Because of that restriction Boost.Variant, Boost.Any and Boost.CircularBuffer do not use Boost.Move emulation everywhere. For those libraries some of the move functions are available only in C++11 mode. -- Best regards, Antony Polukhin