// // for_each.h // stream // // Created by Sam Jaffe on 3/29/23. // #pragma once #define FWD(x) std::forward(x) namespace stream::ranges { template void for_each(S && stream, F func) { for (auto && elem : FWD(stream)) { func(FWD(elem)); } } } namespace stream::ranges::views { template class for_each { private: F operation_; public: for_each(F operation) : operation_(operation) {} template friend void operator|(Stream && stream, for_each const & each) { ranges::for_each(FWD(stream), each.operation_); } }; } #undef FWD