我应该从使用boost :: shared_ptr切换到std :: shared_ptr吗?
|
我想用
-std=c++0x
在GCC中启用对C ++ 0x的支持。在GCC 4.5(以及不久的4.6)中,我并不一定需要任何当前受支持的C ++ 11功能,但是我想开始习惯它们。例如,在一些使用迭代器的地方,使用auto
类型会很有用。
但是,我不需要任何当前支持的功能。这里的目的是鼓励我将新标准的功能纳入我的编程“词汇表”中。
从对C ++ 11支持的了解来看,在GCC中启用它,然后例如通过将使用boost::shared_ptr
切换为std::shared_ptr
作为两者不混合的方式来拥抱它是一个好主意吗?
PS:我知道这个很好的问题,可以比较flavor4 good的不同风味,但我想在标准最终确定之前就该使用哪个更高层次的建议。换句话说,当像GCC这样的编译器说它支持“实验功能”时,是否表示我很可能在编译期间遇到奇怪的错误,而这将是主要的时间消耗,并且是StackOverflow上的一些神秘问题的来源?
编辑:我决定从ѭ3切换回去,因为我只是不信任它在GCC 4.5中的支持,如本问题中的示例所示。
没有找到相关结果
已邀请:
8 个回复
呢率篓舍烫
在数组类型上正确使用
,而
在这种情况下会导致未定义的行为(必须使用
或自定义删除器)(实际上,我已经纠正了。请参见-对此的专门化仅针对
,而不是
。) 一个明显的理由是: 您将只能使用C ++ 11编译器和标准库实现。 最后,您不必真正选择。 (而且,如果您要针对特定的编译器系列(例如MSVC和GCC),则可以轻松地将其扩展为使用
(如果可用)。不幸的是,似乎没有检测TR1支持的标准方法)
疾很毋悲
泻伴墓荒
,而不要使用boost。这基本上是因为所有使用
的新接口都将使用标准共享ptr。
需复
厦惫
担每棱绰
的另一个原因: 它支持
,即具有构造函数。
没有。
羔磺
。与数组结合使用时特别有用,可以避免零初始化的成本和单独分配的开销。 (FWIW,它也是对该标准的拟议补充。) Boost.Python特别利用了ѭ2对类型擦除的自定义删除器的支持,但对ѭ3却没有做同样的事情。
咳累录酬