Информация об изменениях

Сообщение Re[5]: std::views::filter и const от 01.12.2020 12:57

Изменено 01.12.2020 13:01 so5team

Re[5]: std::views::filter и const
Здравствуйте, Chorkov, Вы писали:

C>Как ни странно, take — работает: https://wandbox.org/permlink/Y74CJT4bN1PFMRRF,

C>а filter — нет: https://wandbox.org/permlink/aI2gSYhTIwn36BiX

В реализации take_view видны две версии end(): одна для случая сложного вложенного view, вторая для случая простого view
https://github.com/gcc-mirror/gcc/blob/d66db7412ee8e16e08b340767f4c00a3b570e730/libstdc%2B%2B-v3/include/std/ranges#L1763-L1789
Когда задействуется filter_view, то выбирается неконстантный end, т.к. filter_view, видимо, к простым view не относится.
Re[5]: std::views::filter и const
Здравствуйте, Chorkov, Вы писали:

C>Как ни странно, take — работает: https://wandbox.org/permlink/Y74CJT4bN1PFMRRF,

C>а filter — нет: https://wandbox.org/permlink/aI2gSYhTIwn36BiX

В реализации take_view видны две версии end(): одна для случая сложного вложенного view, вторая для случая простого view
https://github.com/gcc-mirror/gcc/blob/d66db7412ee8e16e08b340767f4c00a3b570e730/libstdc%2B%2B-v3/include/std/ranges#L1763-L1789
Когда задействуется filter_view, то выбирается неконстантный end, т.к. filter_view, видимо, к простым view не относится.

Я удивлен тому, что для простого, но неограниченного в размере, view выбирается константный end. Там же вроде как тоже надо считать количество извлеченных элементов.