ISO-friendly lambda

[SVN r16572]
This commit is contained in:
Aleksey Gurtovoy
2002-12-09 08:08:30 +00:00
parent 5617d060fa
commit 299c747b0c
11 changed files with 117 additions and 116 deletions

View File

@@ -102,7 +102,7 @@ struct lambda
# define AUX_LAMBDA_INVOCATION(unused, i, T) \ # define AUX_LAMBDA_INVOCATION(unused, i, T) \
, typename lambda< \ , typename lambda< \
typename f_::BOOST_PP_CAT(arg,BOOST_PP_INC(i)) \ typename F::BOOST_PP_CAT(arg,BOOST_PP_INC(i)) \
, false \ , false \
>::type \ >::type \
/**/ /**/

View File

@@ -21,6 +21,7 @@
#if !defined(BOOST_MPL_NO_FULL_LAMBDA_SUPPORT) #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) /**/ # define BOOST_MPL_AUX_LAMBDA_SUPPORT(i,name,params) /**/
#else #else
@@ -35,23 +36,41 @@
typedef_ param BOOST_PP_CAT(arg,BOOST_PP_INC(i)); \ typedef_ param BOOST_PP_CAT(arg,BOOST_PP_INC(i)); \
/**/ /**/
# define BOOST_MPL_AUX_LAMBDA_SUPPORT(i,name,params) \ # define BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
struct rebind \ 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 #endif // BOOST_MPL_NO_FULL_LAMBDA_SUPPORT

View File

@@ -21,7 +21,7 @@ template<> struct lambda_impl<1, false>
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef bind1< typedef bind1<
f_ f_
, typename lambda< typename f_::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> type; > type;
}; };
}; };
@@ -33,7 +33,7 @@ template<> struct lambda_impl<1, true>
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind1< typedef protect< bind1<
f_ f_
, typename lambda< typename f_::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> > type; > > type;
}; };
}; };
@@ -46,7 +46,7 @@ template<> struct lambda_impl<2, false>
typedef bind2< typedef bind2<
f_ 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; > type;
}; };
}; };
@@ -59,7 +59,7 @@ template<> struct lambda_impl<2, true>
typedef protect< bind2< typedef protect< bind2<
f_ 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; > > type;
}; };
}; };
@@ -72,7 +72,7 @@ template<> struct lambda_impl<3, false>
typedef bind3< typedef bind3<
f_ 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; > type;
}; };
}; };
@@ -85,7 +85,7 @@ template<> struct lambda_impl<3, true>
typedef protect< bind3< typedef protect< bind3<
f_ 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; > > type;
}; };
}; };
@@ -98,7 +98,7 @@ template<> struct lambda_impl<4, false>
typedef bind4< typedef bind4<
f_ 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; > type;
}; };
}; };
@@ -111,7 +111,7 @@ template<> struct lambda_impl<4, true>
typedef protect< bind4< typedef protect< bind4<
f_ 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; > > type;
}; };
}; };
@@ -124,7 +124,7 @@ template<> struct lambda_impl<5, false>
typedef bind5< typedef bind5<
f_ 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; > type;
}; };
}; };
@@ -137,7 +137,7 @@ template<> struct lambda_impl<5, true>
typedef protect< bind5< typedef protect< bind5<
f_ 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; > > type;
}; };
}; };

View File

