From 7cf404d096b02cf54d1816b2b3c83bf02b44ccd8 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Fri, 13 Nov 2015 21:49:27 +0900 Subject: [PATCH] SFINAE expression obstructs compile on MSVC 8. --- .../boost/fusion/algorithm/iteration/detail/fold.hpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/include/boost/fusion/algorithm/iteration/detail/fold.hpp b/include/boost/fusion/algorithm/iteration/detail/fold.hpp index c8095ae9..947c409d 100644 --- a/include/boost/fusion/algorithm/iteration/detail/fold.hpp +++ b/include/boost/fusion/algorithm/iteration/detail/fold.hpp @@ -42,6 +42,12 @@ # define BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(IT) fusion::deref(IT) #endif +#if BOOST_WORKAROUND(BOOST_MSVC, < 1500) +# define BOOST_FUSION_FOLD_IMPL_ENABLER(T) void +#else +# define BOOST_FUSION_FOLD_IMPL_ENABLER(T) typename T::type +#endif + namespace boost { namespace fusion { namespace detail @@ -57,7 +63,7 @@ namespace boost { namespace fusion template struct BOOST_PP_CAT(result_of_it_,BOOST_FUSION_FOLD_NAME)<0,It,State,F - , typename boost::enable_if_has_type::type + , typename boost::enable_if_has_type::type #if BOOST_WORKAROUND(BOOST_MSVC, < 1500) , true #endif @@ -75,7 +81,7 @@ namespace boost { namespace fusion // workaround won't work with MSVC 9. typename boost::disable_if_c::type::type #else - typename State::type + BOOST_FUSION_FOLD_IMPL_ENABLER(State) #endif >::type #if BOOST_WORKAROUND(BOOST_MSVC, < 1500) @@ -236,6 +242,7 @@ namespace boost { namespace fusion }} #undef BOOST_FUSION_FOLD_NAME +#undef BOOST_FUSION_FOLD_IMPL_ENABLER #undef BOOST_FUSION_FOLD_IMPL_FIRST_IT_FUNCTION #undef BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION #undef BOOST_FUSION_FOLD_IMPL_FIRST_IT_META_TRANSFORM