将 boost::scoped_ptr 更改为标准::unique_ptr
Changing boost::scoped_ptr to std::unique_ptr
我在代码中使用了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
。
相关文章:
- 使用CMake检测支持的C++标准
- 如何理解C++标准N3337中的expr.const.cast子句8
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- 编译标准库类型
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- CLANG 编译器 说:变量"PTR"可能未初始化
- 编译器如何在使用SFINAE的函数和标准函数之间确定两者是否可行
- 铸造标准::有没有回到原来的类型
- 在以唯一ptr为值的C++映射中,动态内存何时会被销毁
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- this_thread::sleep_for和计时时钟之间的关系是否由C++11标准指定
- 标准库类型的赋值运算符的引用限定符
- 标准是否严格定义了该程序应该如何编译?
- 如何从Windows应用程序输出到标准?
- 安全到标准:移动会员?
- 如何正确将字符串转换为标准::时间::system_clock::time_point?
- 这是否符合C++标准:双响双响,例如!!(-0.0).
- 标准::变体的赋值运算符
- 捕获标准输出以压缩并使用 CTRL-C 中断会给出损坏的 zip 文件
- 将 ptr 传递给 ptr 到 A 作为参数传递给 A 的函数是不好的做法吗?