@@ -21,7 +21,7 @@ template<> struct lambda_impl<1, false>
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef bind1< typedef bind1<
f_ f_
, typename lambda< typename f_::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> type; > type;
}; };
}; };
@@ -33,7 +33,7 @@ template<> struct lambda_impl<1, true>
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind1< typedef protect< bind1<
f_ f_
, typename lambda< typename f_::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> > type; > > type;
}; };
}; };
@@ -46,7 +46,7 @@ template<> struct lambda_impl<2, false>
typedef bind2< typedef bind2<
f_ 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; > type;
}; };
}; };
@@ -59,7 +59,7 @@ template<> struct lambda_impl<2, true>
typedef protect< bind2< typedef protect< bind2<
f_ 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; > > type;
}; };
}; };
@@ -72,7 +72,7 @@ template<> struct lambda_impl<3, false>
typedef bind3< typedef bind3<
f_ 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; > type;
}; };
}; };
@@ -85,7 +85,7 @@ template<> struct lambda_impl<3, true>
typedef protect< bind3< typedef protect< bind3<
f_ 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; > > type;
}; };
}; };
@@ -98,7 +98,7 @@ template<> struct lambda_impl<4, false>
typedef bind4< typedef bind4<
f_ 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; > type;
}; };
}; };
@@ -111,7 +111,7 @@ template<> struct lambda_impl<4, true>
typedef protect< bind4< typedef protect< bind4<
f_ 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; > > type;
}; };
}; };
@@ -124,7 +124,7 @@ template<> struct lambda_impl<5, false>
typedef bind5< typedef bind5<
f_ 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; > type;
}; };
}; };
@@ -137,7 +137,7 @@ template<> struct lambda_impl<5, true>
typedef protect< bind5< typedef protect< bind5<
f_ 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; > > type;
}; };
}; };

View File

@@ -21,7 +21,7 @@ template<> struct lambda_impl<1, false>
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef bind1< typedef bind1<
f_ f_
, typename lambda< typename f_::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> type; > type;
}; };
}; };
@@ -33,7 +33,7 @@ template<> struct lambda_impl<1, true>
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind1< typedef protect< bind1<
f_ f_
, typename lambda< typename f_::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> > type; > > type;
}; };
}; };
@@ -46,7 +46,7 @@ template<> struct lambda_impl<2, false>
typedef bind2< typedef bind2<
f_ 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; > type;
}; };
}; };
@@ -59,7 +59,7 @@ template<> struct lambda_impl<2, true>
typedef protect< bind2< typedef protect< bind2<
f_ 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; > > type;
}; };
}; };
@@ -72,7 +72,7 @@ template<> struct lambda_impl<3, false>
typedef bind3< typedef bind3<
f_ 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; > type;
}; };
}; };
@@ -85,7 +85,7 @@ template<> struct lambda_impl<3, true>
typedef protect< bind3< typedef protect< bind3<
f_ 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; > > type;
}; };
}; };
@@ -98,7 +98,7 @@ template<> struct lambda_impl<4, false>
typedef bind4< typedef bind4<
f_ 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; > type;
}; };
}; };
@@ -111,7 +111,7 @@ template<> struct lambda_impl<4, true>
typedef protect< bind4< typedef protect< bind4<
f_ 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; > > type;
}; };
}; };
@@ -124,7 +124,7 @@ template<> struct lambda_impl<5, false>
typedef bind5< typedef bind5<
f_ 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; > type;
}; };
}; };
@@ -137,7 +137,7 @@ template<> struct lambda_impl<5, true>
typedef protect< bind5< typedef protect< bind5<
f_ 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; > > type;
}; };
}; };

View File

@@ -21,7 +21,7 @@ template<> struct lambda_impl<1, false>
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef bind1< typedef bind1<
f_ f_
, typename lambda< typename f_::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> type; > type;
}; };
}; };
@@ -33,7 +33,7 @@ template<> struct lambda_impl<1, true>
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind1< typedef protect< bind1<
f_ f_
, typename lambda< typename f_::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> > type; > > type;
}; };
}; };
@@ -46,7 +46,7 @@ template<> struct lambda_impl<2, false>
typedef bind2< typedef bind2<
f_ 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; > type;
}; };
}; };
@@ -59,7 +59,7 @@ template<> struct lambda_impl<2, true>
typedef protect< bind2< typedef protect< bind2<
f_ 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; > > type;
}; };
}; };
@@ -72,7 +72,7 @@ template<> struct lambda_impl<3, false>
typedef bind3< typedef bind3<
f_ 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; > type;
}; };
}; };
@@ -85,7 +85,7 @@ template<> struct lambda_impl<3, true>
typedef protect< bind3< typedef protect< bind3<
f_ 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; > > type;
}; };
}; };
@@ -98,7 +98,7 @@ template<> struct lambda_impl<4, false>
typedef bind4< typedef bind4<
f_ 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; > type;
}; };
}; };
@@ -111,7 +111,7 @@ template<> struct lambda_impl<4, true>
typedef protect< bind4< typedef protect< bind4<
f_ 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; > > type;
}; };
}; };
@@ -124,7 +124,7 @@ template<> struct lambda_impl<5, false>
typedef bind5< typedef bind5<
f_ 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; > type;
}; };
}; };
@@ -137,7 +137,7 @@ template<> struct lambda_impl<5, true>
typedef protect< bind5< typedef protect< bind5<
f_ 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; > > type;
}; };
}; };

