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

时间:2015-05-09 18:11:47

标签: c++ c++11 boost smart-pointers unique-ptr

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

我已经阅读了问题“intrusive_ptr in C++11”,其简短回答为“否”。因此,如果有人有使用两者的经验,请分享您的意见和想法

1 个答案:

答案 0 :(得分:9)

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

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