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

rkm*_*rkm 6 c++ boost smart-pointers unique-ptr c++11

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

我已经阅读了" intrusive_ptr在C++ 11中 " 的SO问题,其简短回答是"否".因此,如果有人有使用两者的经验,请分享您的意见和想法

How*_*ant 9

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

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

  • 我不相信你会看到任何性能差异. (2认同)