Подтвердить что ты не робот

Почему С++ 11 имеет `make_shared`, но не` make_unique`

Возможный дубликат:
make_unique и совершенная переадресация

Почему С++ 11 имеет шаблон make_shared, но не шаблон make_unique?

Это делает код очень непоследовательным.

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

Ответ 1

Согласно 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)... ) );
}

Обновление: обновлено исходное обновление , и акцент был изменен.