View File

@@ -21,7 +21,7 @@ template<> struct lambda_impl<1, false>
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef bind1< typedef bind1<
f_ f_
, typename lambda< typename f_::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> type; > type;
}; };
}; };
@@ -33,7 +33,7 @@ template<> struct lambda_impl<1, true>
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind1< typedef protect< bind1<
f_ f_
, typename lambda< typename f_::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> > type; > > type;
}; };
}; };
@@ -46,7 +46,7 @@ template<> struct lambda_impl<2, false>
typedef bind2< typedef bind2<
f_ 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; > type;
}; };
}; };
@@ -59,7 +59,7 @@ template<> struct lambda_impl<2, true>
typedef protect< bind2< typedef protect< bind2<
f_ 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; > > type;
}; };
}; };
@@ -72,7 +72,7 @@ template<> struct lambda_impl<3, false>
typedef bind3< typedef bind3<
f_ 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; > type;
}; };
}; };
@@ -85,7 +85,7 @@ template<> struct lambda_impl<3, true>
typedef protect< bind3< typedef protect< bind3<
f_ 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; > > type;
}; };
}; };
@@ -98,7 +98,7 @@ template<> struct lambda_impl<4, false>
typedef bind4< typedef bind4<
f_ 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; > type;
}; };
}; };
@@ -111,7 +111,7 @@ template<> struct lambda_impl<4, true>
typedef protect< bind4< typedef protect< bind4<
f_ 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; > > type;
}; };
}; };
@@ -124,7 +124,7 @@ template<> struct lambda_impl<5, false>
typedef bind5< typedef bind5<
f_ 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; > type;
}; };
}; };
@@ -137,7 +137,7 @@ template<> struct lambda_impl<5, true>
typedef protect< bind5< typedef protect< bind5<
f_ 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; > > type;
}; };
}; };

View File

@@ -21,7 +21,7 @@ template<> struct lambda_impl<1, false>
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef bind1< typedef bind1<
f_ f_
, typename lambda< typename f_::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> type; > type;
}; };
}; };
@@ -33,7 +33,7 @@ template<> struct lambda_impl<1, true>
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind1< typedef protect< bind1<
f_ f_
, typename lambda< typename f_::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> > type; > > type;
}; };
}; };
@@ -46,7 +46,7 @@ template<> struct lambda_impl<2, false>
typedef bind2< typedef bind2<
f_ 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; > type;
}; };
}; };
@@ -59,7 +59,7 @@ template<> struct lambda_impl<2, true>
typedef protect< bind2< typedef protect< bind2<
f_ 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; > > type;
}; };
}; };
@@ -72,7 +72,7 @@ template<> struct lambda_impl<3, false>
typedef bind3< typedef bind3<
f_ 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; > type;
}; };
}; };
@@ -85,7 +85,7 @@ template<> struct lambda_impl<3, true>
typedef protect< bind3< typedef protect< bind3<
f_ 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; > > type;
}; };
}; };
@@ -98,7 +98,7 @@ template<> struct lambda_impl<4, false>
typedef bind4< typedef bind4<
f_ 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; > type;
}; };
}; };
@@ -111,7 +111,7 @@ template<> struct lambda_impl<4, true>
typedef protect< bind4< typedef protect< bind4<
f_ 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; > > type;
}; };
}; };
@@ -124,7 +124,7 @@ template<> struct lambda_impl<5, false>
typedef bind5< typedef bind5<
f_ 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; > type;
}; };
}; };
@@ -137,7 +137,7 @@ template<> struct lambda_impl<5, true>
typedef protect< bind5< typedef protect< bind5<
f_ 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; > > type;
}; };
}; };

View File

