Lite_stream
@Lite_stream

Почему в с++11 появилась 1 перегрузка push_back и метод emplace_back, ведь можно было использовать универсальную ссылку?

Почему в с++ просто не заменили сигнатуру push_back с vector::push_back(const T&) на template vector::push_back(Args&& ...) (ну и просто применять forward внутри этого пуш бэка), а вместо этого добавили перегрузку vector::push_back( T&&) и метод emplace_back ?

Не могу понять где замена сигнатуры push_back'а на vector::push_back(Args&& ...) ломает обратную совместимость
  • Вопрос задан
  • 199 просмотров
Решения вопроса 1
kray74
@kray74
emplace_back не помещает переданный объект в вектор, а создаёт новый объект сразу внутри вектора. В качестве аргументов emplace_back принимает параметры конструктора создаваемого объекта.

Перечитал еше раз вопрос и понял, что я не на то отвечаю.
По поводу двух версий push_back Howard Hinnant (член комитета по стандартизации C++) ответил, что проще было добавить новую функцию, чем изменять существующую.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы