// Copyright 2018 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_UTILITY_HISTOGRAM_HPP #define BOOST_HISTOGRAM_TEST_UTILITY_HISTOGRAM_HPP #include #include #include #include #include #include namespace boost { namespace histogram { template auto make_axis_vector(Ts&&... ts) { using T = axis::variant...>; return std::vector({T(std::forward(ts))...}); } using static_tag = std::false_type; using dynamic_tag = std::true_type; template auto make(static_tag, Axes&&... axes) { return make_histogram(std::forward(axes)...); } template auto make_s(static_tag, S&& s, Axes&&... axes) { return make_histogram_with(s, std::forward(axes)...); } template auto make(dynamic_tag, Axes&&... axes) { return make_histogram(make_axis_vector(std::forward(axes)...)); } template auto make_s(dynamic_tag, S&& s, Axes&&... axes) { return make_histogram_with(s, make_axis_vector(std::forward(axes)...)); } } // namespace histogram } // namespace boost #endif