现在boost::make_shared
已过时吗?尚未在1.35中找到它的定义。
答案 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中没有这样的标题),但有趣的是,在这里有什么新内容没有提及改变 - 至少我找不到它