From a768587c7da45ad6b24d2599088b42be11056150 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Wed, 31 May 2017 07:22:31 +0300 Subject: [PATCH] g++6 doesn't like mp_any either --- include/boost/mp11/function.hpp | 2 +- test/mp_any.cpp | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/include/boost/mp11/function.hpp b/include/boost/mp11/function.hpp index 7c99b4a..6def486 100644 --- a/include/boost/mp11/function.hpp +++ b/include/boost/mp11/function.hpp @@ -132,7 +132,7 @@ template struct mp_or_impl } // namespace detail // mp_any -#if defined( BOOST_MP11_HAS_FOLD_EXPRESSIONS ) +#if defined( BOOST_MP11_HAS_FOLD_EXPRESSIONS ) && !BOOST_WORKAROUND( BOOST_GCC, < 70000 ) template using mp_any = mp_bool<(static_cast(T::value) || ...)>; diff --git a/test/mp_any.cpp b/test/mp_any.cpp index 53f5574..6239bb2 100644 --- a/test/mp_any.cpp +++ b/test/mp_any.cpp @@ -13,8 +13,14 @@ #include using boost::mp11::mp_any; +using boost::mp11::mp_all; -template using check = mp_any..., mp_any...>>; +template using check1 = mp_any..., mp_any...>>; +template using check2 = mp_any...>, std::is_nothrow_move_constructible...>; +template using check3 = mp_any...>, std::is_nothrow_default_constructible...>; + +template struct variant_base_impl {}; +template using variant_base = variant_base_impl...>::value, mp_any...>, std::is_nothrow_default_constructible...>::value, T...>; int main() { @@ -61,7 +67,11 @@ int main() BOOST_TEST_TRAIT_TRUE((std::is_same, mp_int<0>, mp_false, mp_size_t<141>>, mp_true>)); BOOST_TEST_TRAIT_TRUE((std::is_same, mp_int<0>, mp_false>, mp_false>)); - BOOST_TEST_TRAIT_TRUE((std::is_same, mp_true>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_true>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_true>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, mp_true>)); + + variant_base(); return boost::report_errors(); }