On 29/08/2018 01:09, Andrey Semashev wrote:
For example, if I'm currently using Boost.Move or boost::shared_ptr, does this mean I have to port my code to native rvalue references and std::shared_ptr?
AFAIK, migrating from Boost.Move to native references is largely invisible to external C++11 consumers, so as a maintainer you could decide to leave the existing code (for reduced churn) or replace it (for code simplicity), mostly at your own whim or even piecemeal. (Having said that, Boost.Move does provide some code-readability improvements for people not trained to recognise non-move vs. move-only vs. move+copy based on constructor existence -- assuming you don't mind macros.) (Of course, it's a breaking change for C++03 consumers, but presumably you wouldn't care about them any more at that point.) Migrating from boost::shared_ptr to std::shared_ptr is a different story; while the types are similar they are not identical (Boost has more features). Where only used in private members it's an ABI break, but probably an insignificant one. Where used in public members it is a significant change that would require user code to change as well. Which isn't to say that you shouldn't do it -- particularly if you don't need the extra features of boost::shared_ptr -- but it may require more thought and/or caution. (You make this same point later yourself in regard to Boost.Atomic.)