Почему std::advance не возвращает инкрементированный итератор, а инкрементирует его по ссылке на него?
Неудобно же блин, кучу телодвижений надо делать. Использую не слишком часто, поэтому ещё не привык и каждый раз плююсь.
Ну ладно, окей, может быть какие-то итераторы не копируются, или их копирование тяжёлое, а по ссылке всегда сработает оптимально. Но можно же было например сделать либо std::advance, который возвращает инкрементированное значение, и std::advance_inplace — обновляет по ссылке. Или — std::advance — работает по ссылке, а std::advance_copy — возвращает инкрементированную копию.
А я уж сам бы решил, inplace мне инкрементировать, или получать инкрементированную копию?
И да, немножко диссонанс с парной функцией std::distance, которая возвращает новое значение. Так-то понятно, что std::distance никак не может работать по ссылке, но могли бы std::advance сделать с аналогичной семантикой