From f0d7ebf6bc3ea5dacb0447bc1a1c5da33c0690ff Mon Sep 17 00:00:00 2001 From: Hans Dembinski Date: Mon, 8 Oct 2018 07:39:13 +0200 Subject: [PATCH] fixed --- CMakeLists.txt | 1 + include/boost/histogram/detail/axes.hpp | 4 ++++ ...ram_dynamic_fill_one_dimensional_tuple_fail.cpp | 2 +- ...am_dynamic_fill_one_dimensional_vector_fail.cpp | 2 +- ...gram_static_fill_one_dimensional_tuple_fail.cpp | 14 ++++++++++++++ 5 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 test/histogram_static_fill_one_dimensional_tuple_fail.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 4eda2be8..a061894e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -102,6 +102,7 @@ compiled_test(test/histogram_dynamic_at_tuple_wrong_dimension_fail.cpp) compiled_test(test/histogram_dynamic_at_vector_wrong_dimension_fail.cpp) compiled_test(test/histogram_dynamic_at_wrong_dimension_fail.cpp) compiled_test(test/histogram_dynamic_reduce_wrong_order_fail.cpp) +# test fail to compile (test/histogram_static_fill_one_dimensional_tuple_fail.cpp) compiled_test(test/histogram_static_add_fail.cpp) compiled_test(test/histogram_static_at_vector_wrong_dimension_fail.cpp) compiled_test(test/histogram_dynamic_test.cpp) diff --git a/include/boost/histogram/detail/axes.hpp b/include/boost/histogram/detail/axes.hpp index 71e4850f..0d94f7f1 100644 --- a/include/boost/histogram/detail/axes.hpp +++ b/include/boost/histogram/detail/axes.hpp @@ -564,6 +564,8 @@ optional_index call_impl(no_container_tag, const std::vector& axes, template optional_index call_impl(static_container_tag, const std::vector& axes, const U& u) { + if (axes.size() == 1) // do not unpack for 1d histograms, it is ambiguous + return call_impl(no_container_tag(), axes, u); dimension_check(axes, mp_size()); optional_index i; args_to_index_get(mp_size(), i, axes, u); @@ -573,6 +575,8 @@ optional_index call_impl(static_container_tag, const std::vector& axes, template optional_index call_impl(dynamic_container_tag, const std::vector& axes, const U& u) { + if (axes.size() == 1) // do not unpack for 1d histograms, it is ambiguous + return call_impl(no_container_tag(), axes, u); dimension_check(axes, std::distance(std::begin(u), std::end(u))); optional_index i; args_to_index_iter(i, axes, std::begin(u)); diff --git a/test/histogram_dynamic_fill_one_dimensional_tuple_fail.cpp b/test/histogram_dynamic_fill_one_dimensional_tuple_fail.cpp index 9ca22f44..177529f3 100644 --- a/test/histogram_dynamic_fill_one_dimensional_tuple_fail.cpp +++ b/test/histogram_dynamic_fill_one_dimensional_tuple_fail.cpp @@ -10,5 +10,5 @@ using namespace boost::histogram; int main() { auto a = make_dynamic_histogram(axis::integer<>(0, 2)); - a(std::make_tuple(1)); + a(std::make_tuple(1)); // fails, because tuple is intentionally not unpacked } diff --git a/test/histogram_dynamic_fill_one_dimensional_vector_fail.cpp b/test/histogram_dynamic_fill_one_dimensional_vector_fail.cpp index 9baeeba2..bb49e7ef 100644 --- a/test/histogram_dynamic_fill_one_dimensional_vector_fail.cpp +++ b/test/histogram_dynamic_fill_one_dimensional_vector_fail.cpp @@ -10,5 +10,5 @@ using namespace boost::histogram; int main() { auto a = make_dynamic_histogram(axis::integer<>(0, 2)); - a(std::vector(1)); + a(std::vector(1)); // fails, because tuple is intentionally not unpacked } diff --git a/test/histogram_static_fill_one_dimensional_tuple_fail.cpp b/test/histogram_static_fill_one_dimensional_tuple_fail.cpp new file mode 100644 index 00000000..cbde43de --- /dev/null +++ b/test/histogram_static_fill_one_dimensional_tuple_fail.cpp @@ -0,0 +1,14 @@ +// 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) + +#include +#include + +using namespace boost::histogram; +int main() { + auto a = make_static_histogram(axis::integer<>(0, 2)); + a(std::make_tuple(1)); // fails, because tuple is intentionally not unpacked +}