// Copyright 2018-2019 Hans Dembinski // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt // or copy at http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_HISTOGRAM_TEST_STD_OSTREAM_HPP #define BOOST_HISTOGRAM_TEST_STD_OSTREAM_HPP #include #include #include #include namespace std { // never add to std, we only do it here to get ADL working :( template ostream& operator<<(ostream& os, const vector& v) { os << "[ "; for (const auto& x : v) os << x << " "; os << "]"; return os; } template ostream& operator<<(ostream& os, const std::tuple& t) { os << "[ "; ::boost::mp11::tuple_for_each(t, [&os](const auto& x) { os << x << " "; }); os << "]"; return os; } template ostream& operator<<(ostream& os, const std::pair& t) { os << "[ " << t.first << " " << t.second << " ]"; return os; } } // namespace std #endif