我在代码中使用了boost::scoped_ptr
,我想用std::unique_ptr
替换它。我想知道搬到std::unique_ptr
是否有任何缺点。Boost 可以跨平台和编译器移植。但我不确定 C++11 是否被所有编译器(如 MSVC)支持。我知道GCC和Clang非常支持C++11。
我已经阅读了SO问题">intrusive_ptr
in 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
。