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

Code review требует убрать std::move из return

std::vector<Row> loadRows(Db& db) {
    std::vector<Row> rows;
    rows.reserve(db.count());
    db.fetchInto(rows);
    return std::move(rows);   // «чтобы не копировать»
}

Clang выдаёт предупреждение -Wpessimizing-move. Почему std::move здесь вреден?

  • Он мешает компилятору применить NRVO
  • После std::move вектор возвращается пустым
  • std::move в return вызывает копирование
  • Возвращать перемещением можно только из шаблонов

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

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

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

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