Emplace iterators

Nate Reinar Windwood
Nate Reinar Windwood
std::emplacer() -> std::emplace_iterator
std::back_emplacer() -> std::back_emplace_iterator
std::front_emplacer() -> std::front_emplace_iterator

Пример реализации: back_emplacer.

1
рейтинг
2 комментария
Antervis

emplace_iterator кажется не самой практичной идеей. Он не сможет удобно покрыть случай, когда T конструируется из нескольких аргументов, а если T конструируется из одного, то и copy/move итераторы подойдут, не так ли?

Antervis
Nate Reinar Windwood

Antervis, а если из одного аргумента другого типа? Он гарантированно вызовет конструктор (при наличии), а не вывалится на компиляции?

Ну и, как минимум, бывают explicit конструкторы.

Если заполняешь контейнер каким-нибудь transform, совершенно не улыбается лишний раз оборачивать функцию в лямбду с явным вызовом конструктора. К тому же, это дублирование информации о типе. Контейнер и сам знает, что в нем хранится.

Nate Reinar Windwood
Обновлено 
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения