52

可能重复:
make_unique 和完美转发

为什么C++11有make_shared模板,却没有make_unique模板?

这使得代码非常不一致。

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

1 回答 1

62

根据 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)... ) );
}

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

于 2012-09-25T09:52:40.673 回答