| 1234567891011121314151617181920212223242526272829303132 |
- #pragma once
- #include <iterator/join_iterator.hpp>
- #define FWD(x) std::forward<decltype(x)>(x)
- namespace stream::ranges {
- template <typename S> struct join_view {
- private:
- using iterator = ::iterator::joining_iterator<iter<S>>;
- private:
- S stream_;
- public:
- join_view(S && stream) : stream_(FWD(stream)) {}
- auto begin() const { return iterator(stream_); }
- auto end() const { return iterator(); }
- bool empty() const { return begin() == end(); }
- };
- }
- namespace stream::ranges::views {
- struct join {
- template <typename Stream> friend auto operator|(Stream && stream, join) {
- return join_view(FWD(stream));
- }
- };
- }
- #undef FWD
|