// // ranges.h // iterator // // Created by Sam Jaffe on 4/1/23. // Copyright © 2023 Sam Jaffe. All rights reserved. // #pragma once #include namespace ranges { using namespace std::ranges; template auto for_each(It it, S end, F consumer) { for (; it != end; ++it) { std::invoke(consumer, *it); } return std::make_pair(it, consumer); } template auto distance(It it, S end) { typename std::iterator_traits::difference_type diff{0}; for_each(it, end, [&diff](auto const &) { ++diff; }); return diff; } } namespace iterator::views { } namespace views { using namespace std::views; using namespace iterator::views; }