boost :: make_shared现在已经过时了吗?

时间:2009-11-11 02:51:10

标签: c++ boost

现在boost::make_shared已过时吗?尚未在1.35中找到它的定义。

3 个答案:

答案 0 :(得分:27)

std::make_shared也可以在C ++ 11中使用。请注意make_shared不仅仅是一个便利功能。看一下下面的代码片段:

make_shared<foobar>(1, 2);
shared_ptr<foobar>(new foobar(1, 2));

两个语句都创建一个foobar对象并构造一个shared_ptr。但是,前者避免了共享计数器的内存分配,因为单个内存块将用于计数器和foobar对象。对于第二个语句,这是不可能的,因为foobar的内存是在构造shared_ptr之前分配的。

我想说的是:不,make_shared不会过时,因为它提供了非常有用的优化。

答案 1 :(得分:12)

它在1.4文档中:http://www.boost.org/doc/libs/1_40_0/libs/smart_ptr/make_shared.html

它似乎已在1.39版本中添加

答案 2 :(得分:2)

今天进行了一些研究,似乎make_shared实际上已添加到1.36.0(在1.35.0中没有这样的标题),但有趣的是,在这里有什么新内容没有提及改变 - 至少我找不到它