std::vector<int> vi{ 1,2,3,4,5,6,7,8,9,10 };
using namespace ranges;

// we combine two views - remove_if and transform to produce a new composition
 auto evensToStrings = view::remove_if([](int i) {return i % 2 == 1; })
                     | view::transform([](int i) {return std::to_string(i); });

// than we applay the new compositon to the range, currently a vector
auto rng = vi | evensToStrings;

// the result will be all evens from the original range converted to strings
// rng == {"2","4","6","8","10"};

ranges::for_each(rng, [](auto i) {std::cout << i << " "; });

//or we can combine it directly to the same effect:
ranges::for_each(vi | view::remove_if([](int i) {return i % 2 == 1; })
                    | view::transform([](int i) {return std::to_string(i); }), 
                 [](auto i) {std::cout << i << " "; });