#ifndef MAPBOX_UTIL_VARIANT_IO_HPP #define MAPBOX_UTIL_VARIANT_IO_HPP #include #include namespace mapbox { namespace util { namespace detail { // operator<< helper template class printer { public: explicit printer(Out& out) : out_(out) {} printer& operator=(printer const&) = delete; // visitor template void operator()(T const& operand) const { out_ << operand; } private: Out& out_; }; } // operator<< template VARIANT_INLINE std::basic_ostream& operator<<(std::basic_ostream& out, variant const& rhs) { detail::printer> visitor(out); apply_visitor(visitor, rhs); return out; } } // namespace util } // namespace mapbox #endif // MAPBOX_UTIL_VARIANT_IO_HPP