Почему make_unique() недопустимо, а make_shared() разрешено?C++

Программы на C++. Форум разработчиков
Anonymous
Почему make_unique() недопустимо, а make_shared() разрешено?

Сообщение Anonymous »

В предложении дляshared_ptr есть этот абзац:
https://www.open-std.org/JTC1/SC22/WG21/ docs/papers/2014/n3920.html

Неудачный случай, когда unique_ptr потерял поддержку U[N], вынуждает меня утверждать, что в случае с Shared_ptr, указанная поддержка по существу бесплатна, как с точки зрения сложности реализации, так и сложности спецификации. Пожалуйста, не удаляйте его. Вместо этого рассмотрите возможность восстановления unique_ptr.

Это просто случай, когда «никто с тех пор не предлагал восстановить unique_ptr', или есть какая-то техническая причина или причина обратной совместимости, по которой это невозможно сделать?
Я рассмотрел эти два существующих вопроса:
  • Почему `make_unique` запрещен?
  • Почему разрешен Shared_ptr?
Первый вопрос был написан заранее

Код: Выделить всё

shared_ptr
, а второй учитывает, почему был добавлен общий_ptr, а не почему он не был добавлен в unique_ptr.

Подробнее здесь: https://stackoverflow.com/questions/785 ... n-is-legal

Вернуться в «C++»