可能的重复:
make_unique 完美转发 https://stackoverflow.com/questions/7038357/make-unique-and-perfect-forwarding
为什么C++11有一个make_shared
模板,但不是make_unique
模板?
这使得代码非常不一致。
auto x = make_shared<string>("abc");
auto y = unique_ptr<string>(new string("abc"));
根据赫伯·萨特 (Herb Sutter) 的说法本文 http://herbsutter.com/gotw/_102/这“部分是一种疏忽”。这篇文章包含一个很好的实现,并为使用它提供了强有力的案例:
template<typename T, typename ...Args>
std::unique_ptr<T> make_unique( Args&& ...args )
{
return std::unique_ptr<T>( new T( std::forward<Args>(args)... ) );
}
Update: 原来的更新已经升级 http://herbsutter.com/2013/05/29/gotw-89-solution-smart-pointers/并且重点已经改变。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)