为什么C ++ 11有`make_shared`而不是`make_unique`

可能重复:
make_unique和完美的转发

为什么C ++ 11有一个make_shared模板,但不是make_unique模板?

这使得代码非常不一致。

 auto x = make_shared<string>("abc"); auto y = unique_ptr<string>(new string("abc")); 

根据这篇文章中的赫伯特·萨特(Herb Sutter), 这 “部分是疏忽”。 文章包含一个很好的实现,并为使用它提供了一个强有力的例子:

 template<typename T, typename ...Args> std::unique_ptr<T> make_unique( Args&& ...args ) { return std::unique_ptr<T>( new T( std::forward<Args>(args)... ) ); } 

更新 :原始更新已更新 ,重点已更改。