Семейство функций std::ranges::find
возвращает итератор, тогда как семейство std::ranges::find_last
возвращает поддиапазон. Почему это?
Кажется, автор семейства функций find_last
изначально предложил их с сигнатурами, возвращающими итератор, но после некоторых обсуждений в Библиотечной рабочей группе (LWG) и Рабочей группе по развитию библиотек (LEWG) они изменили свое предложение, сделав его асимметричным.
Аргументация, включенная в предложение, заключается в том, что find_last
необходимо вычислить конец диапазона, поэтому отказ от его возврата каким-либо образом не будет соответствовать «принципу сохранения полезной информации» LWG.
Дополнительную информацию см. в документе P1223. Переход от итераторов к поддиапазонам сделан в версии 3 (P1223R3). Обоснование объясняется в разделе 0.3.
Дубликат stackoverflow.com/questions/78360895/… (спросил 3 часа назад)