Вступить в клуб →
сложнаявопросСовременный C++: move-семантика, шаблоны, лямбды

Ревьюер назвал emplace_back(new Widget) утечкой при нехватке памяти

std::vector<std::unique_ptr<Widget>> widgets;

void add(const Config& cfg) {
    widgets.emplace_back(new Widget(cfg));
}

Автор возражает: «unique_ptr сам удалит объект». Прав ли ревьюер?

  • Да: при исключении роста указатель ещё сырой
  • Нет: emplace_back сначала создаёт unique_ptr
  • Нет: new не бросает исключений в C++17
  • Да: emplace_back копирует unique_ptr

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела