#include #include #include #include #include #include #include #include #include "throw_exception.hpp" namespace boost { namespace histogram { namespace detail { template std::ostream& operator<<(std::ostream& os, const sub_array&) { return os; } std::ostream& operator<<(std::ostream& os, const reduce_command&) { return os; } } // namespace detail } // namespace histogram } // namespace boost using namespace boost::histogram::detail; int main() { using boost::span; { sub_array a = {1, 2}; BOOST_TEST_EQ(a.size(), 2); BOOST_TEST_EQ(a.max_size(), 3); BOOST_TEST_EQ(a.at(0), 1); BOOST_TEST_EQ(a.at(1), 2); sub_array b = {1, 2}; BOOST_TEST_EQ(a, b); sub_array c = {1, 2, 3}; BOOST_TEST_NE(a, c); sub_array d = {2, 2}; BOOST_TEST_NE(a, d); auto sp = span(a); BOOST_TEST_EQ(sp.size(), 2); BOOST_TEST_EQ(sp.front(), 1); BOOST_TEST_EQ(sp.back(), 2); const auto& ca = a; auto csp = span(ca); BOOST_TEST_EQ(csp.size(), 2); BOOST_TEST_EQ(csp.front(), 1); BOOST_TEST_EQ(csp.back(), 2); } { sub_array a(2, 1); sub_array b(1, 2); std::swap(a, b); BOOST_TEST_EQ(a.size(), 1); BOOST_TEST_EQ(b.size(), 2); BOOST_TEST_EQ(a[0], 2); BOOST_TEST_EQ(b[0], 1); BOOST_TEST_EQ(b[1], 1); } { const std::initializer_list a = {1, 2}; auto sp = span(a); BOOST_TEST_EQ(sp.size(), 2); } { const sub_array a(2); auto sp = span(a); BOOST_TEST_EQ(sp.size(), 2); } { const std::initializer_list a = {reduce_command{}}; auto sp = span(a); BOOST_TEST_EQ(sp.size(), 1); } return boost::report_errors(); }