| 1234567891011121314151617181920212223242526272829303132333435363738 |
- //
- // to.h
- // stream
- //
- // Created by Sam Jaffe on 3/29/23.
- //
- #pragma once
- #include <map>
- #include <set>
- #include <vector>
- namespace stream::ranges {
- template <typename C> class store {
- private:
- C & to_;
- public:
- store(C & to) : to_(to) {}
- template <typename Stream>
- friend void operator|(Stream && stream, store && store) {
- store.to_.emplace(store.to_.end(), stream.begin(), stream.end());
- }
- };
- template <template <typename...> class C> struct to_range {
- template <typename Stream> friend auto operator|(Stream && stream, to_range) {
- return C(stream.begin(), stream.end());
- }
- };
- template <template <typename...> class C> auto to() { return to_range<C>(); }
- auto to_vector() { return to<std::vector>(); }
- auto to_map() { return to<std::map>(); }
- auto to_set() { return to<std::set>(); }
- }
|