From b306ab25aa7d648485d57a59d38dd534b7250511 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Wed, 24 May 2017 03:47:24 +0300 Subject: [PATCH] Do not use auto on g++ 4.7 in mp_plus --- include/boost/mp11/detail/mp_plus.hpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/include/boost/mp11/detail/mp_plus.hpp b/include/boost/mp11/detail/mp_plus.hpp index 57cf3cc..1028fa5 100644 --- a/include/boost/mp11/detail/mp_plus.hpp +++ b/include/boost/mp11/detail/mp_plus.hpp @@ -9,6 +9,7 @@ // http://www.boost.org/LICENSE_1_0.txt #include +#include #include namespace boost @@ -37,6 +38,24 @@ template<> struct mp_plus_impl<> using type = std::integral_constant; }; +#if BOOST_WORKAROUND( BOOST_GCC, < 40800 ) + +template struct mp_plus_impl +{ + static const decltype(T1::value + mp_plus_impl::type::value) _v = T1::value + mp_plus_impl::type::value; + using type = std::integral_constant::type, _v>; +}; + +template struct mp_plus_impl +{ + static const + decltype(T1::value + T2::value + T3::value + T4::value + T5::value + T6::value + T7::value + T8::value + T9::value + T10::value + mp_plus_impl::type::value) + _v = T1::value + T2::value + T3::value + T4::value + T5::value + T6::value + T7::value + T8::value + T9::value + T10::value + mp_plus_impl::type::value; + using type = std::integral_constant::type, _v>; +}; + +#else + template struct mp_plus_impl { static const auto _v = T1::value + mp_plus_impl::type::value; @@ -51,6 +70,8 @@ template using mp_plus = typename detail::mp_plus_impl::type;