@@ -21,7 +21,7 @@ template<> struct lambda_impl<1, false>
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef bind1< typedef bind1<
f_ f_
, typename lambda< typename f_::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> type; > type;
}; };
}; };
@@ -33,7 +33,7 @@ template<> struct lambda_impl<1, true>
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind1< typedef protect< bind1<
f_ f_
, typename lambda< typename f_::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> > type; > > type;
}; };
}; };
@@ -46,7 +46,7 @@ template<> struct lambda_impl<2, false>
typedef bind2< typedef bind2<
f_ 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; > type;
}; };
}; };
@@ -59,7 +59,7 @@ template<> struct lambda_impl<2, true>
typedef protect< bind2< typedef protect< bind2<
f_ 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; > > type;
}; };
}; };
@@ -72,7 +72,7 @@ template<> struct lambda_impl<3, false>
typedef bind3< typedef bind3<
f_ 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; > type;
}; };
}; };
@@ -85,7 +85,7 @@ template<> struct lambda_impl<3, true>
typedef protect< bind3< typedef protect< bind3<
f_ 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; > > type;
}; };
}; };
@@ -98,7 +98,7 @@ template<> struct lambda_impl<4, false>
typedef bind4< typedef bind4<
f_ 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; > type;
}; };
}; };
@@ -111,7 +111,7 @@ template<> struct lambda_impl<4, true>
typedef protect< bind4< typedef protect< bind4<
f_ 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; > > type;
}; };
}; };
@@ -124,7 +124,7 @@ template<> struct lambda_impl<5, false>
typedef bind5< typedef bind5<
f_ 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; > type;
}; };
}; };
@@ -137,7 +137,7 @@ template<> struct lambda_impl<5, true>
typedef protect< bind5< typedef protect< bind5<
f_ 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; > > type;
}; };
}; };

View File

@@ -21,7 +21,7 @@ template<> struct lambda_impl<1, false>
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef bind1< typedef bind1<
f_ f_
, typename lambda< typename f_::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> type; > type;
}; };
}; };
@@ -33,7 +33,7 @@ template<> struct lambda_impl<1, true>
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind1< typedef protect< bind1<
f_ f_
, typename lambda< typename f_::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> > type; > > type;
}; };
}; };
@@ -46,7 +46,7 @@ template<> struct lambda_impl<2, false>
typedef bind2< typedef bind2<
f_ 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; > type;
}; };
}; };
@@ -59,7 +59,7 @@ template<> struct lambda_impl<2, true>
typedef protect< bind2< typedef protect< bind2<
f_ 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; > > type;
}; };
}; };
@@ -72,7 +72,7 @@ template<> struct lambda_impl<3, false>
typedef bind3< typedef bind3<
f_ 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; > type;
}; };
}; };
@@ -85,7 +85,7 @@ template<> struct lambda_impl<3, true>
typedef protect< bind3< typedef protect< bind3<
f_ 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; > > type;
}; };
}; };
@@ -98,7 +98,7 @@ template<> struct lambda_impl<4, false>
typedef bind4< typedef bind4<
f_ 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; > type;
}; };
}; };
@@ -111,7 +111,7 @@ template<> struct lambda_impl<4, true>
typedef protect< bind4< typedef protect< bind4<
f_ 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; > > type;
}; };
}; };
@@ -124,7 +124,7 @@ template<> struct lambda_impl<5, false>
typedef bind5< typedef bind5<
f_ 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; > type;
}; };
}; };
@@ -137,7 +137,7 @@ template<> struct lambda_impl<5, true>
typedef protect< bind5< typedef protect< bind5<
f_ 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; > > type;
}; };
}; };

View File

@@ -25,7 +25,7 @@ namespace boost {
namespace mpl { namespace mpl {
namespace aux { namespace aux {
// gcc ICEs on |has_rebind| // gcc ICE-s on 'has_rebind'
#if !defined(__GNUC__) #if !defined(__GNUC__)
template< bool > 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<true>
{
template< typename F > struct result_
: template_arity_value<typename F::rebind>
{
};
};
#else
template<> template<>
struct template_arity_impl<true> struct template_arity_impl<true>
{ {
template< typename F > struct result_ 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 > template< typename F >
struct template_arity struct template_arity