将 boost::scoped_ptr 更改为 std::unique_ptr

Changing boost::scoped_ptr to std::unique_ptr

我在代码中使用 boost::scoped_ptr,我想将其替换为 std::unique_ptr。我想知道迁移到 std::unique_ptr 是否有任何缺点。 Boost 可跨平台和编译器移植。但我不确定是否所有编译器(如 MSVC)都支持 C++11。我知道 GCC 和 Clang 很好地支持 C++11。

我已经阅读了 SO 问题“intrusive_ptr in C++11”,其简短的回答是“否”。所以如果有人有使用这两者的经验,请分享您的评论和想法

Mgetz 慷慨地提供了所有最近的 VS 实现所提供的信息 unique_ptr

我建议您将 boost::scoped_ptr<T> 替换为 const std::unique_ptr<T>const 的原因是这个模型最接近 boost::scoped_ptr<T> 而不是 "movable." 但是我相信 boost::scoped_ptr<T> 确实支持交换。因此,如果您使用它,编译器会在您尝试交换 const std::unique_ptr<T> 的任何地方抱怨,然后您可以将这些实例标记为非 const.