Вы неправильно понимаете, что такое view::for_each()
, оно полностью отличается от std::for_each
.
Функтор в view::for_each()
должен возвращать другой диапазон, тогда окончательный эффект состоит в том, что все диапазоны сглаживаются до большого диапазона.
Например:
auto res = coll | view::for_each([](auto n){ return yield_from(view::ints(0, n)); });
Возвращаемый диапазон для каждого элемента: {0}
, {0, 1}
, {0, 1, 2}
соответственно. res
будет плоским: {0, 0, 1, 0, 1, 2}
Аналог std::for_each
равен ranges::for_each
:
ranges::for_each(coll, [] (auto) {})