Почему в алгоритмах std::range отсутствуют параллельные перегрузки (принимающие параметр политики выполнения)?
Многие функции в библиотеке алгоритмов C++ имеют перегрузки, принимающие параметр типаExecutionPolicy
, например std::copy
. Однако я заметил, что соответствующие функции вstd::ranges
пространство имен не имеет этих параллельных перегрузок. Это прискорбно, потому что это означает, что во многих случаях варианты без ранжирования будут более полезными.
Что является причиной этого? И есть ли предложения добавить параллельные перегрузки вstd::ranges
пространство имен?
1 ответ
Исходя из многочисленных ответов Эрика Ниблера (и других авторов) (во время переговоров и в его комментариях на github), им (комитету и авторам) просто не хватило времени. Предложение уже было большим (обратите внимание на тот факт, что в нем много ссылок на<concepts>
предложения), а добавление еще чего-то порождает риск не отправить ничего из <ranges>
в C++20.
Параллельные перегрузки - не единственное, что упустило лодку. Различныйviews
отсутствуют (как из-за нехватки времени, так и из-за каких-то семантических проблем (глядя на вас,zip
)) есть ноль actions
и ничего из <numeric>
был расширен.
<ranges>
несомненно, будет развиваться дальше, но для доработки предложений требуется время. Мы не можем предсказать будущее, но я был бы серьезно удивлен, если бы<ranges>
не стал больше с C++23.