diff --git a/include/boost/mpl/eval_if.hpp b/include/boost/mpl/eval_if.hpp index 4b07d9a..cf97d6d 100755 --- a/include/boost/mpl/eval_if.hpp +++ b/include/boost/mpl/eval_if.hpp @@ -18,6 +18,7 @@ #include #include #include +#include #include namespace boost { namespace mpl { @@ -28,13 +29,16 @@ template< , typename BOOST_MPL_AUX_NA_PARAM(F2) > struct eval_if -#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - : if_::type -{ -#else +#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \ + || ( BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, >= 0x0300) \ + && BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304)) \ + ) { typedef typename if_::type f_; typedef typename f_::type type; +#else + : if_::type +{ #endif BOOST_MPL_AUX_LAMBDA_SUPPORT(3,eval_if,(C,F1,F2)) }; @@ -47,13 +51,16 @@ template< , typename F2 > struct eval_if_c -#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - : if_c::type -{ -#else +#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \ + || ( BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, >= 0x0300) \ + && BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304)) \ + ) { typedef typename if_c::type f_; typedef typename f_::type type; +#else + : if_c::type +{ #endif };