From 299c747b0cb6f4c6e90b07b70018f400e937a3b4 Mon Sep 17 00:00:00 2001 From: Aleksey Gurtovoy Date: Mon, 9 Dec 2002 08:08:30 +0000 Subject: [PATCH] ISO-friendly lambda [SVN r16572] --- include/boost/mpl/aux_/lambda_no_ctps.hpp | 2 +- include/boost/mpl/aux_/lambda_support.hpp | 49 +++++++++++++------ .../aux_/preprocessed/bcc/lambda_no_ctps.hpp | 20 ++++---- .../preprocessed/bcc551/lambda_no_ctps.hpp | 20 ++++---- .../aux_/preprocessed/gcc/lambda_no_ctps.hpp | 20 ++++---- .../preprocessed/msvc60/lambda_no_ctps.hpp | 20 ++++---- .../preprocessed/msvc70/lambda_no_ctps.hpp | 20 ++++---- .../aux_/preprocessed/mwcw/lambda_no_ctps.hpp | 20 ++++---- .../preprocessed/no_ctps/lambda_no_ctps.hpp | 20 ++++---- .../preprocessed/plain/lambda_no_ctps.hpp | 20 ++++---- include/boost/mpl/aux_/template_arity.hpp | 22 +-------- 11 files changed, 117 insertions(+), 116 deletions(-) diff --git a/include/boost/mpl/aux_/lambda_no_ctps.hpp b/include/boost/mpl/aux_/lambda_no_ctps.hpp index 489d936..d947fcb 100644 --- a/include/boost/mpl/aux_/lambda_no_ctps.hpp +++ b/include/boost/mpl/aux_/lambda_no_ctps.hpp @@ -102,7 +102,7 @@ struct lambda # define AUX_LAMBDA_INVOCATION(unused, i, T) \ , typename lambda< \ - typename f_::BOOST_PP_CAT(arg,BOOST_PP_INC(i)) \ + typename F::BOOST_PP_CAT(arg,BOOST_PP_INC(i)) \ , false \ >::type \ /**/ diff --git a/include/boost/mpl/aux_/lambda_support.hpp b/include/boost/mpl/aux_/lambda_support.hpp index 65c158a..c95cda2 100644 --- a/include/boost/mpl/aux_/lambda_support.hpp +++ b/include/boost/mpl/aux_/lambda_support.hpp @@ -21,6 +21,7 @@ #if !defined(BOOST_MPL_NO_FULL_LAMBDA_SUPPORT) +# define BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) /**/ # define BOOST_MPL_AUX_LAMBDA_SUPPORT(i,name,params) /**/ #else @@ -35,23 +36,41 @@ typedef_ param BOOST_PP_CAT(arg,BOOST_PP_INC(i)); \ /**/ -# define BOOST_MPL_AUX_LAMBDA_SUPPORT(i,name,params) \ - struct rebind \ +# define BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \ + BOOST_STATIC_CONSTANT(int, arity = i); \ + BOOST_PP_LIST_FOR_EACH_I_R( \ + 1 \ + , BOOST_MPL_AUX_LAMBDA_SUPPORT_ARG_TYPEDEF_FUNC \ + , typedef \ + , BOOST_PP_TUPLE_TO_LIST(i,params) \ + ) \ + friend class BOOST_PP_CAT(name,_rebind); \ + typedef BOOST_PP_CAT(name,_rebind) rebind; \ +/**/ + +#if !defined(__BORLANDC__) +# define BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \ + BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \ +}; \ +struct BOOST_PP_CAT(name,_rebind) \ +{ \ + template< BOOST_MPL_PP_PARAMS(i,typename U) > struct apply \ + : name< BOOST_MPL_PP_PARAMS(i,U) > \ { \ - BOOST_STATIC_CONSTANT(int, arity = i); \ - BOOST_PP_LIST_FOR_EACH_I_R( \ - 1 \ - , BOOST_MPL_AUX_LAMBDA_SUPPORT_ARG_TYPEDEF_FUNC \ - , typedef \ - , BOOST_PP_TUPLE_TO_LIST(i,params) \ - ) \ - \ - template< BOOST_MPL_PP_PARAMS(i,typename U) > struct apply \ - { \ - typedef typename name< BOOST_MPL_PP_PARAMS(i,U) >::type type; \ - }; \ }; \ - /**/ +/**/ +#else +# define BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \ + BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \ +}; \ +struct BOOST_PP_CAT(name,_rebind) \ +{ \ + template< BOOST_MPL_PP_PARAMS(i,typename U) > struct apply \ + { \ + typedef typename name< BOOST_MPL_PP_PARAMS(i,U) >::type type; \ + }; \ +/**/ +#endif #endif // BOOST_MPL_NO_FULL_LAMBDA_SUPPORT diff --git a/include/boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp b/include/boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp index 4b60cbc..b63e5f2 100644 --- a/include/boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp +++ b/include/boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp @@ -21,7 +21,7 @@ template<> struct lambda_impl<1, false> typedef typename F::rebind f_; typedef bind1< f_ - , typename lambda< typename f_::arg1, false >::type + , typename lambda< typename F::arg1, false >::type > type; }; }; @@ -33,7 +33,7 @@ template<> struct lambda_impl<1, true> typedef typename F::rebind f_; typedef protect< bind1< f_ - , typename lambda< typename f_::arg1, false >::type + , typename lambda< typename F::arg1, false >::type > > type; }; }; @@ -46,7 +46,7 @@ template<> struct lambda_impl<2, false> typedef bind2< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type > type; }; }; @@ -59,7 +59,7 @@ template<> struct lambda_impl<2, true> typedef protect< bind2< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type > > type; }; }; @@ -72,7 +72,7 @@ template<> struct lambda_impl<3, false> typedef bind3< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type > type; }; }; @@ -85,7 +85,7 @@ template<> struct lambda_impl<3, true> typedef protect< bind3< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type > > type; }; }; @@ -98,7 +98,7 @@ template<> struct lambda_impl<4, false> typedef bind4< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type > type; }; }; @@ -111,7 +111,7 @@ template<> struct lambda_impl<4, true> typedef protect< bind4< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type > > type; }; }; @@ -124,7 +124,7 @@ template<> struct lambda_impl<5, false> typedef bind5< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type, typename lambda< typename f_::arg5, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type > type; }; }; @@ -137,7 +137,7 @@ template<> struct lambda_impl<5, true> typedef protect< bind5< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type, typename lambda< typename f_::arg5, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type > > type; }; }; diff --git a/include/boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp b/include/boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp index 4b60cbc..b63e5f2 100644 --- a/include/boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp +++ b/include/boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp @@ -21,7 +21,7 @@ template<> struct lambda_impl<1, false> typedef typename F::rebind f_; typedef bind1< f_ - , typename lambda< typename f_::arg1, false >::type + , typename lambda< typename F::arg1, false >::type > type; }; }; @@ -33,7 +33,7 @@ template<> struct lambda_impl<1, true> typedef typename F::rebind f_; typedef protect< bind1< f_ - , typename lambda< typename f_::arg1, false >::type + , typename lambda< typename F::arg1, false >::type > > type; }; }; @@ -46,7 +46,7 @@ template<> struct lambda_impl<2, false> typedef bind2< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type > type; }; }; @@ -59,7 +59,7 @@ template<> struct lambda_impl<2, true> typedef protect< bind2< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type > > type; }; }; @@ -72,7 +72,7 @@ template<> struct lambda_impl<3, false> typedef bind3< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type > type; }; }; @@ -85,7 +85,7 @@ template<> struct lambda_impl<3, true> typedef protect< bind3< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type > > type; }; }; @@ -98,7 +98,7 @@ template<> struct lambda_impl<4, false> typedef bind4< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type > type; }; }; @@ -111,7 +111,7 @@ template<> struct lambda_impl<4, true> typedef protect< bind4< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type > > type; }; }; @@ -124,7 +124,7 @@ template<> struct lambda_impl<5, false> typedef bind5< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type, typename lambda< typename f_::arg5, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type > type; }; }; @@ -137,7 +137,7 @@ template<> struct lambda_impl<5, true> typedef protect< bind5< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type, typename lambda< typename f_::arg5, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type > > type; }; }; diff --git a/include/boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp b/include/boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp index 4b60cbc..b63e5f2 100644 --- a/include/boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp +++ b/include/boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp @@ -21,7 +21,7 @@ template<> struct lambda_impl<1, false> typedef typename F::rebind f_; typedef bind1< f_ - , typename lambda< typename f_::arg1, false >::type + , typename lambda< typename F::arg1, false >::type > type; }; }; @@ -33,7 +33,7 @@ template<> struct lambda_impl<1, true> typedef typename F::rebind f_; typedef protect< bind1< f_ - , typename lambda< typename f_::arg1, false >::type + , typename lambda< typename F::arg1, false >::type > > type; }; }; @@ -46,7 +46,7 @@ template<> struct lambda_impl<2, false> typedef bind2< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type > type; }; }; @@ -59,7 +59,7 @@ template<> struct lambda_impl<2, true> typedef protect< bind2< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type > > type; }; }; @@ -72,7 +72,7 @@ template<> struct lambda_impl<3, false> typedef bind3< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type > type; }; }; @@ -85,7 +85,7 @@ template<> struct lambda_impl<3, true> typedef protect< bind3< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type > > type; }; }; @@ -98,7 +98,7 @@ template<> struct lambda_impl<4, false> typedef bind4< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type > type; }; }; @@ -111,7 +111,7 @@ template<> struct lambda_impl<4, true> typedef protect< bind4< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type > > type; }; }; @@ -124,7 +124,7 @@ template<> struct lambda_impl<5, false> typedef bind5< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type, typename lambda< typename f_::arg5, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type > type; }; }; @@ -137,7 +137,7 @@ template<> struct lambda_impl<5, true> typedef protect< bind5< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type, typename lambda< typename f_::arg5, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type > > type; }; }; 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 929bbf5..b31e3ec 100644 --- a/include/boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp +++ b/include/boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp @@ -21,7 +21,7 @@ template<> struct lambda_impl<1, false> typedef typename F::rebind f_; typedef bind1< f_ - , typename lambda< typename f_::arg1, false >::type + , typename lambda< typename F::arg1, false >::type > type; }; }; @@ -33,7 +33,7 @@ template<> struct lambda_impl<1, true> typedef typename F::rebind f_; typedef protect< bind1< f_ - , typename lambda< typename f_::arg1, false >::type + , typename lambda< typename F::arg1, false >::type > > type; }; }; @@ -46,7 +46,7 @@ template<> struct lambda_impl<2, false> typedef bind2< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type > type; }; }; @@ -59,7 +59,7 @@ template<> struct lambda_impl<2, true> typedef protect< bind2< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type > > type; }; }; @@ -72,7 +72,7 @@ template<> struct lambda_impl<3, false> typedef bind3< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type > type; }; }; @@ -85,7 +85,7 @@ template<> struct lambda_impl<3, true> typedef protect< bind3< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type > > type; }; }; @@ -98,7 +98,7 @@ template<> struct lambda_impl<4, false> typedef bind4< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type > type; }; }; @@ -111,7 +111,7 @@ template<> struct lambda_impl<4, true> typedef protect< bind4< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type > > type; }; }; @@ -124,7 +124,7 @@ template<> struct lambda_impl<5, false> typedef bind5< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type, typename lambda< typename f_::arg5, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type > type; }; }; @@ -137,7 +137,7 @@ template<> struct lambda_impl<5, true> typedef protect< bind5< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type, typename lambda< typename f_::arg5, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type > > type; }; }; diff --git a/include/boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp b/include/boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp index 4b60cbc..b63e5f2 100644 --- a/include/boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp +++ b/include/boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp @@ -21,7 +21,7 @@ template<> struct lambda_impl<1, false> typedef typename F::rebind f_; typedef bind1< f_ - , typename lambda< typename f_::arg1, false >::type + , typename lambda< typename F::arg1, false >::type > type; }; }; @@ -33,7 +33,7 @@ template<> struct lambda_impl<1, true> typedef typename F::rebind f_; typedef protect< bind1< f_ - , typename lambda< typename f_::arg1, false >::type + , typename lambda< typename F::arg1, false >::type > > type; }; }; @@ -46,7 +46,7 @@ template<> struct lambda_impl<2, false> typedef bind2< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type > type; }; }; @@ -59,7 +59,7 @@ template<> struct lambda_impl<2, true> typedef protect< bind2< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type > > type; }; }; @@ -72,7 +72,7 @@ template<> struct lambda_impl<3, false> typedef bind3< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type > type; }; }; @@ -85,7 +85,7 @@ template<> struct lambda_impl<3, true> typedef protect< bind3< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type > > type; }; }; @@ -98,7 +98,7 @@ template<> struct lambda_impl<4, false> typedef bind4< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type > type; }; }; @@ -111,7 +111,7 @@ template<> struct lambda_impl<4, true> typedef protect< bind4< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type > > type; }; }; @@ -124,7 +124,7 @@ template<> struct lambda_impl<5, false> typedef bind5< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type, typename lambda< typename f_::arg5, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type > type; }; }; @@ -137,7 +137,7 @@ template<> struct lambda_impl<5, true> typedef protect< bind5< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type, typename lambda< typename f_::arg5, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type > > type; }; }; diff --git a/include/boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp b/include/boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp index 4b60cbc..b63e5f2 100644 --- a/include/boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp +++ b/include/boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp @@ -21,7 +21,7 @@ template<> struct lambda_impl<1, false> typedef typename F::rebind f_; typedef bind1< f_ - , typename lambda< typename f_::arg1, false >::type + , typename lambda< typename F::arg1, false >::type > type; }; }; @@ -33,7 +33,7 @@ template<> struct lambda_impl<1, true> typedef typename F::rebind f_; typedef protect< bind1< f_ - , typename lambda< typename f_::arg1, false >::type + , typename lambda< typename F::arg1, false >::type > > type; }; }; @@ -46,7 +46,7 @@ template<> struct lambda_impl<2, false> typedef bind2< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type > type; }; }; @@ -59,7 +59,7 @@ template<> struct lambda_impl<2, true> typedef protect< bind2< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type > > type; }; }; @@ -72,7 +72,7 @@ template<> struct lambda_impl<3, false> typedef bind3< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type > type; }; }; @@ -85,7 +85,7 @@ template<> struct lambda_impl<3, true> typedef protect< bind3< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type > > type; }; }; @@ -98,7 +98,7 @@ template<> struct lambda_impl<4, false> typedef bind4< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type > type; }; }; @@ -111,7 +111,7 @@ template<> struct lambda_impl<4, true> typedef protect< bind4< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type > > type; }; }; @@ -124,7 +124,7 @@ template<> struct lambda_impl<5, false> typedef bind5< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type, typename lambda< typename f_::arg5, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type > type; }; }; @@ -137,7 +137,7 @@ template<> struct lambda_impl<5, true> typedef protect< bind5< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type, typename lambda< typename f_::arg5, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type > > type; }; }; diff --git a/include/boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp b/include/boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp index 4b60cbc..b63e5f2 100644 --- a/include/boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp +++ b/include/boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp @@ -21,7 +21,7 @@ template<> struct lambda_impl<1, false> typedef typename F::rebind f_; typedef bind1< f_ - , typename lambda< typename f_::arg1, false >::type + , typename lambda< typename F::arg1, false >::type > type; }; }; @@ -33,7 +33,7 @@ template<> struct lambda_impl<1, true> typedef typename F::rebind f_; typedef protect< bind1< f_ - , typename lambda< typename f_::arg1, false >::type + , typename lambda< typename F::arg1, false >::type > > type; }; }; @@ -46,7 +46,7 @@ template<> struct lambda_impl<2, false> typedef bind2< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type > type; }; }; @@ -59,7 +59,7 @@ template<> struct lambda_impl<2, true> typedef protect< bind2< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type > > type; }; }; @@ -72,7 +72,7 @@ template<> struct lambda_impl<3, false> typedef bind3< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type > type; }; }; @@ -85,7 +85,7 @@ template<> struct lambda_impl<3, true> typedef protect< bind3< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type > > type; }; }; @@ -98,7 +98,7 @@ template<> struct lambda_impl<4, false> typedef bind4< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type > type; }; }; @@ -111,7 +111,7 @@ template<> struct lambda_impl<4, true> typedef protect< bind4< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type > > type; }; }; @@ -124,7 +124,7 @@ template<> struct lambda_impl<5, false> typedef bind5< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type, typename lambda< typename f_::arg5, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type > type; }; }; @@ -137,7 +137,7 @@ template<> struct lambda_impl<5, true> typedef protect< bind5< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type, typename lambda< typename f_::arg5, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type > > type; }; }; diff --git a/include/boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp b/include/boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp index 4b60cbc..b63e5f2 100644 --- a/include/boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp +++ b/include/boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp @@ -21,7 +21,7 @@ template<> struct lambda_impl<1, false> typedef typename F::rebind f_; typedef bind1< f_ - , typename lambda< typename f_::arg1, false >::type + , typename lambda< typename F::arg1, false >::type > type; }; }; @@ -33,7 +33,7 @@ template<> struct lambda_impl<1, true> typedef typename F::rebind f_; typedef protect< bind1< f_ - , typename lambda< typename f_::arg1, false >::type + , typename lambda< typename F::arg1, false >::type > > type; }; }; @@ -46,7 +46,7 @@ template<> struct lambda_impl<2, false> typedef bind2< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type > type; }; }; @@ -59,7 +59,7 @@ template<> struct lambda_impl<2, true> typedef protect< bind2< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type > > type; }; }; @@ -72,7 +72,7 @@ template<> struct lambda_impl<3, false> typedef bind3< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type > type; }; }; @@ -85,7 +85,7 @@ template<> struct lambda_impl<3, true> typedef protect< bind3< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type > > type; }; }; @@ -98,7 +98,7 @@ template<> struct lambda_impl<4, false> typedef bind4< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type > type; }; }; @@ -111,7 +111,7 @@ template<> struct lambda_impl<4, true> typedef protect< bind4< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type > > type; }; }; @@ -124,7 +124,7 @@ template<> struct lambda_impl<5, false> typedef bind5< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type, typename lambda< typename f_::arg5, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type > type; }; }; @@ -137,7 +137,7 @@ template<> struct lambda_impl<5, true> typedef protect< bind5< f_ - ,typename lambda< typename f_::arg1, false >::type, typename lambda< typename f_::arg2, false >::type, typename lambda< typename f_::arg3, false >::type, typename lambda< typename f_::arg4, false >::type, typename lambda< typename f_::arg5, false >::type + ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type > > type; }; }; diff --git a/include/boost/mpl/aux_/template_arity.hpp b/include/boost/mpl/aux_/template_arity.hpp index d71a3d2..afa4a68 100644 --- a/include/boost/mpl/aux_/template_arity.hpp +++ b/include/boost/mpl/aux_/template_arity.hpp @@ -25,7 +25,7 @@ namespace boost { namespace mpl { namespace aux { -// gcc ICEs on |has_rebind| +// gcc ICE-s on 'has_rebind' #if !defined(__GNUC__) template< bool > @@ -37,32 +37,14 @@ struct template_arity_impl }; }; -#if defined(__BORLANDC__) && (__BORLANDC__ >= 0x561 && !defined(BOOST_STRICT_CONFIG)) -template< typename Rebind > -struct template_arity_value -{ - BOOST_STATIC_CONSTANT(int, value = Rebind::arity); -}; - -template<> -struct template_arity_impl -{ - template< typename F > struct result_ - : template_arity_value - { - }; -}; -#else template<> struct template_arity_impl { template< typename F > struct result_ { - typedef typename F::rebind f_; - BOOST_STATIC_CONSTANT(int, value = f_::arity); + BOOST_STATIC_CONSTANT(int, value = F::arity); }; }; -#endif template< typename F > struct template_arity