将 boost::scoped_ptr 更改为标准::unique_ptr

Changing boost::scoped_ptr to std::unique_ptr

本文关键字:ptr 标准 unique boost scoped      更新时间:2023-10-16

我在代码中使用了boost::scoped_ptr,我想用std::unique_ptr替换它。我想知道搬到std::unique_ptr是否有任何缺点。Boost 可以跨平台和编译器移植。但我不确定 C++11 是否被所有编译器(如 MSVC)支持。我知道GCC和Clang非常支持C++11。

我已经阅读了SO问题">intrusive_ptrin C++11",其简短回答为"否"。因此,如果有人有使用两者的经验,请分享您的评论和想法

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

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