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&& ...) ломает обратную совместимость
  • Вопрос задан
  • 219 просмотров
Решения вопроса 1
kray74
@kray74
emplace_back не помещает переданный объект в вектор, а создаёт новый объект сразу внутри вектора. В качестве аргументов emplace_back принимает параметры конструктора создаваемого объекта.

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

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

Похожие вопросы
CTRL+ Москва
от 250 000 до 320 000 ₽
CTRL+ Москва
от 200 000 до 300 000 ₽
CTRL+ Белград
от 250 000 до 320 000 ₽
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект