我在代码中使用boost::scoped_ptr
,我想用std::unique_ptr
替换。我想知道搬到std::unique_ptr
是否有任何不利之处。 Boost可跨平台和编译器移植。但我不确定C ++ 11是否支持所有编译器,如MSVC。我知道GCC和Clang非常支持C ++ 11。
我已经阅读了问题“intrusive_ptr
in C++11”,其简短回答为“否”。因此,如果有人有使用两者的经验,请分享您的意见和想法
答案 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
。