Don't use metafunction forwarding since it confuses vc6/7

[SVN r20494]
This commit is contained in:
Dave Abrahams
2003-10-26 19:09:08 +00:00
parent dafe4fae8b
commit 58f6a455f9
2 changed files with 23 additions and 19 deletions

View File

@@ -242,16 +242,18 @@ struct BOOST_PP_CAT(apply,i)
}; };
# else # else
// ISO98 C++ // ISO98 C++, with minor concession to vc7
template< template<
typename F, AUX_APPLY_N_PARAMS(i, typename T) typename F, AUX_APPLY_N_PARAMS(i, typename T)
> >
struct BOOST_PP_CAT(apply,i) struct BOOST_PP_CAT(apply,i)
: F::template apply<
AUX_APPLY_N_PARAMS(i, T)
>
{ {
// Metafunction forwarding confuses vc7
typedef typename F::template apply<
AUX_APPLY_N_PARAMS(i, T)
>::type
BOOST_MPL_AUX_LAMBDA_SUPPORT( BOOST_MPL_AUX_LAMBDA_SUPPORT(
BOOST_PP_INC(i) BOOST_PP_INC(i)
, BOOST_PP_CAT(apply,i) , BOOST_PP_CAT(apply,i)

View File

@@ -49,10 +49,11 @@ template<
typename F, typename T1 typename F, typename T1
> >
struct apply1 struct apply1
: F::template apply<
T1
>
{ {
typedef typename F::template apply<
T1
>::type type;
enum { arity = 2 }; typedef F arg1; enum { arity = 2 }; typedef F arg1;
typedef T1 arg2; typedef T1 arg2;
friend class apply1_rebind; friend class apply1_rebind;
@@ -92,10 +93,10 @@ template<
typename F, typename T1, typename T2 typename F, typename T1, typename T2
> >
struct apply2 struct apply2
: F::template apply<
T1, T2
>
{ {
typedef typename F::template apply<
T1, T2
>::type type;
enum { arity = 3 }; typedef F arg1; enum { arity = 3 }; typedef F arg1;
typedef T1 arg2; typedef T1 arg2;
typedef T2 arg3; typedef T2 arg3;
@@ -136,10 +137,11 @@ template<
typename F, typename T1, typename T2, typename T3 typename F, typename T1, typename T2, typename T3
> >
struct apply3 struct apply3
: F::template apply<
T1, T2, T3
>
{ {
typedef typename F::template apply<
T1, T2, T3
>::type type;
enum { arity = 4 }; typedef F arg1; enum { arity = 4 }; typedef F arg1;
typedef T1 arg2; typedef T1 arg2;
typedef T2 arg3; typedef T2 arg3;
@@ -181,10 +183,10 @@ template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
> >
struct apply4 struct apply4
: F::template apply<
T1, T2, T3, T4
>
{ {
typedef typename F::template apply<
T1, T2, T3, T4
>::type type;
enum { arity = 5 }; typedef F arg1; enum { arity = 5 }; typedef F arg1;
typedef T1 arg2; typedef T1 arg2;
typedef T2 arg3; typedef T2 arg3;
@@ -228,10 +230,10 @@ template<
, typename T5 , typename T5
> >
struct apply5 struct apply5
: F::template apply<
T1, T2, T3, T4, T5
>
{ {
typedef typename F::template apply<
T1, T2, T3, T4, T5
>::type type;
enum { arity = 6 }; typedef F arg1; enum { arity = 6 }; typedef F arg1;
typedef T1 arg2; typedef T1 arg2;
typedef T2 arg3; typedef T2 arg3;