А что такое Iterable? Должен ли у него быть default конструктор? Какие требования к сложности операций над ним? Если всё это расписать, то получится десяток концептов и пяток улучшений... Сделав которые получим Ranges
Может ещё вопрос был в том, а нельзя это было без дополнительного неймспейса сделать?
То для чего begin(x), end(x) даёт InputIterator наверное с учётом ADL.
берем std::map...
Ну так и что, никто ж не мешает сделать find(m.begin(), m.end(), x);
я бы предпочел чтобы find(m, key) резолвился в m.find(key), а не в find(m.begin(), m.end(), key)
Вообще Ranges делают STL наконец концептуально правильной вещью, все эти долбаные итераторы наконец уходят в прошлое. Так что что тебе не нравится, не понятно.
Ну эт уже внутри можно при желании разрулить через if constexpr (has_find)
Ну, например сложность ошибок компилятора при использовании Ranges. Антот тут буквально на днях скидывал простейший пример, в котором чёрт голову сломит. Неочевидная работа "адаптеров". Полная невозможность понять где именно в цепочке вычислений что-то пошло не так. Ленивость ренджей. Это их же и плюс, но может приводить просто к катастрофическим усложениям при поиске прочины очередного SEGFAULT Долгая компиляция :) Ну и моё персональное - std::iota. Это самое тупое название в истории))
Подтянется это всё...
Йота — это из математики
Я фиг знает, это концептуальные проблемы, не вижу путей их решения)
Я в курсе. А еще я в курсе, что я не математик и куча других С++ программистов - не математики :) И в других языках это называется.... Range!! Но только в Ranges это будет называть не Range :D
скорее из дедов
>сложность ошибок компилятора >концептуальная проблема что?
А вообще например для find это же просто перегрузки по числу аргументов. Достаточно type requirements придумать типа LegacyInputIterable. С ExecutionPolicy через traits разруливается. Просто в отличие от ranges это кажется простая штука, которая могла бы попасть в стандарт вместе с std::begin/end (как например to_underlying мог бы не ждать 23 года :) ).
Вы всегда можете написать proposal на подобное ;)
Беру свои слова обратно. Конечно find частный случай, в том же sort пришлось бы различать (begin, end) и (Iterable, compare). Ну и ranges всё-таки обобщение в том числе на гетерогенные итераторы.
Обсуждают сегодня