Closed apolukhin closed 3 years ago
yndx-antoshkka, 10 сентября 2018, 11:26 Боюсь что это уже не изменить.
Ссылку возвращают по той причине, что после push_back хочется сразу работать со вставленным значением (без лишнего шага - разадресации итератора). К тому же, не очень понятно, какиё именно итератор выхотит получить - const? reverse?.... Если данное поведение не устривает, то всегда есть возможность получать итераторы старыми способами через end()/begin()
riad, 10 сентября 2018, 22:58
Ссылку возвращают по той причине, что после push_back хочется сразу работать со вставленным значением
Кажется, что в обычном юзкейсе просто заменится . на ->
К тому же, не очень понятно, какиё именно итератор выхотит получить
Почему-то у insert таких вопросов не возникало
Боюсь что это уже не изменить.
Жаль, но это похоже на правду
Перенос предложения: голоса +0, -1 Автор идеи: riad
emplace_back и push_back должны возвращать iterator т.к это строго больше информации, чем reference
Сегодня столкнулся с кейсом, где было бы удобно получить итератор на только что emplae_back'нутый элемент, но эта функция, начиная с c++17 возвращает reference.
Кажется, что итератор возвращать логичнее: во-первых, это консистентно с emplace()/insert(), во вторых из него можно получить reference, но не наоброт.
Собственно, тут есть два вопроса:
1) А есть ли понимание почему сделано так как сделано (никто не предложил возвращать итератор или это поему-то плохо)?
2) Есть ли какой-нибудь шанс изменить возвращаемый тип, не ломая совместимость хотя бы в простых кейсах?