Здравствуйте, 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. Там же вроде как тоже надо считать количество извлеченных элементов.