diff --git a/include/boost/mpl/apply.hpp b/include/boost/mpl/apply.hpp index dddaffc..304ad54 100644 --- a/include/boost/mpl/apply.hpp +++ b/include/boost/mpl/apply.hpp @@ -197,10 +197,12 @@ template< typename F, AUX_APPLY_N_PARAMS(i, typename T) > struct BOOST_PP_CAT(apply,i) - : BOOST_PP_CAT(aux::msvc_apply,i)::template result_< - AUX_APPLY_N_PARAMS(i, T) - > { + // Metafunction forwarding confuses vc6 + typedef typename BOOST_PP_CAT(aux::msvc_apply,i)::template result_< + AUX_APPLY_N_PARAMS(i, T) + >::type type; + BOOST_MPL_AUX_LAMBDA_SUPPORT( BOOST_PP_INC(i) , BOOST_PP_CAT(apply,i) diff --git a/include/boost/mpl/aux_/lambda_no_ctps.hpp b/include/boost/mpl/aux_/lambda_no_ctps.hpp index 50826c6..fafed73 100644 --- a/include/boost/mpl/aux_/lambda_no_ctps.hpp +++ b/include/boost/mpl/aux_/lambda_no_ctps.hpp @@ -82,15 +82,16 @@ template< , bool Protect = true > struct lambda - : aux::lambda_impl< +{ + // Metafunction forwarding confuses vc6 + typedef typename aux::lambda_impl< ::boost::mpl::aux::template_arity::value #if !defined(BOOST_MSVC) || BOOST_MSVC > 1200 , Protect #else , bool_::value #endif - >::template result_ -{ + >::template result_::type type; }; # undef AUX_LAMBDA_PARAMS diff --git a/include/boost/mpl/aux_/preprocessed/msvc60/apply.hpp b/include/boost/mpl/aux_/preprocessed/msvc60/apply.hpp index fa422a8..58320d2 100644 --- a/include/boost/mpl/aux_/preprocessed/msvc60/apply.hpp +++ b/include/boost/mpl/aux_/preprocessed/msvc60/apply.hpp @@ -48,10 +48,11 @@ template< typename F, typename T1 > struct apply1 - : aux::msvc_apply1::template result_< - T1 - > { + typedef typename aux::msvc_apply1::template result_< + T1 + >::type type; + enum { arity = 2 }; typedef F arg1; typedef T1 arg2; friend class apply1_rebind; @@ -94,10 +95,11 @@ template< typename F, typename T1, typename T2 > struct apply2 - : aux::msvc_apply2::template result_< - T1, T2 - > { + typedef typename aux::msvc_apply2::template result_< + T1, T2 + >::type type; + enum { arity = 3 }; typedef F arg1; typedef T1 arg2; typedef T2 arg3; @@ -141,10 +143,10 @@ template< typename F, typename T1, typename T2, typename T3 > struct apply3 - : aux::msvc_apply3::template result_< - T1, T2, T3 - > { + typedef typename aux::msvc_apply3::template result_< + T1, T2, T3 + >::type type; enum { arity = 4 }; typedef F arg1; typedef T1 arg2; typedef T2 arg3; @@ -195,10 +197,10 @@ template< typename F, typename T1, typename T2, typename T3, typename T4 > struct apply4 - : aux::msvc_apply4::template result_< - T1, T2, T3, T4 - > { + typedef typename aux::msvc_apply4::template result_< + T1, T2, T3, T4 + >::type type; enum { arity = 5 }; typedef F arg1; typedef T1 arg2; typedef T2 arg3; @@ -253,10 +255,10 @@ template< , typename T5 > struct apply5 - : aux::msvc_apply5::template result_< - T1, T2, T3, T4, T5 - > { + typedef typename aux::msvc_apply5::template result_< + T1, T2, T3, T4, T5 + >::type type; enum { arity = 6 }; typedef F arg1; typedef T1 arg2; typedef T2 arg3; diff --git a/include/boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp b/include/boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp index 623faad..846bf99 100644 --- a/include/boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp +++ b/include/boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp @@ -188,13 +188,11 @@ template< , bool Protect = true > struct lambda - : aux::lambda_impl< - ::boost::mpl::aux::template_arity::value - - , bool_::value - - >::template result_< T,Tag > { + typedef aux::lambda_impl< + ::boost::mpl::aux::template_arity::value + , bool_::value + >::template result_< T,Tag >::type type; }; } // namespace mpl