将 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
.
我在代码中使用 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
.