#ifndef RTG_GUARD_STREAMUTILS_HPP #define RTG_GUARD_STREAMUTILS_HPP #include #include namespace rtg { template struct stream_range_container { const T* r; stream_range_container(const T& x) : r(&x) {} friend std::ostream& operator<<(std::ostream& os, const stream_range_container& sr) { assert(sr.r != nullptr); if(!sr.r->empty()) { os << sr.r->front(); std::for_each(std::next(sr.r->begin()), sr.r->end(), [&](auto&& x) { os << ", " << x; }); } return os; } }; template inline stream_range_container stream_range(const Range& r) { return {r}; } } // namespace rtg #endif