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) \
, typename lambda< \
typename f_::BOOST_PP_CAT(arg,BOOST_PP_INC(i)) \
typename F::BOOST_PP_CAT(arg,BOOST_PP_INC(i)) \
, false \
>::type \
/**/

View File

@@ -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,9 +36,7 @@
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 \
@@ -45,13 +44,33 @@
, 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) > \
{ \
}; \
/**/
#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

View File

@@ -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;
};
};

View File

@@ -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;
};
};

View File

@@ -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;
};
};

View File

@@ -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;
};
};

View File

@@ -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;
};
};

View File

@@ -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;
};
};

View File

@@ -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;
};
};

View File

@@ -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;
};
};

View File

@@ -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<true>
{
template< typename F > struct result_
: template_arity_value<typename F::rebind>
{
};
};
#else
template<>
struct template_arity_impl<true>
{
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