merge fixes from the main trunk

[SVN r17886]
This commit is contained in:
Aleksey Gurtovoy
2003-03-13 12:13:40 +00:00
parent 3d325c7333
commit 1ab158cda0
66 changed files with 883 additions and 780 deletions

View File

@@ -46,10 +46,13 @@ namespace aux {
template< typename Category, typename Iterator, typename N > template< typename Category, typename Iterator, typename N >
struct advance_impl struct advance_impl
{ {
typedef typename less< N,integral_c<long,0> >::type backward_;
typedef typename if_< backward_, negate<N>, N >::type offset_;
typedef typename if_< typedef typename if_<
typename less< N,integral_c<long,0> >::type backward_
, aux::advance_backward< ::boost::mpl::negate<N>::value > , aux::advance_backward< BOOST_MPL_AUX_VALUE_WKND(offset_)::value >
, aux::advance_forward< BOOST_MPL_AUX_VALUE_WKND(N)::value > , aux::advance_forward< BOOST_MPL_AUX_VALUE_WKND(offset_)::value >
>::type algo_; >::type algo_;
typedef typename BOOST_MPL_AUX_APPLY1(algo_,Iterator)::type type; typedef typename BOOST_MPL_AUX_APPLY1(algo_,Iterator)::type type;
@@ -65,6 +68,8 @@ struct advance_impl<ra_iter_tag_,Iterator,N>
} // namespace aux } // namespace aux
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Iterator) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Iterator)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(N) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(N)
@@ -78,6 +83,8 @@ struct advance
>::type type; >::type type;
}; };
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
template< template<
typename Iterator typename Iterator
, BOOST_MPL_AUX_NTTP_DECL(long, N) , BOOST_MPL_AUX_NTTP_DECL(long, N)
@@ -145,6 +152,8 @@ struct advance_impl<ra_iter_tag_>
} // namespace aux } // namespace aux
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Iterator) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Iterator)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(N) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(N)
@@ -159,6 +168,8 @@ struct advance
>::type type; >::type type;
}; };
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
template< template<
typename Iterator typename Iterator
, BOOST_MPL_AUX_NTTP_DECL(long, N) , BOOST_MPL_AUX_NTTP_DECL(long, N)
@@ -175,7 +186,7 @@ struct advance_c
#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
BOOST_MPL_AUX_VOID_SPEC(2, advance) BOOST_MPL_AUX_ALGORITHM_VOID_SPEC(2, advance)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -27,6 +27,7 @@
# include "boost/mpl/protect.hpp" # include "boost/mpl/protect.hpp"
# include "boost/mpl/quote.hpp" # include "boost/mpl/quote.hpp"
# include "boost/mpl/bool.hpp" # include "boost/mpl/bool.hpp"
# include "boost/mpl/int_fwd.hpp"
# include "boost/mpl/aux_/template_arity.hpp" # include "boost/mpl/aux_/template_arity.hpp"
# include "boost/mpl/aux_/config/ttp.hpp" # include "boost/mpl/aux_/config/ttp.hpp"
#endif #endif
@@ -80,8 +81,8 @@ namespace mpl {
template< template<
typename T typename T
, bool Protect = false , typename Protect = false_
AUX_ARITY_PARAM(long Arity = aux::template_arity<T>::value) AUX_ARITY_PARAM(typename Arity = int_< aux::template_arity<T>::value >)
> >
struct lambda_impl struct lambda_impl
{ {
@@ -91,10 +92,10 @@ struct lambda_impl
template< template<
typename T typename T
AUX_ARITY_PARAM(long Arity = aux::template_arity<T>::value) AUX_ARITY_PARAM(typename Arity = int_< aux::template_arity<T>::value >)
> >
struct lambda struct lambda
: lambda_impl<T,false AUX_ARITY_PARAM(Arity)> : lambda_impl<T,false_ AUX_ARITY_PARAM(Arity)>
{ {
}; };
@@ -120,8 +121,8 @@ struct lambda_or< BOOST_MPL_PP_ENUM(n,false) >
} // namespace aux } // namespace aux
#undef n #undef n
template< int N, bool Protect > template< int N, typename Protect >
struct lambda_impl< arg<N>, Protect AUX_ARITY_PARAM(-1) > struct lambda_impl< arg<N>, Protect AUX_ARITY_PARAM(int_<-1>) >
{ {
BOOST_MPL_AUX_IS_LAMBDA_EXPR(true_) BOOST_MPL_AUX_IS_LAMBDA_EXPR(true_)
typedef arg<N> type; typedef arg<N> type;
@@ -134,8 +135,8 @@ struct lambda_impl< arg<N>, Protect AUX_ARITY_PARAM(-1) >
#include BOOST_PP_ITERATE() #include BOOST_PP_ITERATE()
//: special case for 'protect' //: special case for 'protect'
template< typename T, bool Protect > template< typename T, typename Protect >
struct lambda_impl< protect<T>, Protect AUX_ARITY_PARAM(1) > struct lambda_impl< protect<T>, Protect AUX_ARITY_PARAM(int_<1>) >
{ {
BOOST_MPL_AUX_IS_LAMBDA_EXPR(false_) BOOST_MPL_AUX_IS_LAMBDA_EXPR(false_)
typedef protect<T> type; typedef protect<T> type;
@@ -144,11 +145,12 @@ struct lambda_impl< protect<T>, Protect AUX_ARITY_PARAM(1) >
//: specializations for main 'bind', 'bind1st' and 'bind2nd' forms //: specializations for main 'bind', 'bind1st' and 'bind2nd' forms
template< template<
typename F, AUX_LAMBDA_BIND_PARAMS(typename T) typename F, AUX_LAMBDA_BIND_PARAMS(typename T)
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind<F,AUX_LAMBDA_BIND_PARAMS(T)> bind<F,AUX_LAMBDA_BIND_PARAMS(T)>
, Protect AUX_ARITY_PARAM(BOOST_PP_INC(BOOST_MPL_METAFUNCTION_MAX_ARITY)) , Protect
AUX_ARITY_PARAM(int_<BOOST_PP_INC(BOOST_MPL_METAFUNCTION_MAX_ARITY)>)
> >
{ {
BOOST_MPL_AUX_IS_LAMBDA_EXPR(false_) BOOST_MPL_AUX_IS_LAMBDA_EXPR(false_)
@@ -157,9 +159,9 @@ struct lambda_impl<
template< template<
typename F, typename T typename F, typename T
, bool Protect , typename Protect
> >
struct lambda_impl< bind1st<F,T>, Protect AUX_ARITY_PARAM(2) > struct lambda_impl< bind1st<F,T>, Protect AUX_ARITY_PARAM(int_<2>) >
{ {
BOOST_MPL_AUX_IS_LAMBDA_EXPR(false_) BOOST_MPL_AUX_IS_LAMBDA_EXPR(false_)
typedef bind1st<F,T> type; typedef bind1st<F,T> type;
@@ -167,9 +169,9 @@ struct lambda_impl< bind1st<F,T>, Protect AUX_ARITY_PARAM(2) >
template< template<
typename F, typename T typename F, typename T
, bool Protect , typename Protect
> >
struct lambda_impl< bind2nd<F,T>, Protect AUX_ARITY_PARAM(2) > struct lambda_impl< bind2nd<F,T>, Protect AUX_ARITY_PARAM(int_<2>) >
{ {
BOOST_MPL_AUX_IS_LAMBDA_EXPR(false_) BOOST_MPL_AUX_IS_LAMBDA_EXPR(false_)
typedef bind2nd<F,T> type; typedef bind2nd<F,T> type;
@@ -197,8 +199,8 @@ template<
template< AUX_LAMBDA_PARAMS(i, typename P) > class F template< AUX_LAMBDA_PARAMS(i, typename P) > class F
, AUX_LAMBDA_PARAMS(i, typename T) , AUX_LAMBDA_PARAMS(i, typename T)
> >
struct lambda< F<AUX_LAMBDA_PARAMS(i, T)> AUX_ARITY_PARAM(i) > struct lambda< F<AUX_LAMBDA_PARAMS(i, T)> AUX_ARITY_PARAM(int_<i>) >
: lambda_impl< F<AUX_LAMBDA_PARAMS(i, T)>, true AUX_ARITY_PARAM(i) > : lambda_impl< F<AUX_LAMBDA_PARAMS(i, T)>, true_ AUX_ARITY_PARAM(int_<i>) >
{ {
}; };
@@ -207,9 +209,11 @@ struct lambda< F<AUX_LAMBDA_PARAMS(i, T)> AUX_ARITY_PARAM(i) >
template< template<
template< AUX_LAMBDA_PARAMS(i, typename P) > class F template< AUX_LAMBDA_PARAMS(i, typename P) > class F
, AUX_LAMBDA_PARAMS(i, typename T) , AUX_LAMBDA_PARAMS(i, typename T)
, bool Protect , typename Protect
>
struct lambda_impl<
F<AUX_LAMBDA_PARAMS(i, T)>, Protect AUX_ARITY_PARAM(int_<i>)
> >
struct lambda_impl< F<AUX_LAMBDA_PARAMS(i, T)>, Protect AUX_ARITY_PARAM(i) >
{ {
# define AUX_LAMBDA_INVOCATION(unused, i, T) \ # define AUX_LAMBDA_INVOCATION(unused, i, T) \
BOOST_PP_COMMA_IF(i) \ BOOST_PP_COMMA_IF(i) \
@@ -234,8 +238,7 @@ struct lambda_impl< F<AUX_LAMBDA_PARAMS(i, T)>, Protect AUX_ARITY_PARAM(i) >
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< AUX_LAMBDA_PARAMS(i, typename P) > class F , template< AUX_LAMBDA_PARAMS(i, typename P) > class F
, AUX_LAMBDA_PARAMS(i, typename L) , AUX_LAMBDA_PARAMS(i, typename L)
> >
@@ -250,7 +253,7 @@ template<
template< AUX_LAMBDA_PARAMS(i, typename P) > class F template< AUX_LAMBDA_PARAMS(i, typename P) > class F
, AUX_LAMBDA_PARAMS(i, typename L) , AUX_LAMBDA_PARAMS(i, typename L)
> >
struct BOOST_PP_CAT(le_result,i)< true,false,F,AUX_LAMBDA_PARAMS(i, L) > struct BOOST_PP_CAT(le_result,i)< true_,false_,F,AUX_LAMBDA_PARAMS(i, L) >
{ {
typedef BOOST_PP_CAT(bind,i)< typedef BOOST_PP_CAT(bind,i)<
BOOST_PP_CAT(quote,i)<F> BOOST_PP_CAT(quote,i)<F>
@@ -262,7 +265,7 @@ template<
template< AUX_LAMBDA_PARAMS(i, typename P) > class F template< AUX_LAMBDA_PARAMS(i, typename P) > class F
, AUX_LAMBDA_PARAMS(i, typename L) , AUX_LAMBDA_PARAMS(i, typename L)
> >
struct BOOST_PP_CAT(le_result,i)< true,true,F,AUX_LAMBDA_PARAMS(i, L) > struct BOOST_PP_CAT(le_result,i)< true_,true_,F,AUX_LAMBDA_PARAMS(i, L) >
{ {
typedef protect< BOOST_PP_CAT(bind,i)< typedef protect< BOOST_PP_CAT(bind,i)<
BOOST_PP_CAT(quote,i)<F> BOOST_PP_CAT(quote,i)<F>
@@ -285,9 +288,11 @@ struct BOOST_PP_CAT(le_result,i)< true,true,F,AUX_LAMBDA_PARAMS(i, L) >
template< template<
template< AUX_LAMBDA_PARAMS(i, typename P) > class F template< AUX_LAMBDA_PARAMS(i, typename P) > class F
, AUX_LAMBDA_PARAMS(i, typename T) , AUX_LAMBDA_PARAMS(i, typename T)
, bool Protect , typename Protect
>
struct lambda_impl<
F<AUX_LAMBDA_PARAMS(i, T)>, Protect AUX_ARITY_PARAM(int_<i>)
> >
struct lambda_impl< F<AUX_LAMBDA_PARAMS(i, T)>, Protect AUX_ARITY_PARAM(i) >
{ {
BOOST_MPL_PP_REPEAT(i, AUX_LAMBDA_INVOCATION, T) BOOST_MPL_PP_REPEAT(i, AUX_LAMBDA_INVOCATION, T)
typedef aux::lambda_or< typedef aux::lambda_or<
@@ -295,7 +300,7 @@ struct lambda_impl< F<AUX_LAMBDA_PARAMS(i, T)>, Protect AUX_ARITY_PARAM(i) >
> is_le; > is_le;
typedef typename aux::BOOST_PP_CAT(le_result,i)< typedef typename aux::BOOST_PP_CAT(le_result,i)<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, AUX_LAMBDA_PARAMS(i, l) , AUX_LAMBDA_PARAMS(i, l)
@@ -311,11 +316,11 @@ struct lambda_impl< F<AUX_LAMBDA_PARAMS(i, T)>, Protect AUX_ARITY_PARAM(i) >
template< template<
typename F AUX_LAMBDA_BIND_N_PARAMS(i, typename T) typename F AUX_LAMBDA_BIND_N_PARAMS(i, typename T)
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
BOOST_PP_CAT(bind,i)<F AUX_LAMBDA_BIND_N_PARAMS(i, T)> BOOST_PP_CAT(bind,i)<F AUX_LAMBDA_BIND_N_PARAMS(i, T)>
, Protect AUX_ARITY_PARAM(BOOST_PP_INC(i)) , Protect AUX_ARITY_PARAM(int_<BOOST_PP_INC(i)>)
> >
{ {
BOOST_MPL_AUX_IS_LAMBDA_EXPR(false_) BOOST_MPL_AUX_IS_LAMBDA_EXPR(false_)

View File

@@ -26,7 +26,13 @@
#if !defined(AUX_WRAPPER_NAME) #if !defined(AUX_WRAPPER_NAME)
# define AUX_WRAPPER_NAME BOOST_PP_CAT(AUX_WRAPPER_VALUE_TYPE,_) # define AUX_WRAPPER_NAME BOOST_PP_CAT(AUX_WRAPPER_VALUE_TYPE,_)
#endif
#if !defined(AUX_WRAPPER_PARAMS)
# define AUX_WRAPPER_PARAMS(N) BOOST_MPL_AUX_NTTP_DECL(AUX_WRAPPER_VALUE_TYPE, N) # define AUX_WRAPPER_PARAMS(N) BOOST_MPL_AUX_NTTP_DECL(AUX_WRAPPER_VALUE_TYPE, N)
#endif
#if !defined(AUX_WRAPPER_INST)
# define AUX_WRAPPER_INST(value) mpl::AUX_WRAPPER_NAME< value > # define AUX_WRAPPER_INST(value) mpl::AUX_WRAPPER_NAME< value >
#endif #endif
@@ -36,12 +42,18 @@ template< AUX_WRAPPER_PARAMS(N) >
struct AUX_WRAPPER_NAME struct AUX_WRAPPER_NAME
{ {
BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, value = N); BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, value = N);
// agurt, 08/mar/03: SGI MIPSpro C++ workaround, have to #ifdef because some
// other compilers (e.g. MSVC) are not particulary happy about it
#if BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
typedef struct AUX_WRAPPER_NAME type; typedef struct AUX_WRAPPER_NAME type;
#else
typedef AUX_WRAPPER_NAME type;
#endif
typedef AUX_WRAPPER_VALUE_TYPE value_type; typedef AUX_WRAPPER_VALUE_TYPE value_type;
// have to #ifdef here: some compilers don't like the 'N + 1' form (MSVC), // have to #ifdef here: some compilers don't like the 'N + 1' form (MSVC),
// while some other don't like 'value + 1' (Borland), and some don't like // while some other don't like 'value + 1' (Borland), and some don't like
// either // either
#if BOOST_WORKAROUND(__EDG_VERSION__, <= 243) #if BOOST_WORKAROUND(__EDG_VERSION__, <= 243)
private: private:
BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, next_value = BOOST_MPL_AUX_ICE_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1))); BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, next_value = BOOST_MPL_AUX_ICE_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1)));

View File

@@ -45,7 +45,7 @@ struct is_msvc_eti_arg
{ {
static no_tag test(...); static no_tag test(...);
static yes_tag test(eti_int_convertible); static yes_tag test(eti_int_convertible);
static T get(); static T& get();
BOOST_STATIC_CONSTANT(bool, value = BOOST_STATIC_CONSTANT(bool, value =
sizeof(test(get())) == sizeof(yes_tag) sizeof(test(get())) == sizeof(yes_tag)

View File

@@ -18,6 +18,7 @@
#define BOOST_MPL_AUX_LAMBDA_SPEC_HPP_INCLUDED #define BOOST_MPL_AUX_LAMBDA_SPEC_HPP_INCLUDED
#include "boost/mpl/lambda_fwd.hpp" #include "boost/mpl/lambda_fwd.hpp"
#include "boost/mpl/int_fwd.hpp"
#include "boost/mpl/aux_/preprocessor/params.hpp" #include "boost/mpl/aux_/preprocessor/params.hpp"
#include "boost/mpl/aux_/lambda_arity_param.hpp" #include "boost/mpl/aux_/lambda_arity_param.hpp"
#include "boost/mpl/aux_/config/lambda.hpp" #include "boost/mpl/aux_/config/lambda.hpp"
@@ -30,7 +31,7 @@ template< \
> \ > \
struct lambda< \ struct lambda< \
name< BOOST_MPL_PP_PARAMS(i, T) > \ name< BOOST_MPL_PP_PARAMS(i, T) > \
BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(-1) \ BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(int_<-1>) \
> \ > \
{ \ { \
typedef name< BOOST_MPL_PP_PARAMS(i, T) > type; \ typedef name< BOOST_MPL_PP_PARAMS(i, T) > type; \

View File

@@ -6,8 +6,8 @@ namespace mpl {
template< template<
typename T typename T
, bool Protect = false , typename Protect = false_
, long Arity = aux::template_arity<T>::value , typename Arity = int_< aux::template_arity<T>::value >
> >
struct lambda_impl struct lambda_impl
{ {
@@ -17,10 +17,10 @@ struct lambda_impl
template< template<
typename T typename T
, long Arity = aux::template_arity<T>::value , typename Arity = int_< aux::template_arity<T>::value >
> >
struct lambda struct lambda
: lambda_impl< T,false,Arity > : lambda_impl< T,false_,Arity >
{ {
}; };
@@ -43,8 +43,8 @@ struct lambda_or< false,false,false,false,false >
} // namespace aux } // namespace aux
template< int N, bool Protect > template< int N, typename Protect >
struct lambda_impl< arg<N>,Protect,-1 > struct lambda_impl< arg<N>,Protect,int_<-1> >
{ {
typedef true_ is_le; typedef true_ is_le;
typedef arg<N> type; typedef arg<N> type;
@@ -52,11 +52,11 @@ struct lambda_impl< arg<N>,Protect,-1 >
template< template<
typename F typename F
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind0<F> bind0<F>
, Protect, 1 , Protect, int_<1>
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -69,16 +69,15 @@ template<
template< typename P1 > class F template< typename P1 > class F
, typename T1 , typename T1
> >
struct lambda< F<T1>,1 > struct lambda< F<T1>,int_<1> >
: lambda_impl< F<T1>,true,1 > : lambda_impl< F<T1>,true_,int_<1> >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1 > class F , template< typename P1 > class F
, typename L1 , typename L1
> >
@@ -93,7 +92,7 @@ template<
template< typename P1 > class F template< typename P1 > class F
, typename L1 , typename L1
> >
struct le_result1< true,false,F,L1 > struct le_result1< true_,false_,F,L1 >
{ {
typedef bind1< typedef bind1<
quote1<F> quote1<F>
@@ -105,7 +104,7 @@ template<
template< typename P1 > class F template< typename P1 > class F
, typename L1 , typename L1
> >
struct le_result1< true,true,F,L1 > struct le_result1< true_,true_,F,L1 >
{ {
typedef protect< bind1< typedef protect< bind1<
quote1<F> quote1<F>
@@ -118,9 +117,11 @@ struct le_result1< true,true,F,L1 >
template< template<
template< typename P1 > class F template< typename P1 > class F
, typename T1 , typename T1
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1>,Protect,int_<1 >
> >
struct lambda_impl< F<T1>,Protect,1 >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef aux::lambda_or< typedef aux::lambda_or<
@@ -128,7 +129,7 @@ struct lambda_impl< F<T1>,Protect,1 >
> is_le; > is_le;
typedef typename aux::le_result1< typedef typename aux::le_result1<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1 , l1
@@ -137,11 +138,11 @@ struct lambda_impl< F<T1>,Protect,1 >
template< template<
typename F, typename T1 typename F, typename T1
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind1< F,T1 > bind1< F,T1 >
, Protect, 2 , Protect, int_<2>
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -155,16 +156,15 @@ template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename T1, typename T2 , typename T1, typename T2
> >
struct lambda< F<T1,T2>,2 > struct lambda< F<T1,T2>,int_<2> >
: lambda_impl< F<T1,T2>,true,2 > : lambda_impl< F<T1,T2>,true_,int_<2> >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2 > class F , template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
@@ -179,7 +179,7 @@ template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
struct le_result2< true,false,F,L1,L2 > struct le_result2< true_,false_,F,L1,L2 >
{ {
typedef bind2< typedef bind2<
quote2<F> quote2<F>
@@ -191,7 +191,7 @@ template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
struct le_result2< true,true,F,L1,L2 > struct le_result2< true_,true_,F,L1,L2 >
{ {
typedef protect< bind2< typedef protect< bind2<
quote2<F> quote2<F>
@@ -204,9 +204,11 @@ struct le_result2< true,true,F,L1,L2 >
template< template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename T1, typename T2 , typename T1, typename T2
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2>,Protect,int_<2 >
> >
struct lambda_impl< F<T1,T2>,Protect,2 >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -216,7 +218,7 @@ struct lambda_impl< F<T1,T2>,Protect,2 >
> is_le; > is_le;
typedef typename aux::le_result2< typedef typename aux::le_result2<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2 , l1, l2
@@ -225,11 +227,11 @@ struct lambda_impl< F<T1,T2>,Protect,2 >
template< template<
typename F, typename T1, typename T2 typename F, typename T1, typename T2
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind2< F,T1,T2 > bind2< F,T1,T2 >
, Protect, 3 , Protect, int_<3>
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -243,16 +245,15 @@ template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename T1, typename T2, typename T3 , typename T1, typename T2, typename T3
> >
struct lambda< F<T1,T2,T3>,3 > struct lambda< F<T1,T2,T3>,int_<3> >
: lambda_impl< F<T1,T2,T3>,true,3 > : lambda_impl< F<T1,T2,T3>,true_,int_<3> >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3 > class F , template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
@@ -267,7 +268,7 @@ template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
struct le_result3< true,false,F,L1,L2,L3 > struct le_result3< true_,false_,F,L1,L2,L3 >
{ {
typedef bind3< typedef bind3<
quote3<F> quote3<F>
@@ -279,7 +280,7 @@ template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
struct le_result3< true,true,F,L1,L2,L3 > struct le_result3< true_,true_,F,L1,L2,L3 >
{ {
typedef protect< bind3< typedef protect< bind3<
quote3<F> quote3<F>
@@ -292,9 +293,11 @@ struct le_result3< true,true,F,L1,L2,L3 >
template< template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename T1, typename T2, typename T3 , typename T1, typename T2, typename T3
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3>,Protect,int_<3 >
> >
struct lambda_impl< F<T1,T2,T3>,Protect,3 >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -305,7 +308,7 @@ struct lambda_impl< F<T1,T2,T3>,Protect,3 >
> is_le; > is_le;
typedef typename aux::le_result3< typedef typename aux::le_result3<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3 , l1, l2, l3
@@ -314,11 +317,11 @@ struct lambda_impl< F<T1,T2,T3>,Protect,3 >
template< template<
typename F, typename T1, typename T2, typename T3 typename F, typename T1, typename T2, typename T3
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind3< F,T1,T2,T3 > bind3< F,T1,T2,T3 >
, Protect, 4 , Protect, int_<4>
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -332,16 +335,15 @@ template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename T1, typename T2, typename T3, typename T4 , typename T1, typename T2, typename T3, typename T4
> >
struct lambda< F<T1,T2,T3,T4>,4 > struct lambda< F<T1,T2,T3,T4>,int_<4> >
: lambda_impl< F<T1,T2,T3,T4>,true,4 > : lambda_impl< F<T1,T2,T3,T4>,true_,int_<4> >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3, typename P4 > class F , template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
@@ -357,7 +359,7 @@ template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
struct le_result4< true,false,F,L1,L2,L3,L4 > struct le_result4< true_,false_,F,L1,L2,L3,L4 >
{ {
typedef bind4< typedef bind4<
quote4<F> quote4<F>
@@ -370,7 +372,7 @@ template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
struct le_result4< true,true,F,L1,L2,L3,L4 > struct le_result4< true_,true_,F,L1,L2,L3,L4 >
{ {
typedef protect< bind4< typedef protect< bind4<
quote4<F> quote4<F>
@@ -384,9 +386,11 @@ struct le_result4< true,true,F,L1,L2,L3,L4 >
template< template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename T1, typename T2, typename T3, typename T4 , typename T1, typename T2, typename T3, typename T4
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3,T4>,Protect,int_<4 >
> >
struct lambda_impl< F<T1,T2,T3,T4>,Protect,4 >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -399,7 +403,7 @@ struct lambda_impl< F<T1,T2,T3,T4>,Protect,4 >
> is_le; > is_le;
typedef typename aux::le_result4< typedef typename aux::le_result4<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3, l4 , l1, l2, l3, l4
@@ -408,11 +412,11 @@ struct lambda_impl< F<T1,T2,T3,T4>,Protect,4 >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind4< F,T1,T2,T3,T4 > bind4< F,T1,T2,T3,T4 >
, Protect, 5 , Protect, int_<5>
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -430,16 +434,15 @@ template<
class F class F
, typename T1, typename T2, typename T3, typename T4, typename T5 , typename T1, typename T2, typename T3, typename T4, typename T5
> >
struct lambda< F<T1,T2,T3,T4,T5>,5 > struct lambda< F<T1,T2,T3,T4,T5>,int_<5> >
: lambda_impl< F<T1,T2,T3,T4,T5>,true,5 > : lambda_impl< F<T1,T2,T3,T4,T5>,true_,int_<5> >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
@@ -459,7 +462,7 @@ template<
class F class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
struct le_result5< true,false,F,L1,L2,L3,L4,L5 > struct le_result5< true_,false_,F,L1,L2,L3,L4,L5 >
{ {
typedef bind5< typedef bind5<
quote5<F> quote5<F>
@@ -476,7 +479,7 @@ template<
class F class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
struct le_result5< true,true,F,L1,L2,L3,L4,L5 > struct le_result5< true_,true_,F,L1,L2,L3,L4,L5 >
{ {
typedef protect< bind5< typedef protect< bind5<
quote5<F> quote5<F>
@@ -494,9 +497,11 @@ template<
> >
class F class F
, typename T1, typename T2, typename T3, typename T4, typename T5 , typename T1, typename T2, typename T3, typename T4, typename T5
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3,T4,T5>,Protect,int_<5 >
> >
struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect,5 >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -510,7 +515,7 @@ struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect,5 >
> is_le; > is_le;
typedef typename aux::le_result5< typedef typename aux::le_result5<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3, l4, l5 , l1, l2, l3, l4, l5
@@ -520,11 +525,11 @@ struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect,5 >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, typename T5 , typename T5
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind5< F,T1,T2,T3,T4,T5 > bind5< F,T1,T2,T3,T4,T5 >
, Protect, 6 , Protect, int_<6>
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -535,8 +540,8 @@ struct lambda_impl<
}; };
// special case for 'protect' // special case for 'protect'
template< typename T, bool Protect > template< typename T, typename Protect >
struct lambda_impl< protect<T>,Protect,1 > struct lambda_impl< protect<T>,Protect,int_<1> >
{ {
typedef false_ is_le; typedef false_ is_le;
typedef protect<T> type; typedef protect<T> type;
@@ -546,11 +551,12 @@ struct lambda_impl< protect<T>,Protect,1 >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, typename T5 , typename T5
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind< F,T1,T2,T3,T4,T5 > bind< F,T1,T2,T3,T4,T5 >
, Protect, 6 , Protect
, int_<6>
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -559,9 +565,9 @@ struct lambda_impl<
template< template<
typename F, typename T typename F, typename T
, bool Protect , typename Protect
> >
struct lambda_impl< bind1st<F,T>,Protect,2 > struct lambda_impl< bind1st<F,T>,Protect,int_<2> >
{ {
typedef false_ is_le; typedef false_ is_le;
typedef bind1st< F,T > type; typedef bind1st< F,T > type;
@@ -569,9 +575,9 @@ struct lambda_impl< bind1st<F,T>,Protect,2 >
template< template<
typename F, typename T typename F, typename T
, bool Protect , typename Protect
> >
struct lambda_impl< bind2nd<F,T>,Protect,2 > struct lambda_impl< bind2nd<F,T>,Protect,int_<2> >
{ {
typedef false_ is_le; typedef false_ is_le;
typedef bind2nd< F,T > type; typedef bind2nd< F,T > type;

View File

@@ -55,7 +55,7 @@ struct iter_fold_if_forward_step
typedef typename apply2< Predicate,State,Iterator >::type not_last; typedef typename apply2< Predicate,State,Iterator >::type not_last;
typedef typename iter_fold_if_step_impl< typedef typename iter_fold_if_step_impl<
BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
>::template result_< Iterator,State,ForwardOp,next<Iterator> > impl_; >::template result_< Iterator, State, ForwardOp, mpl::next< Iterator> > impl_;
typedef typename impl_::state state; typedef typename impl_::state state;
typedef typename impl_::iterator iterator; typedef typename impl_::iterator iterator;

View File

@@ -31,7 +31,7 @@ template<> struct lambda_impl<1, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind1< typedef mpl::protect< bind1<
f_ f_
, typename lambda< typename F::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> > type; > > type;
@@ -56,7 +56,7 @@ template<> struct lambda_impl<2, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind2< typedef mpl::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
@@ -82,7 +82,7 @@ template<> struct lambda_impl<3, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind3< typedef mpl::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
@@ -108,7 +108,7 @@ template<> struct lambda_impl<4, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind4< typedef mpl::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
@@ -134,7 +134,7 @@ template<> struct lambda_impl<5, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind5< typedef mpl::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

View File

@@ -6,8 +6,8 @@ namespace mpl {
template< template<
typename T typename T
, bool Protect = false , typename Protect = false_
, long Arity = aux::template_arity<T>::value , typename Arity = int_< aux::template_arity<T>::value >
> >
struct lambda_impl struct lambda_impl
{ {
@@ -17,10 +17,10 @@ struct lambda_impl
template< template<
typename T typename T
, long Arity = aux::template_arity<T>::value , typename Arity = int_< aux::template_arity<T>::value >
> >
struct lambda struct lambda
: lambda_impl< T,false,Arity > : lambda_impl< T,false_,Arity >
{ {
}; };
@@ -43,8 +43,8 @@ struct lambda_or< false,false,false,false,false >
} // namespace aux } // namespace aux
template< int N, bool Protect > template< int N, typename Protect >
struct lambda_impl< arg<N>,Protect,-1 > struct lambda_impl< arg<N>,Protect,int_<-1> >
{ {
typedef true_ is_le; typedef true_ is_le;
typedef arg<N> type; typedef arg<N> type;
@@ -52,11 +52,11 @@ struct lambda_impl< arg<N>,Protect,-1 >
template< template<
typename F typename F
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind0<F> bind0<F>
, Protect, 1 , Protect, int_<1>
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -69,16 +69,15 @@ template<
template< typename P1 > class F template< typename P1 > class F
, typename T1 , typename T1
> >
struct lambda< F<T1>,1 > struct lambda< F<T1>,int_<1> >
: lambda_impl< F<T1>,true,1 > : lambda_impl< F<T1>,true_,int_<1> >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1 > class F , template< typename P1 > class F
, typename L1 , typename L1
> >
@@ -93,7 +92,7 @@ template<
template< typename P1 > class F template< typename P1 > class F
, typename L1 , typename L1
> >
struct le_result1< true,false,F,L1 > struct le_result1< true_,false_,F,L1 >
{ {
typedef bind1< typedef bind1<
quote1<F> quote1<F>
@@ -105,7 +104,7 @@ template<
template< typename P1 > class F template< typename P1 > class F
, typename L1 , typename L1
> >
struct le_result1< true,true,F,L1 > struct le_result1< true_,true_,F,L1 >
{ {
typedef protect< bind1< typedef protect< bind1<
quote1<F> quote1<F>
@@ -118,9 +117,11 @@ struct le_result1< true,true,F,L1 >
template< template<
template< typename P1 > class F template< typename P1 > class F
, typename T1 , typename T1
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1>,Protect,int_<1 >
> >
struct lambda_impl< F<T1>,Protect,1 >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef aux::lambda_or< typedef aux::lambda_or<
@@ -128,7 +129,7 @@ struct lambda_impl< F<T1>,Protect,1 >
> is_le; > is_le;
typedef typename aux::le_result1< typedef typename aux::le_result1<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1 , l1
@@ -137,11 +138,11 @@ struct lambda_impl< F<T1>,Protect,1 >
template< template<
typename F, typename T1 typename F, typename T1
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind1< F,T1 > bind1< F,T1 >
, Protect, 2 , Protect, int_<2>
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -155,16 +156,15 @@ template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename T1, typename T2 , typename T1, typename T2
> >
struct lambda< F<T1,T2>,2 > struct lambda< F<T1,T2>,int_<2> >
: lambda_impl< F<T1,T2>,true,2 > : lambda_impl< F<T1,T2>,true_,int_<2> >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2 > class F , template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
@@ -179,7 +179,7 @@ template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
struct le_result2< true,false,F,L1,L2 > struct le_result2< true_,false_,F,L1,L2 >
{ {
typedef bind2< typedef bind2<
quote2<F> quote2<F>
@@ -191,7 +191,7 @@ template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
struct le_result2< true,true,F,L1,L2 > struct le_result2< true_,true_,F,L1,L2 >
{ {
typedef protect< bind2< typedef protect< bind2<
quote2<F> quote2<F>
@@ -204,9 +204,11 @@ struct le_result2< true,true,F,L1,L2 >
template< template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename T1, typename T2 , typename T1, typename T2
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2>,Protect,int_<2 >
> >
struct lambda_impl< F<T1,T2>,Protect,2 >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -216,7 +218,7 @@ struct lambda_impl< F<T1,T2>,Protect,2 >
> is_le; > is_le;
typedef typename aux::le_result2< typedef typename aux::le_result2<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2 , l1, l2
@@ -225,11 +227,11 @@ struct lambda_impl< F<T1,T2>,Protect,2 >
template< template<
typename F, typename T1, typename T2 typename F, typename T1, typename T2
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind2< F,T1,T2 > bind2< F,T1,T2 >
, Protect, 3 , Protect, int_<3>
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -243,16 +245,15 @@ template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename T1, typename T2, typename T3 , typename T1, typename T2, typename T3
> >
struct lambda< F<T1,T2,T3>,3 > struct lambda< F<T1,T2,T3>,int_<3> >
: lambda_impl< F<T1,T2,T3>,true,3 > : lambda_impl< F<T1,T2,T3>,true_,int_<3> >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3 > class F , template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
@@ -267,7 +268,7 @@ template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
struct le_result3< true,false,F,L1,L2,L3 > struct le_result3< true_,false_,F,L1,L2,L3 >
{ {
typedef bind3< typedef bind3<
quote3<F> quote3<F>
@@ -279,7 +280,7 @@ template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
struct le_result3< true,true,F,L1,L2,L3 > struct le_result3< true_,true_,F,L1,L2,L3 >
{ {
typedef protect< bind3< typedef protect< bind3<
quote3<F> quote3<F>
@@ -292,9 +293,11 @@ struct le_result3< true,true,F,L1,L2,L3 >
template< template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename T1, typename T2, typename T3 , typename T1, typename T2, typename T3
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3>,Protect,int_<3 >
> >
struct lambda_impl< F<T1,T2,T3>,Protect,3 >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -305,7 +308,7 @@ struct lambda_impl< F<T1,T2,T3>,Protect,3 >
> is_le; > is_le;
typedef typename aux::le_result3< typedef typename aux::le_result3<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3 , l1, l2, l3
@@ -314,11 +317,11 @@ struct lambda_impl< F<T1,T2,T3>,Protect,3 >
template< template<
typename F, typename T1, typename T2, typename T3 typename F, typename T1, typename T2, typename T3
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind3< F,T1,T2,T3 > bind3< F,T1,T2,T3 >
, Protect, 4 , Protect, int_<4>
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -332,16 +335,15 @@ template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename T1, typename T2, typename T3, typename T4 , typename T1, typename T2, typename T3, typename T4
> >
struct lambda< F<T1,T2,T3,T4>,4 > struct lambda< F<T1,T2,T3,T4>,int_<4> >
: lambda_impl< F<T1,T2,T3,T4>,true,4 > : lambda_impl< F<T1,T2,T3,T4>,true_,int_<4> >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3, typename P4 > class F , template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
@@ -357,7 +359,7 @@ template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
struct le_result4< true,false,F,L1,L2,L3,L4 > struct le_result4< true_,false_,F,L1,L2,L3,L4 >
{ {
typedef bind4< typedef bind4<
quote4<F> quote4<F>
@@ -370,7 +372,7 @@ template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
struct le_result4< true,true,F,L1,L2,L3,L4 > struct le_result4< true_,true_,F,L1,L2,L3,L4 >
{ {
typedef protect< bind4< typedef protect< bind4<
quote4<F> quote4<F>
@@ -384,9 +386,11 @@ struct le_result4< true,true,F,L1,L2,L3,L4 >
template< template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename T1, typename T2, typename T3, typename T4 , typename T1, typename T2, typename T3, typename T4
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3,T4>,Protect,int_<4 >
> >
struct lambda_impl< F<T1,T2,T3,T4>,Protect,4 >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -399,7 +403,7 @@ struct lambda_impl< F<T1,T2,T3,T4>,Protect,4 >
> is_le; > is_le;
typedef typename aux::le_result4< typedef typename aux::le_result4<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3, l4 , l1, l2, l3, l4
@@ -408,11 +412,11 @@ struct lambda_impl< F<T1,T2,T3,T4>,Protect,4 >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind4< F,T1,T2,T3,T4 > bind4< F,T1,T2,T3,T4 >
, Protect, 5 , Protect, int_<5>
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -430,16 +434,15 @@ template<
class F class F
, typename T1, typename T2, typename T3, typename T4, typename T5 , typename T1, typename T2, typename T3, typename T4, typename T5
> >
struct lambda< F<T1,T2,T3,T4,T5>,5 > struct lambda< F<T1,T2,T3,T4,T5>,int_<5> >
: lambda_impl< F<T1,T2,T3,T4,T5>,true,5 > : lambda_impl< F<T1,T2,T3,T4,T5>,true_,int_<5> >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
@@ -459,7 +462,7 @@ template<
class F class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
struct le_result5< true,false,F,L1,L2,L3,L4,L5 > struct le_result5< true_,false_,F,L1,L2,L3,L4,L5 >
{ {
typedef bind5< typedef bind5<
quote5<F> quote5<F>
@@ -476,7 +479,7 @@ template<
class F class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
struct le_result5< true,true,F,L1,L2,L3,L4,L5 > struct le_result5< true_,true_,F,L1,L2,L3,L4,L5 >
{ {
typedef protect< bind5< typedef protect< bind5<
quote5<F> quote5<F>
@@ -494,9 +497,11 @@ template<
> >
class F class F
, typename T1, typename T2, typename T3, typename T4, typename T5 , typename T1, typename T2, typename T3, typename T4, typename T5
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3,T4,T5>,Protect,int_<5 >
> >
struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect,5 >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -510,7 +515,7 @@ struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect,5 >
> is_le; > is_le;
typedef typename aux::le_result5< typedef typename aux::le_result5<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3, l4, l5 , l1, l2, l3, l4, l5
@@ -520,11 +525,11 @@ struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect,5 >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, typename T5 , typename T5
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind5< F,T1,T2,T3,T4,T5 > bind5< F,T1,T2,T3,T4,T5 >
, Protect, 6 , Protect, int_<6>
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -535,8 +540,8 @@ struct lambda_impl<
}; };
// special case for 'protect' // special case for 'protect'
template< typename T, bool Protect > template< typename T, typename Protect >
struct lambda_impl< protect<T>,Protect,1 > struct lambda_impl< protect<T>,Protect,int_<1> >
{ {
typedef false_ is_le; typedef false_ is_le;
typedef protect<T> type; typedef protect<T> type;
@@ -546,11 +551,12 @@ struct lambda_impl< protect<T>,Protect,1 >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, typename T5 , typename T5
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind< F,T1,T2,T3,T4,T5 > bind< F,T1,T2,T3,T4,T5 >
, Protect, 6 , Protect
, int_<6>
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -559,9 +565,9 @@ struct lambda_impl<
template< template<
typename F, typename T typename F, typename T
, bool Protect , typename Protect
> >
struct lambda_impl< bind1st<F,T>,Protect,2 > struct lambda_impl< bind1st<F,T>,Protect,int_<2> >
{ {
typedef false_ is_le; typedef false_ is_le;
typedef bind1st< F,T > type; typedef bind1st< F,T > type;
@@ -569,9 +575,9 @@ struct lambda_impl< bind1st<F,T>,Protect,2 >
template< template<
typename F, typename T typename F, typename T
, bool Protect , typename Protect
> >
struct lambda_impl< bind2nd<F,T>,Protect,2 > struct lambda_impl< bind2nd<F,T>,Protect,int_<2> >
{ {
typedef false_ is_le; typedef false_ is_le;
typedef bind2nd< F,T > type; typedef bind2nd< F,T > type;

View File

@@ -55,7 +55,7 @@ struct iter_fold_if_forward_step
typedef typename apply2< Predicate,State,Iterator >::type not_last; typedef typename apply2< Predicate,State,Iterator >::type not_last;
typedef typename iter_fold_if_step_impl< typedef typename iter_fold_if_step_impl<
BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
>::template result_< Iterator,State,ForwardOp,next<Iterator> > impl_; >::template result_< Iterator, State, ForwardOp, mpl::next< Iterator> > impl_;
typedef typename impl_::state state; typedef typename impl_::state state;
typedef typename impl_::iterator iterator; typedef typename impl_::iterator iterator;

View File

@@ -31,7 +31,7 @@ template<> struct lambda_impl<1, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind1< typedef mpl::protect< bind1<
f_ f_
, typename lambda< typename F::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> > type; > > type;
@@ -56,7 +56,7 @@ template<> struct lambda_impl<2, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind2< typedef mpl::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
@@ -82,7 +82,7 @@ template<> struct lambda_impl<3, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind3< typedef mpl::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
@@ -108,7 +108,7 @@ template<> struct lambda_impl<4, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind4< typedef mpl::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
@@ -134,7 +134,7 @@ template<> struct lambda_impl<5, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind5< typedef mpl::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

View File

@@ -18,6 +18,7 @@ struct template_arity_impl<true>
template< typename F > struct result_ template< typename F > struct result_
{ {
static int const value = F::arity; static int const value = F::arity;
}; };
}; };

View File

@@ -6,8 +6,8 @@ namespace mpl {
template< template<
typename T typename T
, bool Protect = false , typename Protect = false_
, long Arity = aux::template_arity<T>::value , typename Arity = int_< aux::template_arity<T>::value >
> >
struct lambda_impl struct lambda_impl
{ {
@@ -17,10 +17,10 @@ struct lambda_impl
template< template<
typename T typename T
, long Arity = aux::template_arity<T>::value , typename Arity = int_< aux::template_arity<T>::value >
> >
struct lambda struct lambda
: lambda_impl< T,false,Arity > : lambda_impl< T,false_,Arity >
{ {
}; };
@@ -43,8 +43,8 @@ struct lambda_or< false,false,false,false,false >
} // namespace aux } // namespace aux
template< int N, bool Protect > template< int N, typename Protect >
struct lambda_impl< arg<N>,Protect,-1 > struct lambda_impl< arg<N>,Protect,int_<-1> >
{ {
typedef true_ is_le; typedef true_ is_le;
typedef arg<N> type; typedef arg<N> type;
@@ -52,11 +52,11 @@ struct lambda_impl< arg<N>,Protect,-1 >
template< template<
typename F typename F
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind0<F> bind0<F>
, Protect, 1 , Protect, int_<1>
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -69,16 +69,15 @@ template<
template< typename P1 > class F template< typename P1 > class F
, typename T1 , typename T1
> >
struct lambda< F<T1>,1 > struct lambda< F<T1>,int_<1> >
: lambda_impl< F<T1>,true,1 > : lambda_impl< F<T1>,true_,int_<1> >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1 > class F , template< typename P1 > class F
, typename L1 , typename L1
> >
@@ -93,7 +92,7 @@ template<
template< typename P1 > class F template< typename P1 > class F
, typename L1 , typename L1
> >
struct le_result1< true,false,F,L1 > struct le_result1< true_,false_,F,L1 >
{ {
typedef bind1< typedef bind1<
quote1<F> quote1<F>
@@ -105,7 +104,7 @@ template<
template< typename P1 > class F template< typename P1 > class F
, typename L1 , typename L1
> >
struct le_result1< true,true,F,L1 > struct le_result1< true_,true_,F,L1 >
{ {
typedef protect< bind1< typedef protect< bind1<
quote1<F> quote1<F>
@@ -118,9 +117,11 @@ struct le_result1< true,true,F,L1 >
template< template<
template< typename P1 > class F template< typename P1 > class F
, typename T1 , typename T1
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1>,Protect,int_<1 >
> >
struct lambda_impl< F<T1>,Protect,1 >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef aux::lambda_or< typedef aux::lambda_or<
@@ -128,7 +129,7 @@ struct lambda_impl< F<T1>,Protect,1 >
> is_le; > is_le;
typedef typename aux::le_result1< typedef typename aux::le_result1<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1 , l1
@@ -137,11 +138,11 @@ struct lambda_impl< F<T1>,Protect,1 >
template< template<
typename F, typename T1 typename F, typename T1
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind1< F,T1 > bind1< F,T1 >
, Protect, 2 , Protect, int_<2>
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -155,16 +156,15 @@ template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename T1, typename T2 , typename T1, typename T2
> >
struct lambda< F<T1,T2>,2 > struct lambda< F<T1,T2>,int_<2> >
: lambda_impl< F<T1,T2>,true,2 > : lambda_impl< F<T1,T2>,true_,int_<2> >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2 > class F , template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
@@ -179,7 +179,7 @@ template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
struct le_result2< true,false,F,L1,L2 > struct le_result2< true_,false_,F,L1,L2 >
{ {
typedef bind2< typedef bind2<
quote2<F> quote2<F>
@@ -191,7 +191,7 @@ template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
struct le_result2< true,true,F,L1,L2 > struct le_result2< true_,true_,F,L1,L2 >
{ {
typedef protect< bind2< typedef protect< bind2<
quote2<F> quote2<F>
@@ -204,9 +204,11 @@ struct le_result2< true,true,F,L1,L2 >
template< template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename T1, typename T2 , typename T1, typename T2
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2>,Protect,int_<2 >
> >
struct lambda_impl< F<T1,T2>,Protect,2 >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -216,7 +218,7 @@ struct lambda_impl< F<T1,T2>,Protect,2 >
> is_le; > is_le;
typedef typename aux::le_result2< typedef typename aux::le_result2<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2 , l1, l2
@@ -225,11 +227,11 @@ struct lambda_impl< F<T1,T2>,Protect,2 >
template< template<
typename F, typename T1, typename T2 typename F, typename T1, typename T2
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind2< F,T1,T2 > bind2< F,T1,T2 >
, Protect, 3 , Protect, int_<3>
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -243,16 +245,15 @@ template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename T1, typename T2, typename T3 , typename T1, typename T2, typename T3
> >
struct lambda< F<T1,T2,T3>,3 > struct lambda< F<T1,T2,T3>,int_<3> >
: lambda_impl< F<T1,T2,T3>,true,3 > : lambda_impl< F<T1,T2,T3>,true_,int_<3> >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3 > class F , template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
@@ -267,7 +268,7 @@ template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
struct le_result3< true,false,F,L1,L2,L3 > struct le_result3< true_,false_,F,L1,L2,L3 >
{ {
typedef bind3< typedef bind3<
quote3<F> quote3<F>
@@ -279,7 +280,7 @@ template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
struct le_result3< true,true,F,L1,L2,L3 > struct le_result3< true_,true_,F,L1,L2,L3 >
{ {
typedef protect< bind3< typedef protect< bind3<
quote3<F> quote3<F>
@@ -292,9 +293,11 @@ struct le_result3< true,true,F,L1,L2,L3 >
template< template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename T1, typename T2, typename T3 , typename T1, typename T2, typename T3
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3>,Protect,int_<3 >
> >
struct lambda_impl< F<T1,T2,T3>,Protect,3 >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -305,7 +308,7 @@ struct lambda_impl< F<T1,T2,T3>,Protect,3 >
> is_le; > is_le;
typedef typename aux::le_result3< typedef typename aux::le_result3<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3 , l1, l2, l3
@@ -314,11 +317,11 @@ struct lambda_impl< F<T1,T2,T3>,Protect,3 >
template< template<
typename F, typename T1, typename T2, typename T3 typename F, typename T1, typename T2, typename T3
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind3< F,T1,T2,T3 > bind3< F,T1,T2,T3 >
, Protect, 4 , Protect, int_<4>
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -332,16 +335,15 @@ template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename T1, typename T2, typename T3, typename T4 , typename T1, typename T2, typename T3, typename T4
> >
struct lambda< F<T1,T2,T3,T4>,4 > struct lambda< F<T1,T2,T3,T4>,int_<4> >
: lambda_impl< F<T1,T2,T3,T4>,true,4 > : lambda_impl< F<T1,T2,T3,T4>,true_,int_<4> >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3, typename P4 > class F , template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
@@ -357,7 +359,7 @@ template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
struct le_result4< true,false,F,L1,L2,L3,L4 > struct le_result4< true_,false_,F,L1,L2,L3,L4 >
{ {
typedef bind4< typedef bind4<
quote4<F> quote4<F>
@@ -370,7 +372,7 @@ template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
struct le_result4< true,true,F,L1,L2,L3,L4 > struct le_result4< true_,true_,F,L1,L2,L3,L4 >
{ {
typedef protect< bind4< typedef protect< bind4<
quote4<F> quote4<F>
@@ -384,9 +386,11 @@ struct le_result4< true,true,F,L1,L2,L3,L4 >
template< template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename T1, typename T2, typename T3, typename T4 , typename T1, typename T2, typename T3, typename T4
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3,T4>,Protect,int_<4 >
> >
struct lambda_impl< F<T1,T2,T3,T4>,Protect,4 >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -399,7 +403,7 @@ struct lambda_impl< F<T1,T2,T3,T4>,Protect,4 >
> is_le; > is_le;
typedef typename aux::le_result4< typedef typename aux::le_result4<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3, l4 , l1, l2, l3, l4
@@ -408,11 +412,11 @@ struct lambda_impl< F<T1,T2,T3,T4>,Protect,4 >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind4< F,T1,T2,T3,T4 > bind4< F,T1,T2,T3,T4 >
, Protect, 5 , Protect, int_<5>
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -430,16 +434,15 @@ template<
class F class F
, typename T1, typename T2, typename T3, typename T4, typename T5 , typename T1, typename T2, typename T3, typename T4, typename T5
> >
struct lambda< F<T1,T2,T3,T4,T5>,5 > struct lambda< F<T1,T2,T3,T4,T5>,int_<5> >
: lambda_impl< F<T1,T2,T3,T4,T5>,true,5 > : lambda_impl< F<T1,T2,T3,T4,T5>,true_,int_<5> >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
@@ -459,7 +462,7 @@ template<
class F class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
struct le_result5< true,false,F,L1,L2,L3,L4,L5 > struct le_result5< true_,false_,F,L1,L2,L3,L4,L5 >
{ {
typedef bind5< typedef bind5<
quote5<F> quote5<F>
@@ -476,7 +479,7 @@ template<
class F class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
struct le_result5< true,true,F,L1,L2,L3,L4,L5 > struct le_result5< true_,true_,F,L1,L2,L3,L4,L5 >
{ {
typedef protect< bind5< typedef protect< bind5<
quote5<F> quote5<F>
@@ -494,9 +497,11 @@ template<
> >
class F class F
, typename T1, typename T2, typename T3, typename T4, typename T5 , typename T1, typename T2, typename T3, typename T4, typename T5
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3,T4,T5>,Protect,int_<5 >
> >
struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect,5 >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -510,7 +515,7 @@ struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect,5 >
> is_le; > is_le;
typedef typename aux::le_result5< typedef typename aux::le_result5<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3, l4, l5 , l1, l2, l3, l4, l5
@@ -520,11 +525,11 @@ struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect,5 >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, typename T5 , typename T5
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind5< F,T1,T2,T3,T4,T5 > bind5< F,T1,T2,T3,T4,T5 >
, Protect, 6 , Protect, int_<6>
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -535,8 +540,8 @@ struct lambda_impl<
}; };
// special case for 'protect' // special case for 'protect'
template< typename T, bool Protect > template< typename T, typename Protect >
struct lambda_impl< protect<T>,Protect,1 > struct lambda_impl< protect<T>,Protect,int_<1> >
{ {
typedef false_ is_le; typedef false_ is_le;
typedef protect<T> type; typedef protect<T> type;
@@ -546,11 +551,12 @@ struct lambda_impl< protect<T>,Protect,1 >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, typename T5 , typename T5
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind< F,T1,T2,T3,T4,T5 > bind< F,T1,T2,T3,T4,T5 >
, Protect, 6 , Protect
, int_<6>
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -559,9 +565,9 @@ struct lambda_impl<
template< template<
typename F, typename T typename F, typename T
, bool Protect , typename Protect
> >
struct lambda_impl< bind1st<F,T>,Protect,2 > struct lambda_impl< bind1st<F,T>,Protect,int_<2> >
{ {
typedef false_ is_le; typedef false_ is_le;
typedef bind1st< F,T > type; typedef bind1st< F,T > type;
@@ -569,9 +575,9 @@ struct lambda_impl< bind1st<F,T>,Protect,2 >
template< template<
typename F, typename T typename F, typename T
, bool Protect , typename Protect
> >
struct lambda_impl< bind2nd<F,T>,Protect,2 > struct lambda_impl< bind2nd<F,T>,Protect,int_<2> >
{ {
typedef false_ is_le; typedef false_ is_le;
typedef bind2nd< F,T > type; typedef bind2nd< F,T > type;

View File

@@ -55,7 +55,7 @@ struct iter_fold_if_forward_step
typedef typename Predicate::template apply< State,Iterator >::type not_last; typedef typename Predicate::template apply< State,Iterator >::type not_last;
typedef typename iter_fold_if_step_impl< typedef typename iter_fold_if_step_impl<
BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
>::template result_< Iterator,State,ForwardOp,next<Iterator> > impl_; >::template result_< Iterator, State, ForwardOp, mpl::next< Iterator> > impl_;
typedef typename impl_::state state; typedef typename impl_::state state;
typedef typename impl_::iterator iterator; typedef typename impl_::iterator iterator;

View File

@@ -31,7 +31,7 @@ template<> struct lambda_impl<1, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind1< typedef mpl::protect< bind1<
f_ f_
, typename lambda< typename F::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> > type; > > type;
@@ -56,7 +56,7 @@ template<> struct lambda_impl<2, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind2< typedef mpl::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
@@ -82,7 +82,7 @@ template<> struct lambda_impl<3, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind3< typedef mpl::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
@@ -108,7 +108,7 @@ template<> struct lambda_impl<4, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind4< typedef mpl::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
@@ -134,7 +134,7 @@ template<> struct lambda_impl<5, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind5< typedef mpl::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

View File

@@ -6,7 +6,7 @@ namespace mpl {
template< template<
typename T typename T
, bool Protect = false , typename Protect = false_
> >
struct lambda_impl struct lambda_impl
@@ -20,7 +20,7 @@ template<
> >
struct lambda struct lambda
: lambda_impl< T,false > : lambda_impl< T,false_ >
{ {
}; };
@@ -43,7 +43,7 @@ struct lambda_or< false,false,false,false,false >
} // namespace aux } // namespace aux
template< int N, bool Protect > template< int N, typename Protect >
struct lambda_impl< arg<N>,Protect > struct lambda_impl< arg<N>,Protect >
{ {
typedef true_ is_le; typedef true_ is_le;
@@ -52,7 +52,7 @@ struct lambda_impl< arg<N>,Protect >
template< template<
typename F typename F
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind0<F> bind0<F>
@@ -70,15 +70,14 @@ template<
, typename T1 , typename T1
> >
struct lambda< F<T1> > struct lambda< F<T1> >
: lambda_impl< F<T1>,true > : lambda_impl< F<T1>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1 > class F , template< typename P1 > class F
, typename L1 , typename L1
> >
@@ -93,7 +92,7 @@ template<
template< typename P1 > class F template< typename P1 > class F
, typename L1 , typename L1
> >
struct le_result1< true,false,F,L1 > struct le_result1< true_,false_,F,L1 >
{ {
typedef bind1< typedef bind1<
quote1<F> quote1<F>
@@ -105,7 +104,7 @@ template<
template< typename P1 > class F template< typename P1 > class F
, typename L1 , typename L1
> >
struct le_result1< true,true,F,L1 > struct le_result1< true_,true_,F,L1 >
{ {
typedef protect< bind1< typedef protect< bind1<
quote1<F> quote1<F>
@@ -118,9 +117,11 @@ struct le_result1< true,true,F,L1 >
template< template<
template< typename P1 > class F template< typename P1 > class F
, typename T1 , typename T1
, bool Protect , typename Protect
>
struct lambda_impl<
F<T1>, Protect
> >
struct lambda_impl< F<T1>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef aux::lambda_or< typedef aux::lambda_or<
@@ -128,7 +129,7 @@ struct lambda_impl< F<T1>,Protect >
> is_le; > is_le;
typedef typename aux::le_result1< typedef typename aux::le_result1<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1 , l1
@@ -137,7 +138,7 @@ struct lambda_impl< F<T1>,Protect >
template< template<
typename F, typename T1 typename F, typename T1
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind1< F,T1 > bind1< F,T1 >
@@ -156,15 +157,14 @@ template<
, typename T1, typename T2 , typename T1, typename T2
> >
struct lambda< F<T1,T2> > struct lambda< F<T1,T2> >
: lambda_impl< F<T1,T2>,true > : lambda_impl< F<T1,T2>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2 > class F , template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
@@ -179,7 +179,7 @@ template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
struct le_result2< true,false,F,L1,L2 > struct le_result2< true_,false_,F,L1,L2 >
{ {
typedef bind2< typedef bind2<
quote2<F> quote2<F>
@@ -191,7 +191,7 @@ template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
struct le_result2< true,true,F,L1,L2 > struct le_result2< true_,true_,F,L1,L2 >
{ {
typedef protect< bind2< typedef protect< bind2<
quote2<F> quote2<F>
@@ -204,9 +204,11 @@ struct le_result2< true,true,F,L1,L2 >
template< template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename T1, typename T2 , typename T1, typename T2
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2 >, Protect
> >
struct lambda_impl< F<T1,T2>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -216,7 +218,7 @@ struct lambda_impl< F<T1,T2>,Protect >
> is_le; > is_le;
typedef typename aux::le_result2< typedef typename aux::le_result2<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2 , l1, l2
@@ -225,7 +227,7 @@ struct lambda_impl< F<T1,T2>,Protect >
template< template<
typename F, typename T1, typename T2 typename F, typename T1, typename T2
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind2< F,T1,T2 > bind2< F,T1,T2 >
@@ -244,15 +246,14 @@ template<
, typename T1, typename T2, typename T3 , typename T1, typename T2, typename T3
> >
struct lambda< F<T1,T2,T3> > struct lambda< F<T1,T2,T3> >
: lambda_impl< F<T1,T2,T3>,true > : lambda_impl< F<T1,T2,T3>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3 > class F , template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
@@ -267,7 +268,7 @@ template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
struct le_result3< true,false,F,L1,L2,L3 > struct le_result3< true_,false_,F,L1,L2,L3 >
{ {
typedef bind3< typedef bind3<
quote3<F> quote3<F>
@@ -279,7 +280,7 @@ template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
struct le_result3< true,true,F,L1,L2,L3 > struct le_result3< true_,true_,F,L1,L2,L3 >
{ {
typedef protect< bind3< typedef protect< bind3<
quote3<F> quote3<F>
@@ -292,9 +293,11 @@ struct le_result3< true,true,F,L1,L2,L3 >
template< template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename T1, typename T2, typename T3 , typename T1, typename T2, typename T3
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3 >, Protect
> >
struct lambda_impl< F<T1,T2,T3>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -305,7 +308,7 @@ struct lambda_impl< F<T1,T2,T3>,Protect >
> is_le; > is_le;
typedef typename aux::le_result3< typedef typename aux::le_result3<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3 , l1, l2, l3
@@ -314,7 +317,7 @@ struct lambda_impl< F<T1,T2,T3>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3 typename F, typename T1, typename T2, typename T3
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind3< F,T1,T2,T3 > bind3< F,T1,T2,T3 >
@@ -333,15 +336,14 @@ template<
, typename T1, typename T2, typename T3, typename T4 , typename T1, typename T2, typename T3, typename T4
> >
struct lambda< F<T1,T2,T3,T4> > struct lambda< F<T1,T2,T3,T4> >
: lambda_impl< F<T1,T2,T3,T4>,true > : lambda_impl< F<T1,T2,T3,T4>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3, typename P4 > class F , template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
@@ -357,7 +359,7 @@ template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
struct le_result4< true,false,F,L1,L2,L3,L4 > struct le_result4< true_,false_,F,L1,L2,L3,L4 >
{ {
typedef bind4< typedef bind4<
quote4<F> quote4<F>
@@ -370,7 +372,7 @@ template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
struct le_result4< true,true,F,L1,L2,L3,L4 > struct le_result4< true_,true_,F,L1,L2,L3,L4 >
{ {
typedef protect< bind4< typedef protect< bind4<
quote4<F> quote4<F>
@@ -384,9 +386,11 @@ struct le_result4< true,true,F,L1,L2,L3,L4 >
template< template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename T1, typename T2, typename T3, typename T4 , typename T1, typename T2, typename T3, typename T4
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3,T4 >, Protect
> >
struct lambda_impl< F<T1,T2,T3,T4>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -399,7 +403,7 @@ struct lambda_impl< F<T1,T2,T3,T4>,Protect >
> is_le; > is_le;
typedef typename aux::le_result4< typedef typename aux::le_result4<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3, l4 , l1, l2, l3, l4
@@ -408,7 +412,7 @@ struct lambda_impl< F<T1,T2,T3,T4>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind4< F,T1,T2,T3,T4 > bind4< F,T1,T2,T3,T4 >
@@ -431,15 +435,14 @@ template<
, typename T1, typename T2, typename T3, typename T4, typename T5 , typename T1, typename T2, typename T3, typename T4, typename T5
> >
struct lambda< F<T1,T2,T3,T4,T5> > struct lambda< F<T1,T2,T3,T4,T5> >
: lambda_impl< F<T1,T2,T3,T4,T5>,true > : lambda_impl< F<T1,T2,T3,T4,T5>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
@@ -459,7 +462,7 @@ template<
class F class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
struct le_result5< true,false,F,L1,L2,L3,L4,L5 > struct le_result5< true_,false_,F,L1,L2,L3,L4,L5 >
{ {
typedef bind5< typedef bind5<
quote5<F> quote5<F>
@@ -476,7 +479,7 @@ template<
class F class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
struct le_result5< true,true,F,L1,L2,L3,L4,L5 > struct le_result5< true_,true_,F,L1,L2,L3,L4,L5 >
{ {
typedef protect< bind5< typedef protect< bind5<
quote5<F> quote5<F>
@@ -494,9 +497,11 @@ template<
> >
class F class F
, typename T1, typename T2, typename T3, typename T4, typename T5 , typename T1, typename T2, typename T3, typename T4, typename T5
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3,T4,T5 >, Protect
> >
struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -510,7 +515,7 @@ struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect >
> is_le; > is_le;
typedef typename aux::le_result5< typedef typename aux::le_result5<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3, l4, l5 , l1, l2, l3, l4, l5
@@ -520,7 +525,7 @@ struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, typename T5 , typename T5
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind5< F,T1,T2,T3,T4,T5 > bind5< F,T1,T2,T3,T4,T5 >
@@ -535,7 +540,7 @@ struct lambda_impl<
}; };
// special case for 'protect' // special case for 'protect'
template< typename T, bool Protect > template< typename T, typename Protect >
struct lambda_impl< protect<T>,Protect > struct lambda_impl< protect<T>,Protect >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -546,11 +551,12 @@ struct lambda_impl< protect<T>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, typename T5 , typename T5
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind< F,T1,T2,T3,T4,T5 > bind< F,T1,T2,T3,T4,T5 >
, Protect , Protect
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -559,7 +565,7 @@ struct lambda_impl<
template< template<
typename F, typename T typename F, typename T
, bool Protect , typename Protect
> >
struct lambda_impl< bind1st<F,T>,Protect > struct lambda_impl< bind1st<F,T>,Protect >
{ {
@@ -569,7 +575,7 @@ struct lambda_impl< bind1st<F,T>,Protect >
template< template<
typename F, typename T typename F, typename T
, bool Protect , typename Protect
> >
struct lambda_impl< bind2nd<F,T>,Protect > struct lambda_impl< bind2nd<F,T>,Protect >
{ {

View File

@@ -55,7 +55,7 @@ struct iter_fold_if_forward_step
typedef typename apply2< Predicate,State,Iterator >::type not_last; typedef typename apply2< Predicate,State,Iterator >::type not_last;
typedef typename iter_fold_if_step_impl< typedef typename iter_fold_if_step_impl<
BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
>::template result_< Iterator,State,ForwardOp,next<Iterator> > impl_; >::template result_< Iterator, State, ForwardOp, mpl::next< Iterator> > impl_;
typedef typename impl_::state state; typedef typename impl_::state state;
typedef typename impl_::iterator iterator; typedef typename impl_::iterator iterator;

View File

@@ -31,7 +31,7 @@ template<> struct lambda_impl<1, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind1< typedef mpl::protect< bind1<
f_ f_
, typename lambda< typename F::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> > type; > > type;
@@ -56,7 +56,7 @@ template<> struct lambda_impl<2, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind2< typedef mpl::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
@@ -82,7 +82,7 @@ template<> struct lambda_impl<3, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind3< typedef mpl::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
@@ -108,7 +108,7 @@ template<> struct lambda_impl<4, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind4< typedef mpl::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
@@ -134,7 +134,7 @@ template<> struct lambda_impl<5, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind5< typedef mpl::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

View File

@@ -6,7 +6,7 @@ namespace mpl {
template< template<
typename T typename T
, bool Protect = false , typename Protect = false_
> >
struct lambda_impl struct lambda_impl
@@ -20,7 +20,7 @@ template<
> >
struct lambda struct lambda
: lambda_impl< T,false > : lambda_impl< T,false_ >
{ {
}; };
@@ -43,7 +43,7 @@ struct lambda_or< false,false,false,false,false >
} // namespace aux } // namespace aux
template< int N, bool Protect > template< int N, typename Protect >
struct lambda_impl< arg<N>,Protect > struct lambda_impl< arg<N>,Protect >
{ {
typedef true_ is_le; typedef true_ is_le;
@@ -52,7 +52,7 @@ struct lambda_impl< arg<N>,Protect >
template< template<
typename F typename F
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind0<F> bind0<F>
@@ -70,15 +70,14 @@ template<
, typename T1 , typename T1
> >
struct lambda< F<T1> > struct lambda< F<T1> >
: lambda_impl< F<T1>,true > : lambda_impl< F<T1>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1 > class F , template< typename P1 > class F
, typename L1 , typename L1
> >
@@ -93,7 +92,7 @@ template<
template< typename P1 > class F template< typename P1 > class F
, typename L1 , typename L1
> >
struct le_result1< true,false,F,L1 > struct le_result1< true_,false_,F,L1 >
{ {
typedef bind1< typedef bind1<
quote1<F> quote1<F>
@@ -105,7 +104,7 @@ template<
template< typename P1 > class F template< typename P1 > class F
, typename L1 , typename L1
> >
struct le_result1< true,true,F,L1 > struct le_result1< true_,true_,F,L1 >
{ {
typedef protect< bind1< typedef protect< bind1<
quote1<F> quote1<F>
@@ -118,9 +117,11 @@ struct le_result1< true,true,F,L1 >
template< template<
template< typename P1 > class F template< typename P1 > class F
, typename T1 , typename T1
, bool Protect , typename Protect
>
struct lambda_impl<
F<T1>, Protect
> >
struct lambda_impl< F<T1>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef aux::lambda_or< typedef aux::lambda_or<
@@ -128,7 +129,7 @@ struct lambda_impl< F<T1>,Protect >
> is_le; > is_le;
typedef typename aux::le_result1< typedef typename aux::le_result1<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1 , l1
@@ -137,7 +138,7 @@ struct lambda_impl< F<T1>,Protect >
template< template<
typename F, typename T1 typename F, typename T1
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind1< F,T1 > bind1< F,T1 >
@@ -156,15 +157,14 @@ template<
, typename T1, typename T2 , typename T1, typename T2
> >
struct lambda< F<T1,T2> > struct lambda< F<T1,T2> >
: lambda_impl< F<T1,T2>,true > : lambda_impl< F<T1,T2>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2 > class F , template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
@@ -179,7 +179,7 @@ template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
struct le_result2< true,false,F,L1,L2 > struct le_result2< true_,false_,F,L1,L2 >
{ {
typedef bind2< typedef bind2<
quote2<F> quote2<F>
@@ -191,7 +191,7 @@ template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
struct le_result2< true,true,F,L1,L2 > struct le_result2< true_,true_,F,L1,L2 >
{ {
typedef protect< bind2< typedef protect< bind2<
quote2<F> quote2<F>
@@ -204,9 +204,11 @@ struct le_result2< true,true,F,L1,L2 >
template< template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename T1, typename T2 , typename T1, typename T2
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2 >, Protect
> >
struct lambda_impl< F<T1,T2>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -216,7 +218,7 @@ struct lambda_impl< F<T1,T2>,Protect >
> is_le; > is_le;
typedef typename aux::le_result2< typedef typename aux::le_result2<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2 , l1, l2
@@ -225,7 +227,7 @@ struct lambda_impl< F<T1,T2>,Protect >
template< template<
typename F, typename T1, typename T2 typename F, typename T1, typename T2
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind2< F,T1,T2 > bind2< F,T1,T2 >
@@ -244,15 +246,14 @@ template<
, typename T1, typename T2, typename T3 , typename T1, typename T2, typename T3
> >
struct lambda< F<T1,T2,T3> > struct lambda< F<T1,T2,T3> >
: lambda_impl< F<T1,T2,T3>,true > : lambda_impl< F<T1,T2,T3>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3 > class F , template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
@@ -267,7 +268,7 @@ template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
struct le_result3< true,false,F,L1,L2,L3 > struct le_result3< true_,false_,F,L1,L2,L3 >
{ {
typedef bind3< typedef bind3<
quote3<F> quote3<F>
@@ -279,7 +280,7 @@ template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
struct le_result3< true,true,F,L1,L2,L3 > struct le_result3< true_,true_,F,L1,L2,L3 >
{ {
typedef protect< bind3< typedef protect< bind3<
quote3<F> quote3<F>
@@ -292,9 +293,11 @@ struct le_result3< true,true,F,L1,L2,L3 >
template< template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename T1, typename T2, typename T3 , typename T1, typename T2, typename T3
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3 >, Protect
> >
struct lambda_impl< F<T1,T2,T3>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -305,7 +308,7 @@ struct lambda_impl< F<T1,T2,T3>,Protect >
> is_le; > is_le;
typedef typename aux::le_result3< typedef typename aux::le_result3<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3 , l1, l2, l3
@@ -314,7 +317,7 @@ struct lambda_impl< F<T1,T2,T3>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3 typename F, typename T1, typename T2, typename T3
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind3< F,T1,T2,T3 > bind3< F,T1,T2,T3 >
@@ -333,15 +336,14 @@ template<
, typename T1, typename T2, typename T3, typename T4 , typename T1, typename T2, typename T3, typename T4
> >
struct lambda< F<T1,T2,T3,T4> > struct lambda< F<T1,T2,T3,T4> >
: lambda_impl< F<T1,T2,T3,T4>,true > : lambda_impl< F<T1,T2,T3,T4>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3, typename P4 > class F , template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
@@ -357,7 +359,7 @@ template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
struct le_result4< true,false,F,L1,L2,L3,L4 > struct le_result4< true_,false_,F,L1,L2,L3,L4 >
{ {
typedef bind4< typedef bind4<
quote4<F> quote4<F>
@@ -370,7 +372,7 @@ template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
struct le_result4< true,true,F,L1,L2,L3,L4 > struct le_result4< true_,true_,F,L1,L2,L3,L4 >
{ {
typedef protect< bind4< typedef protect< bind4<
quote4<F> quote4<F>
@@ -384,9 +386,11 @@ struct le_result4< true,true,F,L1,L2,L3,L4 >
template< template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename T1, typename T2, typename T3, typename T4 , typename T1, typename T2, typename T3, typename T4
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3,T4 >, Protect
> >
struct lambda_impl< F<T1,T2,T3,T4>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -399,7 +403,7 @@ struct lambda_impl< F<T1,T2,T3,T4>,Protect >
> is_le; > is_le;
typedef typename aux::le_result4< typedef typename aux::le_result4<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3, l4 , l1, l2, l3, l4
@@ -408,7 +412,7 @@ struct lambda_impl< F<T1,T2,T3,T4>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind4< F,T1,T2,T3,T4 > bind4< F,T1,T2,T3,T4 >
@@ -431,15 +435,14 @@ template<
, typename T1, typename T2, typename T3, typename T4, typename T5 , typename T1, typename T2, typename T3, typename T4, typename T5
> >
struct lambda< F<T1,T2,T3,T4,T5> > struct lambda< F<T1,T2,T3,T4,T5> >
: lambda_impl< F<T1,T2,T3,T4,T5>,true > : lambda_impl< F<T1,T2,T3,T4,T5>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
@@ -459,7 +462,7 @@ template<
class F class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
struct le_result5< true,false,F,L1,L2,L3,L4,L5 > struct le_result5< true_,false_,F,L1,L2,L3,L4,L5 >
{ {
typedef bind5< typedef bind5<
quote5<F> quote5<F>
@@ -476,7 +479,7 @@ template<
class F class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
struct le_result5< true,true,F,L1,L2,L3,L4,L5 > struct le_result5< true_,true_,F,L1,L2,L3,L4,L5 >
{ {
typedef protect< bind5< typedef protect< bind5<
quote5<F> quote5<F>
@@ -494,9 +497,11 @@ template<
> >
class F class F
, typename T1, typename T2, typename T3, typename T4, typename T5 , typename T1, typename T2, typename T3, typename T4, typename T5
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3,T4,T5 >, Protect
> >
struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -510,7 +515,7 @@ struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect >
> is_le; > is_le;
typedef typename aux::le_result5< typedef typename aux::le_result5<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3, l4, l5 , l1, l2, l3, l4, l5
@@ -520,7 +525,7 @@ struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, typename T5 , typename T5
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind5< F,T1,T2,T3,T4,T5 > bind5< F,T1,T2,T3,T4,T5 >
@@ -535,7 +540,7 @@ struct lambda_impl<
}; };
// special case for 'protect' // special case for 'protect'
template< typename T, bool Protect > template< typename T, typename Protect >
struct lambda_impl< protect<T>,Protect > struct lambda_impl< protect<T>,Protect >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -546,11 +551,12 @@ struct lambda_impl< protect<T>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, typename T5 , typename T5
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind< F,T1,T2,T3,T4,T5 > bind< F,T1,T2,T3,T4,T5 >
, Protect , Protect
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -559,7 +565,7 @@ struct lambda_impl<
template< template<
typename F, typename T typename F, typename T
, bool Protect , typename Protect
> >
struct lambda_impl< bind1st<F,T>,Protect > struct lambda_impl< bind1st<F,T>,Protect >
{ {
@@ -569,7 +575,7 @@ struct lambda_impl< bind1st<F,T>,Protect >
template< template<
typename F, typename T typename F, typename T
, bool Protect , typename Protect
> >
struct lambda_impl< bind2nd<F,T>,Protect > struct lambda_impl< bind2nd<F,T>,Protect >
{ {

View File

@@ -55,7 +55,7 @@ struct iter_fold_if_forward_step
typedef typename apply2< Predicate,State,Iterator >::type not_last; typedef typename apply2< Predicate,State,Iterator >::type not_last;
typedef typename iter_fold_if_step_impl< typedef typename iter_fold_if_step_impl<
BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
>::template result_< Iterator,State,ForwardOp,next<Iterator> > impl_; >::template result_< Iterator, State, ForwardOp, mpl::next< Iterator> > impl_;
typedef typename impl_::state state; typedef typename impl_::state state;
typedef typename impl_::iterator iterator; typedef typename impl_::iterator iterator;

View File

@@ -31,7 +31,7 @@ template<> struct lambda_impl<1, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind1< typedef mpl::protect< bind1<
f_ f_
, typename lambda< typename F::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> > type; > > type;
@@ -56,7 +56,7 @@ template<> struct lambda_impl<2, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind2< typedef mpl::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
@@ -82,7 +82,7 @@ template<> struct lambda_impl<3, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind3< typedef mpl::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
@@ -108,7 +108,7 @@ template<> struct lambda_impl<4, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind4< typedef mpl::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
@@ -134,7 +134,7 @@ template<> struct lambda_impl<5, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind5< typedef mpl::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

View File

@@ -6,7 +6,7 @@ namespace mpl {
template< template<
typename T typename T
, bool Protect = false , typename Protect = false_
> >
struct lambda_impl struct lambda_impl
@@ -20,7 +20,7 @@ template<
> >
struct lambda struct lambda
: lambda_impl< T,false > : lambda_impl< T,false_ >
{ {
}; };
@@ -43,7 +43,7 @@ struct lambda_or< false,false,false,false,false >
} // namespace aux } // namespace aux
template< int N, bool Protect > template< int N, typename Protect >
struct lambda_impl< arg<N>,Protect > struct lambda_impl< arg<N>,Protect >
{ {
typedef true_ is_le; typedef true_ is_le;
@@ -52,7 +52,7 @@ struct lambda_impl< arg<N>,Protect >
template< template<
typename F typename F
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind0<F> bind0<F>
@@ -70,15 +70,14 @@ template<
, typename T1 , typename T1
> >
struct lambda< F<T1> > struct lambda< F<T1> >
: lambda_impl< F<T1>,true > : lambda_impl< F<T1>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1 > class F , template< typename P1 > class F
, typename L1 , typename L1
> >
@@ -93,7 +92,7 @@ template<
template< typename P1 > class F template< typename P1 > class F
, typename L1 , typename L1
> >
struct le_result1< true,false,F,L1 > struct le_result1< true_,false_,F,L1 >
{ {
typedef bind1< typedef bind1<
quote1<F> quote1<F>
@@ -105,7 +104,7 @@ template<
template< typename P1 > class F template< typename P1 > class F
, typename L1 , typename L1
> >
struct le_result1< true,true,F,L1 > struct le_result1< true_,true_,F,L1 >
{ {
typedef protect< bind1< typedef protect< bind1<
quote1<F> quote1<F>
@@ -118,9 +117,11 @@ struct le_result1< true,true,F,L1 >
template< template<
template< typename P1 > class F template< typename P1 > class F
, typename T1 , typename T1
, bool Protect , typename Protect
>
struct lambda_impl<
F<T1>, Protect
> >
struct lambda_impl< F<T1>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef aux::lambda_or< typedef aux::lambda_or<
@@ -128,7 +129,7 @@ struct lambda_impl< F<T1>,Protect >
> is_le; > is_le;
typedef typename aux::le_result1< typedef typename aux::le_result1<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1 , l1
@@ -137,7 +138,7 @@ struct lambda_impl< F<T1>,Protect >
template< template<
typename F, typename T1 typename F, typename T1
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind1< F,T1 > bind1< F,T1 >
@@ -156,15 +157,14 @@ template<
, typename T1, typename T2 , typename T1, typename T2
> >
struct lambda< F<T1,T2> > struct lambda< F<T1,T2> >
: lambda_impl< F<T1,T2>,true > : lambda_impl< F<T1,T2>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2 > class F , template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
@@ -179,7 +179,7 @@ template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
struct le_result2< true,false,F,L1,L2 > struct le_result2< true_,false_,F,L1,L2 >
{ {
typedef bind2< typedef bind2<
quote2<F> quote2<F>
@@ -191,7 +191,7 @@ template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
struct le_result2< true,true,F,L1,L2 > struct le_result2< true_,true_,F,L1,L2 >
{ {
typedef protect< bind2< typedef protect< bind2<
quote2<F> quote2<F>
@@ -204,9 +204,11 @@ struct le_result2< true,true,F,L1,L2 >
template< template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename T1, typename T2 , typename T1, typename T2
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2 >, Protect
> >
struct lambda_impl< F<T1,T2>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -216,7 +218,7 @@ struct lambda_impl< F<T1,T2>,Protect >
> is_le; > is_le;
typedef typename aux::le_result2< typedef typename aux::le_result2<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2 , l1, l2
@@ -225,7 +227,7 @@ struct lambda_impl< F<T1,T2>,Protect >
template< template<
typename F, typename T1, typename T2 typename F, typename T1, typename T2
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind2< F,T1,T2 > bind2< F,T1,T2 >
@@ -244,15 +246,14 @@ template<
, typename T1, typename T2, typename T3 , typename T1, typename T2, typename T3
> >
struct lambda< F<T1,T2,T3> > struct lambda< F<T1,T2,T3> >
: lambda_impl< F<T1,T2,T3>,true > : lambda_impl< F<T1,T2,T3>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3 > class F , template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
@@ -267,7 +268,7 @@ template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
struct le_result3< true,false,F,L1,L2,L3 > struct le_result3< true_,false_,F,L1,L2,L3 >
{ {
typedef bind3< typedef bind3<
quote3<F> quote3<F>
@@ -279,7 +280,7 @@ template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
struct le_result3< true,true,F,L1,L2,L3 > struct le_result3< true_,true_,F,L1,L2,L3 >
{ {
typedef protect< bind3< typedef protect< bind3<
quote3<F> quote3<F>
@@ -292,9 +293,11 @@ struct le_result3< true,true,F,L1,L2,L3 >
template< template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename T1, typename T2, typename T3 , typename T1, typename T2, typename T3
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3 >, Protect
> >
struct lambda_impl< F<T1,T2,T3>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -305,7 +308,7 @@ struct lambda_impl< F<T1,T2,T3>,Protect >
> is_le; > is_le;
typedef typename aux::le_result3< typedef typename aux::le_result3<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3 , l1, l2, l3
@@ -314,7 +317,7 @@ struct lambda_impl< F<T1,T2,T3>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3 typename F, typename T1, typename T2, typename T3
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind3< F,T1,T2,T3 > bind3< F,T1,T2,T3 >
@@ -333,15 +336,14 @@ template<
, typename T1, typename T2, typename T3, typename T4 , typename T1, typename T2, typename T3, typename T4
> >
struct lambda< F<T1,T2,T3,T4> > struct lambda< F<T1,T2,T3,T4> >
: lambda_impl< F<T1,T2,T3,T4>,true > : lambda_impl< F<T1,T2,T3,T4>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3, typename P4 > class F , template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
@@ -357,7 +359,7 @@ template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
struct le_result4< true,false,F,L1,L2,L3,L4 > struct le_result4< true_,false_,F,L1,L2,L3,L4 >
{ {
typedef bind4< typedef bind4<
quote4<F> quote4<F>
@@ -370,7 +372,7 @@ template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
struct le_result4< true,true,F,L1,L2,L3,L4 > struct le_result4< true_,true_,F,L1,L2,L3,L4 >
{ {
typedef protect< bind4< typedef protect< bind4<
quote4<F> quote4<F>
@@ -384,9 +386,11 @@ struct le_result4< true,true,F,L1,L2,L3,L4 >
template< template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename T1, typename T2, typename T3, typename T4 , typename T1, typename T2, typename T3, typename T4
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3,T4 >, Protect
> >
struct lambda_impl< F<T1,T2,T3,T4>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -399,7 +403,7 @@ struct lambda_impl< F<T1,T2,T3,T4>,Protect >
> is_le; > is_le;
typedef typename aux::le_result4< typedef typename aux::le_result4<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3, l4 , l1, l2, l3, l4
@@ -408,7 +412,7 @@ struct lambda_impl< F<T1,T2,T3,T4>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind4< F,T1,T2,T3,T4 > bind4< F,T1,T2,T3,T4 >
@@ -431,15 +435,14 @@ template<
, typename T1, typename T2, typename T3, typename T4, typename T5 , typename T1, typename T2, typename T3, typename T4, typename T5
> >
struct lambda< F<T1,T2,T3,T4,T5> > struct lambda< F<T1,T2,T3,T4,T5> >
: lambda_impl< F<T1,T2,T3,T4,T5>,true > : lambda_impl< F<T1,T2,T3,T4,T5>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
@@ -459,7 +462,7 @@ template<
class F class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
struct le_result5< true,false,F,L1,L2,L3,L4,L5 > struct le_result5< true_,false_,F,L1,L2,L3,L4,L5 >
{ {
typedef bind5< typedef bind5<
quote5<F> quote5<F>
@@ -476,7 +479,7 @@ template<
class F class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
struct le_result5< true,true,F,L1,L2,L3,L4,L5 > struct le_result5< true_,true_,F,L1,L2,L3,L4,L5 >
{ {
typedef protect< bind5< typedef protect< bind5<
quote5<F> quote5<F>
@@ -494,9 +497,11 @@ template<
> >
class F class F
, typename T1, typename T2, typename T3, typename T4, typename T5 , typename T1, typename T2, typename T3, typename T4, typename T5
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3,T4,T5 >, Protect
> >
struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -510,7 +515,7 @@ struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect >
> is_le; > is_le;
typedef typename aux::le_result5< typedef typename aux::le_result5<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3, l4, l5 , l1, l2, l3, l4, l5
@@ -520,7 +525,7 @@ struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, typename T5 , typename T5
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind5< F,T1,T2,T3,T4,T5 > bind5< F,T1,T2,T3,T4,T5 >
@@ -535,7 +540,7 @@ struct lambda_impl<
}; };
// special case for 'protect' // special case for 'protect'
template< typename T, bool Protect > template< typename T, typename Protect >
struct lambda_impl< protect<T>,Protect > struct lambda_impl< protect<T>,Protect >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -546,11 +551,12 @@ struct lambda_impl< protect<T>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, typename T5 , typename T5
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind< F,T1,T2,T3,T4,T5 > bind< F,T1,T2,T3,T4,T5 >
, Protect , Protect
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -559,7 +565,7 @@ struct lambda_impl<
template< template<
typename F, typename T typename F, typename T
, bool Protect , typename Protect
> >
struct lambda_impl< bind1st<F,T>,Protect > struct lambda_impl< bind1st<F,T>,Protect >
{ {
@@ -569,7 +575,7 @@ struct lambda_impl< bind1st<F,T>,Protect >
template< template<
typename F, typename T typename F, typename T
, bool Protect , typename Protect
> >
struct lambda_impl< bind2nd<F,T>,Protect > struct lambda_impl< bind2nd<F,T>,Protect >
{ {

View File

@@ -55,7 +55,7 @@ struct iter_fold_if_forward_step
typedef typename apply2< Predicate,State,Iterator >::type not_last; typedef typename apply2< Predicate,State,Iterator >::type not_last;
typedef typename iter_fold_if_step_impl< typedef typename iter_fold_if_step_impl<
BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
>::template result_< Iterator,State,ForwardOp,next<Iterator> > impl_; >::template result_< Iterator, State, ForwardOp, mpl::next< Iterator> > impl_;
typedef typename impl_::state state; typedef typename impl_::state state;
typedef typename impl_::iterator iterator; typedef typename impl_::iterator iterator;

View File

@@ -31,7 +31,7 @@ template<> struct lambda_impl<1, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind1< typedef mpl::protect< bind1<
f_ f_
, typename lambda< typename F::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> > type; > > type;
@@ -56,7 +56,7 @@ template<> struct lambda_impl<2, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind2< typedef mpl::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
@@ -82,7 +82,7 @@ template<> struct lambda_impl<3, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind3< typedef mpl::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
@@ -108,7 +108,7 @@ template<> struct lambda_impl<4, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind4< typedef mpl::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
@@ -134,7 +134,7 @@ template<> struct lambda_impl<5, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind5< typedef mpl::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

View File

@@ -11,7 +11,7 @@ struct resolve_arg_impl
{ {
template< template<
typename T, typename U1, typename U2, typename U3 typename T, typename U1, typename U2, typename U3
, typename U4 , typename U5 , typename U4, typename U5
> >
struct result_ struct result_
{ {
@@ -24,7 +24,7 @@ struct resolve_arg_impl<true>
{ {
template< template<
typename T, typename U1, typename U2, typename U3 typename T, typename U1, typename U2, typename U3
, typename U4 , typename U5 , typename U4, typename U5
> >
struct result_ struct result_
{ {

View File

@@ -11,7 +11,7 @@ struct resolve_arg_impl
{ {
template< template<
typename T, typename U1, typename U2, typename U3 typename T, typename U1, typename U2, typename U3
, typename U4 , typename U5 , typename U4, typename U5
> >
struct result_ struct result_
{ {
@@ -24,7 +24,7 @@ struct resolve_arg_impl<true>
{ {
template< template<
typename T, typename U1, typename U2, typename U3 typename T, typename U1, typename U2, typename U3
, typename U4 , typename U5 , typename U4, typename U5
> >
struct result_ struct result_
{ {

View File

@@ -6,7 +6,7 @@ namespace mpl {
template< template<
typename T typename T
, bool Protect = false , typename Protect = false_
> >
struct lambda_impl struct lambda_impl
@@ -20,7 +20,7 @@ template<
> >
struct lambda struct lambda
: lambda_impl< T,false > : lambda_impl< T,false_ >
{ {
}; };
@@ -43,7 +43,7 @@ struct lambda_or< false,false,false,false,false >
} // namespace aux } // namespace aux
template< int N, bool Protect > template< int N, typename Protect >
struct lambda_impl< arg<N>,Protect > struct lambda_impl< arg<N>,Protect >
{ {
typedef true_ is_le; typedef true_ is_le;
@@ -52,7 +52,7 @@ struct lambda_impl< arg<N>,Protect >
template< template<
typename F typename F
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind0<F> bind0<F>
@@ -70,15 +70,14 @@ template<
, typename T1 , typename T1
> >
struct lambda< F<T1> > struct lambda< F<T1> >
: lambda_impl< F<T1>,true > : lambda_impl< F<T1>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1 > class F , template< typename P1 > class F
, typename L1 , typename L1
> >
@@ -93,7 +92,7 @@ template<
template< typename P1 > class F template< typename P1 > class F
, typename L1 , typename L1
> >
struct le_result1< true,false,F,L1 > struct le_result1< true_,false_,F,L1 >
{ {
typedef bind1< typedef bind1<
quote1<F> quote1<F>
@@ -105,7 +104,7 @@ template<
template< typename P1 > class F template< typename P1 > class F
, typename L1 , typename L1
> >
struct le_result1< true,true,F,L1 > struct le_result1< true_,true_,F,L1 >
{ {
typedef protect< bind1< typedef protect< bind1<
quote1<F> quote1<F>
@@ -118,9 +117,11 @@ struct le_result1< true,true,F,L1 >
template< template<
template< typename P1 > class F template< typename P1 > class F
, typename T1 , typename T1
, bool Protect , typename Protect
>
struct lambda_impl<
F<T1>, Protect
> >
struct lambda_impl< F<T1>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef aux::lambda_or< typedef aux::lambda_or<
@@ -128,7 +129,7 @@ struct lambda_impl< F<T1>,Protect >
> is_le; > is_le;
typedef typename aux::le_result1< typedef typename aux::le_result1<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1 , l1
@@ -137,7 +138,7 @@ struct lambda_impl< F<T1>,Protect >
template< template<
typename F, typename T1 typename F, typename T1
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind1< F,T1 > bind1< F,T1 >
@@ -156,15 +157,14 @@ template<
, typename T1, typename T2 , typename T1, typename T2
> >
struct lambda< F<T1,T2> > struct lambda< F<T1,T2> >
: lambda_impl< F<T1,T2>,true > : lambda_impl< F<T1,T2>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2 > class F , template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
@@ -179,7 +179,7 @@ template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
struct le_result2< true,false,F,L1,L2 > struct le_result2< true_,false_,F,L1,L2 >
{ {
typedef bind2< typedef bind2<
quote2<F> quote2<F>
@@ -191,7 +191,7 @@ template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
struct le_result2< true,true,F,L1,L2 > struct le_result2< true_,true_,F,L1,L2 >
{ {
typedef protect< bind2< typedef protect< bind2<
quote2<F> quote2<F>
@@ -204,9 +204,11 @@ struct le_result2< true,true,F,L1,L2 >
template< template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename T1, typename T2 , typename T1, typename T2
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2 >, Protect
> >
struct lambda_impl< F<T1,T2>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -216,7 +218,7 @@ struct lambda_impl< F<T1,T2>,Protect >
> is_le; > is_le;
typedef typename aux::le_result2< typedef typename aux::le_result2<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2 , l1, l2
@@ -225,7 +227,7 @@ struct lambda_impl< F<T1,T2>,Protect >
template< template<
typename F, typename T1, typename T2 typename F, typename T1, typename T2
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind2< F,T1,T2 > bind2< F,T1,T2 >
@@ -244,15 +246,14 @@ template<
, typename T1, typename T2, typename T3 , typename T1, typename T2, typename T3
> >
struct lambda< F<T1,T2,T3> > struct lambda< F<T1,T2,T3> >
: lambda_impl< F<T1,T2,T3>,true > : lambda_impl< F<T1,T2,T3>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3 > class F , template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
@@ -267,7 +268,7 @@ template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
struct le_result3< true,false,F,L1,L2,L3 > struct le_result3< true_,false_,F,L1,L2,L3 >
{ {
typedef bind3< typedef bind3<
quote3<F> quote3<F>
@@ -279,7 +280,7 @@ template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
struct le_result3< true,true,F,L1,L2,L3 > struct le_result3< true_,true_,F,L1,L2,L3 >
{ {
typedef protect< bind3< typedef protect< bind3<
quote3<F> quote3<F>
@@ -292,9 +293,11 @@ struct le_result3< true,true,F,L1,L2,L3 >
template< template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename T1, typename T2, typename T3 , typename T1, typename T2, typename T3
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3 >, Protect
> >
struct lambda_impl< F<T1,T2,T3>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -305,7 +308,7 @@ struct lambda_impl< F<T1,T2,T3>,Protect >
> is_le; > is_le;
typedef typename aux::le_result3< typedef typename aux::le_result3<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3 , l1, l2, l3
@@ -314,7 +317,7 @@ struct lambda_impl< F<T1,T2,T3>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3 typename F, typename T1, typename T2, typename T3
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind3< F,T1,T2,T3 > bind3< F,T1,T2,T3 >
@@ -333,15 +336,14 @@ template<
, typename T1, typename T2, typename T3, typename T4 , typename T1, typename T2, typename T3, typename T4
> >
struct lambda< F<T1,T2,T3,T4> > struct lambda< F<T1,T2,T3,T4> >
: lambda_impl< F<T1,T2,T3,T4>,true > : lambda_impl< F<T1,T2,T3,T4>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3, typename P4 > class F , template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
@@ -357,7 +359,7 @@ template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
struct le_result4< true,false,F,L1,L2,L3,L4 > struct le_result4< true_,false_,F,L1,L2,L3,L4 >
{ {
typedef bind4< typedef bind4<
quote4<F> quote4<F>
@@ -370,7 +372,7 @@ template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
struct le_result4< true,true,F,L1,L2,L3,L4 > struct le_result4< true_,true_,F,L1,L2,L3,L4 >
{ {
typedef protect< bind4< typedef protect< bind4<
quote4<F> quote4<F>
@@ -384,9 +386,11 @@ struct le_result4< true,true,F,L1,L2,L3,L4 >
template< template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename T1, typename T2, typename T3, typename T4 , typename T1, typename T2, typename T3, typename T4
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3,T4 >, Protect
> >
struct lambda_impl< F<T1,T2,T3,T4>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -399,7 +403,7 @@ struct lambda_impl< F<T1,T2,T3,T4>,Protect >
> is_le; > is_le;
typedef typename aux::le_result4< typedef typename aux::le_result4<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3, l4 , l1, l2, l3, l4
@@ -408,7 +412,7 @@ struct lambda_impl< F<T1,T2,T3,T4>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind4< F,T1,T2,T3,T4 > bind4< F,T1,T2,T3,T4 >
@@ -431,15 +435,14 @@ template<
, typename T1, typename T2, typename T3, typename T4, typename T5 , typename T1, typename T2, typename T3, typename T4, typename T5
> >
struct lambda< F<T1,T2,T3,T4,T5> > struct lambda< F<T1,T2,T3,T4,T5> >
: lambda_impl< F<T1,T2,T3,T4,T5>,true > : lambda_impl< F<T1,T2,T3,T4,T5>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
@@ -459,7 +462,7 @@ template<
class F class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
struct le_result5< true,false,F,L1,L2,L3,L4,L5 > struct le_result5< true_,false_,F,L1,L2,L3,L4,L5 >
{ {
typedef bind5< typedef bind5<
quote5<F> quote5<F>
@@ -476,7 +479,7 @@ template<
class F class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
struct le_result5< true,true,F,L1,L2,L3,L4,L5 > struct le_result5< true_,true_,F,L1,L2,L3,L4,L5 >
{ {
typedef protect< bind5< typedef protect< bind5<
quote5<F> quote5<F>
@@ -494,9 +497,11 @@ template<
> >
class F class F
, typename T1, typename T2, typename T3, typename T4, typename T5 , typename T1, typename T2, typename T3, typename T4, typename T5
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3,T4,T5 >, Protect
> >
struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -510,7 +515,7 @@ struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect >
> is_le; > is_le;
typedef typename aux::le_result5< typedef typename aux::le_result5<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3, l4, l5 , l1, l2, l3, l4, l5
@@ -520,7 +525,7 @@ struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, typename T5 , typename T5
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind5< F,T1,T2,T3,T4,T5 > bind5< F,T1,T2,T3,T4,T5 >
@@ -535,7 +540,7 @@ struct lambda_impl<
}; };
// special case for 'protect' // special case for 'protect'
template< typename T, bool Protect > template< typename T, typename Protect >
struct lambda_impl< protect<T>,Protect > struct lambda_impl< protect<T>,Protect >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -546,11 +551,12 @@ struct lambda_impl< protect<T>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, typename T5 , typename T5
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind< F,T1,T2,T3,T4,T5 > bind< F,T1,T2,T3,T4,T5 >
, Protect , Protect
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -559,7 +565,7 @@ struct lambda_impl<
template< template<
typename F, typename T typename F, typename T
, bool Protect , typename Protect
> >
struct lambda_impl< bind1st<F,T>,Protect > struct lambda_impl< bind1st<F,T>,Protect >
{ {
@@ -569,7 +575,7 @@ struct lambda_impl< bind1st<F,T>,Protect >
template< template<
typename F, typename T typename F, typename T
, bool Protect , typename Protect
> >
struct lambda_impl< bind2nd<F,T>,Protect > struct lambda_impl< bind2nd<F,T>,Protect >
{ {

View File

@@ -55,7 +55,7 @@ struct iter_fold_if_forward_step
typedef typename Predicate::template apply< State,Iterator >::type not_last; typedef typename Predicate::template apply< State,Iterator >::type not_last;
typedef typename iter_fold_if_step_impl< typedef typename iter_fold_if_step_impl<
BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
>::template result_< Iterator,State,ForwardOp,next<Iterator> > impl_; >::template result_< Iterator, State, ForwardOp, mpl::next< Iterator> > impl_;
typedef typename impl_::state state; typedef typename impl_::state state;
typedef typename impl_::iterator iterator; typedef typename impl_::iterator iterator;

View File

@@ -31,7 +31,7 @@ template<> struct lambda_impl<1, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind1< typedef mpl::protect< bind1<
f_ f_
, typename lambda< typename F::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> > type; > > type;
@@ -56,7 +56,7 @@ template<> struct lambda_impl<2, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind2< typedef mpl::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
@@ -82,7 +82,7 @@ template<> struct lambda_impl<3, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind3< typedef mpl::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
@@ -108,7 +108,7 @@ template<> struct lambda_impl<4, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind4< typedef mpl::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
@@ -134,7 +134,7 @@ template<> struct lambda_impl<5, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind5< typedef mpl::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

View File

@@ -18,6 +18,7 @@ struct template_arity_impl<true>
template< typename F > struct result_ template< typename F > struct result_
{ {
static int const value = F::arity; static int const value = F::arity;
}; };
}; };

View File

@@ -6,7 +6,7 @@ namespace mpl {
template< template<
typename T typename T
, bool Protect = false , typename Protect = false_
> >
struct lambda_impl struct lambda_impl
@@ -20,7 +20,7 @@ template<
> >
struct lambda struct lambda
: lambda_impl< T,false > : lambda_impl< T,false_ >
{ {
}; };
@@ -43,7 +43,7 @@ struct lambda_or< false,false,false,false,false >
} // namespace aux } // namespace aux
template< int N, bool Protect > template< int N, typename Protect >
struct lambda_impl< arg<N>,Protect > struct lambda_impl< arg<N>,Protect >
{ {
typedef true_ is_le; typedef true_ is_le;
@@ -52,7 +52,7 @@ struct lambda_impl< arg<N>,Protect >
template< template<
typename F typename F
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind0<F> bind0<F>
@@ -70,15 +70,14 @@ template<
, typename T1 , typename T1
> >
struct lambda< F<T1> > struct lambda< F<T1> >
: lambda_impl< F<T1>,true > : lambda_impl< F<T1>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1 > class F , template< typename P1 > class F
, typename L1 , typename L1
> >
@@ -93,7 +92,7 @@ template<
template< typename P1 > class F template< typename P1 > class F
, typename L1 , typename L1
> >
struct le_result1< true,false,F,L1 > struct le_result1< true_,false_,F,L1 >
{ {
typedef bind1< typedef bind1<
quote1<F> quote1<F>
@@ -105,7 +104,7 @@ template<
template< typename P1 > class F template< typename P1 > class F
, typename L1 , typename L1
> >
struct le_result1< true,true,F,L1 > struct le_result1< true_,true_,F,L1 >
{ {
typedef protect< bind1< typedef protect< bind1<
quote1<F> quote1<F>
@@ -118,9 +117,11 @@ struct le_result1< true,true,F,L1 >
template< template<
template< typename P1 > class F template< typename P1 > class F
, typename T1 , typename T1
, bool Protect , typename Protect
>
struct lambda_impl<
F<T1>, Protect
> >
struct lambda_impl< F<T1>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef aux::lambda_or< typedef aux::lambda_or<
@@ -128,7 +129,7 @@ struct lambda_impl< F<T1>,Protect >
> is_le; > is_le;
typedef typename aux::le_result1< typedef typename aux::le_result1<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1 , l1
@@ -137,7 +138,7 @@ struct lambda_impl< F<T1>,Protect >
template< template<
typename F, typename T1 typename F, typename T1
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind1< F,T1 > bind1< F,T1 >
@@ -156,15 +157,14 @@ template<
, typename T1, typename T2 , typename T1, typename T2
> >
struct lambda< F<T1,T2> > struct lambda< F<T1,T2> >
: lambda_impl< F<T1,T2>,true > : lambda_impl< F<T1,T2>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2 > class F , template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
@@ -179,7 +179,7 @@ template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
struct le_result2< true,false,F,L1,L2 > struct le_result2< true_,false_,F,L1,L2 >
{ {
typedef bind2< typedef bind2<
quote2<F> quote2<F>
@@ -191,7 +191,7 @@ template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
struct le_result2< true,true,F,L1,L2 > struct le_result2< true_,true_,F,L1,L2 >
{ {
typedef protect< bind2< typedef protect< bind2<
quote2<F> quote2<F>
@@ -204,9 +204,11 @@ struct le_result2< true,true,F,L1,L2 >
template< template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename T1, typename T2 , typename T1, typename T2
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2 >, Protect
> >
struct lambda_impl< F<T1,T2>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -216,7 +218,7 @@ struct lambda_impl< F<T1,T2>,Protect >
> is_le; > is_le;
typedef typename aux::le_result2< typedef typename aux::le_result2<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2 , l1, l2
@@ -225,7 +227,7 @@ struct lambda_impl< F<T1,T2>,Protect >
template< template<
typename F, typename T1, typename T2 typename F, typename T1, typename T2
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind2< F,T1,T2 > bind2< F,T1,T2 >
@@ -244,15 +246,14 @@ template<
, typename T1, typename T2, typename T3 , typename T1, typename T2, typename T3
> >
struct lambda< F<T1,T2,T3> > struct lambda< F<T1,T2,T3> >
: lambda_impl< F<T1,T2,T3>,true > : lambda_impl< F<T1,T2,T3>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3 > class F , template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
@@ -267,7 +268,7 @@ template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
struct le_result3< true,false,F,L1,L2,L3 > struct le_result3< true_,false_,F,L1,L2,L3 >
{ {
typedef bind3< typedef bind3<
quote3<F> quote3<F>
@@ -279,7 +280,7 @@ template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
struct le_result3< true,true,F,L1,L2,L3 > struct le_result3< true_,true_,F,L1,L2,L3 >
{ {
typedef protect< bind3< typedef protect< bind3<
quote3<F> quote3<F>
@@ -292,9 +293,11 @@ struct le_result3< true,true,F,L1,L2,L3 >
template< template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename T1, typename T2, typename T3 , typename T1, typename T2, typename T3
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3 >, Protect
> >
struct lambda_impl< F<T1,T2,T3>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -305,7 +308,7 @@ struct lambda_impl< F<T1,T2,T3>,Protect >
> is_le; > is_le;
typedef typename aux::le_result3< typedef typename aux::le_result3<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3 , l1, l2, l3
@@ -314,7 +317,7 @@ struct lambda_impl< F<T1,T2,T3>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3 typename F, typename T1, typename T2, typename T3
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind3< F,T1,T2,T3 > bind3< F,T1,T2,T3 >
@@ -333,15 +336,14 @@ template<
, typename T1, typename T2, typename T3, typename T4 , typename T1, typename T2, typename T3, typename T4
> >
struct lambda< F<T1,T2,T3,T4> > struct lambda< F<T1,T2,T3,T4> >
: lambda_impl< F<T1,T2,T3,T4>,true > : lambda_impl< F<T1,T2,T3,T4>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3, typename P4 > class F , template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
@@ -357,7 +359,7 @@ template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
struct le_result4< true,false,F,L1,L2,L3,L4 > struct le_result4< true_,false_,F,L1,L2,L3,L4 >
{ {
typedef bind4< typedef bind4<
quote4<F> quote4<F>
@@ -370,7 +372,7 @@ template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
struct le_result4< true,true,F,L1,L2,L3,L4 > struct le_result4< true_,true_,F,L1,L2,L3,L4 >
{ {
typedef protect< bind4< typedef protect< bind4<
quote4<F> quote4<F>
@@ -384,9 +386,11 @@ struct le_result4< true,true,F,L1,L2,L3,L4 >
template< template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename T1, typename T2, typename T3, typename T4 , typename T1, typename T2, typename T3, typename T4
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3,T4 >, Protect
> >
struct lambda_impl< F<T1,T2,T3,T4>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -399,7 +403,7 @@ struct lambda_impl< F<T1,T2,T3,T4>,Protect >
> is_le; > is_le;
typedef typename aux::le_result4< typedef typename aux::le_result4<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3, l4 , l1, l2, l3, l4
@@ -408,7 +412,7 @@ struct lambda_impl< F<T1,T2,T3,T4>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind4< F,T1,T2,T3,T4 > bind4< F,T1,T2,T3,T4 >
@@ -431,15 +435,14 @@ template<
, typename T1, typename T2, typename T3, typename T4, typename T5 , typename T1, typename T2, typename T3, typename T4, typename T5
> >
struct lambda< F<T1,T2,T3,T4,T5> > struct lambda< F<T1,T2,T3,T4,T5> >
: lambda_impl< F<T1,T2,T3,T4,T5>,true > : lambda_impl< F<T1,T2,T3,T4,T5>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
@@ -459,7 +462,7 @@ template<
class F class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
struct le_result5< true,false,F,L1,L2,L3,L4,L5 > struct le_result5< true_,false_,F,L1,L2,L3,L4,L5 >
{ {
typedef bind5< typedef bind5<
quote5<F> quote5<F>
@@ -476,7 +479,7 @@ template<
class F class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
struct le_result5< true,true,F,L1,L2,L3,L4,L5 > struct le_result5< true_,true_,F,L1,L2,L3,L4,L5 >
{ {
typedef protect< bind5< typedef protect< bind5<
quote5<F> quote5<F>
@@ -494,9 +497,11 @@ template<
> >
class F class F
, typename T1, typename T2, typename T3, typename T4, typename T5 , typename T1, typename T2, typename T3, typename T4, typename T5
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3,T4,T5 >, Protect
> >
struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -510,7 +515,7 @@ struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect >
> is_le; > is_le;
typedef typename aux::le_result5< typedef typename aux::le_result5<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3, l4, l5 , l1, l2, l3, l4, l5
@@ -520,7 +525,7 @@ struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, typename T5 , typename T5
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind5< F,T1,T2,T3,T4,T5 > bind5< F,T1,T2,T3,T4,T5 >
@@ -535,7 +540,7 @@ struct lambda_impl<
}; };
// special case for 'protect' // special case for 'protect'
template< typename T, bool Protect > template< typename T, typename Protect >
struct lambda_impl< protect<T>,Protect > struct lambda_impl< protect<T>,Protect >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -546,11 +551,12 @@ struct lambda_impl< protect<T>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, typename T5 , typename T5
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind< F,T1,T2,T3,T4,T5 > bind< F,T1,T2,T3,T4,T5 >
, Protect , Protect
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -559,7 +565,7 @@ struct lambda_impl<
template< template<
typename F, typename T typename F, typename T
, bool Protect , typename Protect
> >
struct lambda_impl< bind1st<F,T>,Protect > struct lambda_impl< bind1st<F,T>,Protect >
{ {
@@ -569,7 +575,7 @@ struct lambda_impl< bind1st<F,T>,Protect >
template< template<
typename F, typename T typename F, typename T
, bool Protect , typename Protect
> >
struct lambda_impl< bind2nd<F,T>,Protect > struct lambda_impl< bind2nd<F,T>,Protect >
{ {

View File

@@ -55,7 +55,7 @@ struct iter_fold_if_forward_step
typedef typename Predicate::template apply< State,Iterator >::type not_last; typedef typename Predicate::template apply< State,Iterator >::type not_last;
typedef typename iter_fold_if_step_impl< typedef typename iter_fold_if_step_impl<
BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
>::template result_< Iterator,State,ForwardOp,mpl::next<Iterator> > impl_; >::template result_< Iterator, State, ForwardOp, mpl::next< Iterator> > impl_;
typedef typename impl_::state state; typedef typename impl_::state state;
typedef typename impl_::iterator iterator; typedef typename impl_::iterator iterator;

View File

@@ -6,7 +6,7 @@ namespace mpl {
template< template<
typename T typename T
, bool Protect = false , typename Protect = false_
> >
struct lambda_impl struct lambda_impl
@@ -20,7 +20,7 @@ template<
> >
struct lambda struct lambda
: lambda_impl< T,false > : lambda_impl< T,false_ >
{ {
}; };
@@ -43,7 +43,7 @@ struct lambda_or< false,false,false,false,false >
} // namespace aux } // namespace aux
template< int N, bool Protect > template< int N, typename Protect >
struct lambda_impl< arg<N>,Protect > struct lambda_impl< arg<N>,Protect >
{ {
typedef true_ is_le; typedef true_ is_le;
@@ -52,7 +52,7 @@ struct lambda_impl< arg<N>,Protect >
template< template<
typename F typename F
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind0<F> bind0<F>
@@ -70,15 +70,14 @@ template<
, typename T1 , typename T1
> >
struct lambda< F<T1> > struct lambda< F<T1> >
: lambda_impl< F<T1>,true > : lambda_impl< F<T1>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1 > class F , template< typename P1 > class F
, typename L1 , typename L1
> >
@@ -93,7 +92,7 @@ template<
template< typename P1 > class F template< typename P1 > class F
, typename L1 , typename L1
> >
struct le_result1< true,false,F,L1 > struct le_result1< true_,false_,F,L1 >
{ {
typedef bind1< typedef bind1<
quote1<F> quote1<F>
@@ -105,7 +104,7 @@ template<
template< typename P1 > class F template< typename P1 > class F
, typename L1 , typename L1
> >
struct le_result1< true,true,F,L1 > struct le_result1< true_,true_,F,L1 >
{ {
typedef protect< bind1< typedef protect< bind1<
quote1<F> quote1<F>
@@ -118,9 +117,11 @@ struct le_result1< true,true,F,L1 >
template< template<
template< typename P1 > class F template< typename P1 > class F
, typename T1 , typename T1
, bool Protect , typename Protect
>
struct lambda_impl<
F<T1>, Protect
> >
struct lambda_impl< F<T1>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef aux::lambda_or< typedef aux::lambda_or<
@@ -128,7 +129,7 @@ struct lambda_impl< F<T1>,Protect >
> is_le; > is_le;
typedef typename aux::le_result1< typedef typename aux::le_result1<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1 , l1
@@ -137,7 +138,7 @@ struct lambda_impl< F<T1>,Protect >
template< template<
typename F, typename T1 typename F, typename T1
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind1< F,T1 > bind1< F,T1 >
@@ -156,15 +157,14 @@ template<
, typename T1, typename T2 , typename T1, typename T2
> >
struct lambda< F<T1,T2> > struct lambda< F<T1,T2> >
: lambda_impl< F<T1,T2>,true > : lambda_impl< F<T1,T2>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2 > class F , template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
@@ -179,7 +179,7 @@ template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
struct le_result2< true,false,F,L1,L2 > struct le_result2< true_,false_,F,L1,L2 >
{ {
typedef bind2< typedef bind2<
quote2<F> quote2<F>
@@ -191,7 +191,7 @@ template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename L1, typename L2 , typename L1, typename L2
> >
struct le_result2< true,true,F,L1,L2 > struct le_result2< true_,true_,F,L1,L2 >
{ {
typedef protect< bind2< typedef protect< bind2<
quote2<F> quote2<F>
@@ -204,9 +204,11 @@ struct le_result2< true,true,F,L1,L2 >
template< template<
template< typename P1, typename P2 > class F template< typename P1, typename P2 > class F
, typename T1, typename T2 , typename T1, typename T2
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2 >, Protect
> >
struct lambda_impl< F<T1,T2>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -216,7 +218,7 @@ struct lambda_impl< F<T1,T2>,Protect >
> is_le; > is_le;
typedef typename aux::le_result2< typedef typename aux::le_result2<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2 , l1, l2
@@ -225,7 +227,7 @@ struct lambda_impl< F<T1,T2>,Protect >
template< template<
typename F, typename T1, typename T2 typename F, typename T1, typename T2
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind2< F,T1,T2 > bind2< F,T1,T2 >
@@ -244,15 +246,14 @@ template<
, typename T1, typename T2, typename T3 , typename T1, typename T2, typename T3
> >
struct lambda< F<T1,T2,T3> > struct lambda< F<T1,T2,T3> >
: lambda_impl< F<T1,T2,T3>,true > : lambda_impl< F<T1,T2,T3>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3 > class F , template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
@@ -267,7 +268,7 @@ template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
struct le_result3< true,false,F,L1,L2,L3 > struct le_result3< true_,false_,F,L1,L2,L3 >
{ {
typedef bind3< typedef bind3<
quote3<F> quote3<F>
@@ -279,7 +280,7 @@ template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename L1, typename L2, typename L3 , typename L1, typename L2, typename L3
> >
struct le_result3< true,true,F,L1,L2,L3 > struct le_result3< true_,true_,F,L1,L2,L3 >
{ {
typedef protect< bind3< typedef protect< bind3<
quote3<F> quote3<F>
@@ -292,9 +293,11 @@ struct le_result3< true,true,F,L1,L2,L3 >
template< template<
template< typename P1, typename P2, typename P3 > class F template< typename P1, typename P2, typename P3 > class F
, typename T1, typename T2, typename T3 , typename T1, typename T2, typename T3
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3 >, Protect
> >
struct lambda_impl< F<T1,T2,T3>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -305,7 +308,7 @@ struct lambda_impl< F<T1,T2,T3>,Protect >
> is_le; > is_le;
typedef typename aux::le_result3< typedef typename aux::le_result3<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3 , l1, l2, l3
@@ -314,7 +317,7 @@ struct lambda_impl< F<T1,T2,T3>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3 typename F, typename T1, typename T2, typename T3
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind3< F,T1,T2,T3 > bind3< F,T1,T2,T3 >
@@ -333,15 +336,14 @@ template<
, typename T1, typename T2, typename T3, typename T4 , typename T1, typename T2, typename T3, typename T4
> >
struct lambda< F<T1,T2,T3,T4> > struct lambda< F<T1,T2,T3,T4> >
: lambda_impl< F<T1,T2,T3,T4>,true > : lambda_impl< F<T1,T2,T3,T4>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3, typename P4 > class F , template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
@@ -357,7 +359,7 @@ template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
struct le_result4< true,false,F,L1,L2,L3,L4 > struct le_result4< true_,false_,F,L1,L2,L3,L4 >
{ {
typedef bind4< typedef bind4<
quote4<F> quote4<F>
@@ -370,7 +372,7 @@ template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename L1, typename L2, typename L3, typename L4 , typename L1, typename L2, typename L3, typename L4
> >
struct le_result4< true,true,F,L1,L2,L3,L4 > struct le_result4< true_,true_,F,L1,L2,L3,L4 >
{ {
typedef protect< bind4< typedef protect< bind4<
quote4<F> quote4<F>
@@ -384,9 +386,11 @@ struct le_result4< true,true,F,L1,L2,L3,L4 >
template< template<
template< typename P1, typename P2, typename P3, typename P4 > class F template< typename P1, typename P2, typename P3, typename P4 > class F
, typename T1, typename T2, typename T3, typename T4 , typename T1, typename T2, typename T3, typename T4
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3,T4 >, Protect
> >
struct lambda_impl< F<T1,T2,T3,T4>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -399,7 +403,7 @@ struct lambda_impl< F<T1,T2,T3,T4>,Protect >
> is_le; > is_le;
typedef typename aux::le_result4< typedef typename aux::le_result4<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3, l4 , l1, l2, l3, l4
@@ -408,7 +412,7 @@ struct lambda_impl< F<T1,T2,T3,T4>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind4< F,T1,T2,T3,T4 > bind4< F,T1,T2,T3,T4 >
@@ -431,15 +435,14 @@ template<
, typename T1, typename T2, typename T3, typename T4, typename T5 , typename T1, typename T2, typename T3, typename T4, typename T5
> >
struct lambda< F<T1,T2,T3,T4,T5> > struct lambda< F<T1,T2,T3,T4,T5> >
: lambda_impl< F<T1,T2,T3,T4,T5>,true > : lambda_impl< F<T1,T2,T3,T4,T5>,true_ >
{ {
}; };
namespace aux { namespace aux {
template< template<
bool IsLE typename IsLE, typename Protect
, bool Protect
, template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
@@ -459,7 +462,7 @@ template<
class F class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
struct le_result5< true,false,F,L1,L2,L3,L4,L5 > struct le_result5< true_,false_,F,L1,L2,L3,L4,L5 >
{ {
typedef bind5< typedef bind5<
quote5<F> quote5<F>
@@ -476,7 +479,7 @@ template<
class F class F
, typename L1, typename L2, typename L3, typename L4, typename L5 , typename L1, typename L2, typename L3, typename L4, typename L5
> >
struct le_result5< true,true,F,L1,L2,L3,L4,L5 > struct le_result5< true_,true_,F,L1,L2,L3,L4,L5 >
{ {
typedef protect< bind5< typedef protect< bind5<
quote5<F> quote5<F>
@@ -494,9 +497,11 @@ template<
> >
class F class F
, typename T1, typename T2, typename T3, typename T4, typename T5 , typename T1, typename T2, typename T3, typename T4, typename T5
, bool Protect , typename Protect
>
struct lambda_impl<
F< T1,T2,T3,T4,T5 >, Protect
> >
struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect >
{ {
typedef lambda_impl<T1> l1; typedef lambda_impl<T1> l1;
typedef lambda_impl<T2> l2; typedef lambda_impl<T2> l2;
@@ -510,7 +515,7 @@ struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect >
> is_le; > is_le;
typedef typename aux::le_result5< typedef typename aux::le_result5<
is_le::value typename is_le::type
, Protect , Protect
, F , F
, l1, l2, l3, l4, l5 , l1, l2, l3, l4, l5
@@ -520,7 +525,7 @@ struct lambda_impl< F<T1,T2,T3,T4,T5>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, typename T5 , typename T5
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind5< F,T1,T2,T3,T4,T5 > bind5< F,T1,T2,T3,T4,T5 >
@@ -535,7 +540,7 @@ struct lambda_impl<
}; };
// special case for 'protect' // special case for 'protect'
template< typename T, bool Protect > template< typename T, typename Protect >
struct lambda_impl< protect<T>,Protect > struct lambda_impl< protect<T>,Protect >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -546,11 +551,12 @@ struct lambda_impl< protect<T>,Protect >
template< template<
typename F, typename T1, typename T2, typename T3, typename T4 typename F, typename T1, typename T2, typename T3, typename T4
, typename T5 , typename T5
, bool Protect , typename Protect
> >
struct lambda_impl< struct lambda_impl<
bind< F,T1,T2,T3,T4,T5 > bind< F,T1,T2,T3,T4,T5 >
, Protect , Protect
> >
{ {
typedef false_ is_le; typedef false_ is_le;
@@ -559,7 +565,7 @@ struct lambda_impl<
template< template<
typename F, typename T typename F, typename T
, bool Protect , typename Protect
> >
struct lambda_impl< bind1st<F,T>,Protect > struct lambda_impl< bind1st<F,T>,Protect >
{ {
@@ -569,7 +575,7 @@ struct lambda_impl< bind1st<F,T>,Protect >
template< template<
typename F, typename T typename F, typename T
, bool Protect , typename Protect
> >
struct lambda_impl< bind2nd<F,T>,Protect > struct lambda_impl< bind2nd<F,T>,Protect >
{ {

View File

@@ -55,7 +55,7 @@ struct iter_fold_if_forward_step
typedef typename Predicate::template apply< State,Iterator >::type not_last; typedef typename Predicate::template apply< State,Iterator >::type not_last;
typedef typename iter_fold_if_step_impl< typedef typename iter_fold_if_step_impl<
BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
>::template result_< Iterator,State,ForwardOp,next<Iterator> > impl_; >::template result_< Iterator, State, ForwardOp, mpl::next< Iterator> > impl_;
typedef typename impl_::state state; typedef typename impl_::state state;
typedef typename impl_::iterator iterator; typedef typename impl_::iterator iterator;

View File

@@ -31,7 +31,7 @@ template<> struct lambda_impl<1, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind1< typedef mpl::protect< bind1<
f_ f_
, typename lambda< typename F::arg1, false >::type , typename lambda< typename F::arg1, false >::type
> > type; > > type;
@@ -56,7 +56,7 @@ template<> struct lambda_impl<2, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind2< typedef mpl::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
@@ -82,7 +82,7 @@ template<> struct lambda_impl<3, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind3< typedef mpl::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
@@ -108,7 +108,7 @@ template<> struct lambda_impl<4, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind4< typedef mpl::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
@@ -134,7 +134,7 @@ template<> struct lambda_impl<5, true>
template< typename F > struct result_ template< typename F > struct result_
{ {
typedef typename F::rebind f_; typedef typename F::rebind f_;
typedef protect< bind5< typedef mpl::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

View File

@@ -19,6 +19,7 @@
#include "boost/mpl/lambda_fwd.hpp" #include "boost/mpl/lambda_fwd.hpp"
#include "boost/mpl/void.hpp" #include "boost/mpl/void.hpp"
#include "boost/mpl/int_fwd.hpp"
#include "boost/mpl/aux_/preprocessor/params.hpp" #include "boost/mpl/aux_/preprocessor/params.hpp"
#include "boost/mpl/aux_/preprocessor/enum.hpp" #include "boost/mpl/aux_/preprocessor/enum.hpp"
#include "boost/mpl/aux_/preprocessor/def_params_tail.hpp" #include "boost/mpl/aux_/preprocessor/def_params_tail.hpp"
@@ -88,7 +89,7 @@ struct lambda< \
template<> \ template<> \
struct lambda< \ struct lambda< \
name< BOOST_MPL_AUX_VOID_SPEC_PARAMS(i) > \ name< BOOST_MPL_AUX_VOID_SPEC_PARAMS(i) > \
BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(-1) \ BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(int_<-1>) \
> \ > \
{ \ { \
typedef name< BOOST_MPL_AUX_VOID_SPEC_PARAMS(i) > type; \ typedef name< BOOST_MPL_AUX_VOID_SPEC_PARAMS(i) > type; \

View File

@@ -29,41 +29,33 @@ namespace boost {
namespace mpl { namespace mpl {
template< template<
typename T, T N1, T N2, T N3 = 0xFFFFFFFF, T N4 = 0xFFFFFFFF, T N5 = 0xFFFFFFFF typename T, T N1, T N2
> >
struct bitand_c struct bitand_c
{ {
BOOST_STATIC_CONSTANT(T, value = (N1 & N2 & N3 & N4 & N5)); BOOST_STATIC_CONSTANT(T, value = (N1 & N2));
#if !defined(__BORLANDC__) #if !defined(__BORLANDC__)
typedef integral_c<T,value> type; typedef integral_c<T,value> type;
#else #else
typedef integral_c<T,(N1 & N2 & N3 & N4 & N5)> type; typedef integral_c<T,(N1 & N2)> type;
#endif #endif
}; };
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T1) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T1)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T2) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T2)
, typename T3 = integral_c<int,0xFFFFFFFF>
, typename T4 = integral_c<int,0xFFFFFFFF>
, typename T5 = integral_c<int,0xFFFFFFFF>
> >
struct bitand_ struct bitand_
: bitand_c< : bitand_c<
BOOST_MPL_AUX_TYPEOF(T1, BOOST_MPL_AUX_TYPEOF(T1, T1::value & T2::value)
T1::value & T2::value & T3::value & T4::value & T5::value
)
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T1)::value , BOOST_MPL_AUX_MSVC_VALUE_WKND(T1)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T2)::value , BOOST_MPL_AUX_MSVC_VALUE_WKND(T2)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T3)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T4)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T5)::value
> >
{ {
BOOST_MPL_AUX_LAMBDA_SUPPORT(5, bitand_, (T1,T2,T3,T4,T5)) BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitand_, (T1,T2))
}; };
BOOST_MPL_AUX_VOID_SPEC_EXT(2,5,bitand_) BOOST_MPL_AUX_VOID_SPEC(2,bitand_)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -29,41 +29,33 @@ namespace boost {
namespace mpl { namespace mpl {
template< template<
typename T, T N1, T N2, T N3 = 0, T N4 = 0, T N5 = 0 typename T, T N1, T N2
> >
struct bitor_c struct bitor_c
{ {
BOOST_STATIC_CONSTANT(T, value = (N1 | N2 | N3 | N4 | N5)); BOOST_STATIC_CONSTANT(T, value = (N1 | N2));
#if !defined(__BORLANDC__) #if !defined(__BORLANDC__)
typedef integral_c<T,value> type; typedef integral_c<T,value> type;
#else #else
typedef integral_c<T,(N1 | N2 | N3 | N4 | N5)> type; typedef integral_c<T,(N1 | N2)> type;
#endif #endif
}; };
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T1) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T1)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T2) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T2)
, typename T3 = integral_c<int,0xFFFFFFFF>
, typename T4 = integral_c<int,0xFFFFFFFF>
, typename T5 = integral_c<int,0xFFFFFFFF>
> >
struct bitor_ struct bitor_
: bitor_c< : bitor_c<
BOOST_MPL_AUX_TYPEOF(T1, BOOST_MPL_AUX_TYPEOF(T1, T1::value | T2::value)
T1::value | T2::value | T3::value | T4::value | T5::value
)
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T1)::value , BOOST_MPL_AUX_MSVC_VALUE_WKND(T1)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T2)::value , BOOST_MPL_AUX_MSVC_VALUE_WKND(T2)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T3)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T4)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T5)::value
> >
{ {
BOOST_MPL_AUX_LAMBDA_SUPPORT(5, bitor_, (T1,T2,T3,T4,T5)) BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitor_, (T1,T2))
}; };
BOOST_MPL_AUX_VOID_SPEC_EXT(2,5,bitor_) BOOST_MPL_AUX_VOID_SPEC(2,bitor_)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -29,41 +29,33 @@ namespace boost {
namespace mpl { namespace mpl {
template< template<
typename T, T N1, T N2, T N3 = 0, T N4 = 0, T N5 = 0 typename T, T N1, T N2
> >
struct bitxor_c struct bitxor_c
{ {
BOOST_STATIC_CONSTANT(T, value = (N1 ^ N2 ^ N3 ^ N4 ^ N5)); BOOST_STATIC_CONSTANT(T, value = (N1 ^ N2));
#if !defined(__BORLANDC__) #if !defined(__BORLANDC__)
typedef integral_c<T,value> type; typedef integral_c<T,value> type;
#else #else
typedef integral_c<T,(N1 ^ N2 ^ N3 ^ N4 ^ N5)> type; typedef integral_c<T,(N1 ^ N2)> type;
#endif #endif
}; };
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T1) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T1)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T2) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T2)
, typename T3 = integral_c<int,0>
, typename T4 = integral_c<int,0>
, typename T5 = integral_c<int,0>
> >
struct bitxor_ struct bitxor_
: bitxor_c< : bitxor_c<
BOOST_MPL_AUX_TYPEOF(T1, BOOST_MPL_AUX_TYPEOF(T1, T1::value ^ T2::value)
T1::value ^ T2::value ^ T3::value ^ T4::value ^ T5::value
)
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T1)::value , BOOST_MPL_AUX_MSVC_VALUE_WKND(T1)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T2)::value , BOOST_MPL_AUX_MSVC_VALUE_WKND(T2)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T3)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T4)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T5)::value
> >
{ {
BOOST_MPL_AUX_LAMBDA_SUPPORT(5, bitxor_, (T1,T2,T3,T4,T5)) BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitxor_, (T1,T2))
}; };
BOOST_MPL_AUX_VOID_SPEC_EXT(2,5,bitxor_) BOOST_MPL_AUX_VOID_SPEC(2,bitxor_)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -3,7 +3,7 @@
#define BOOST_MPL_BOOL_HPP_INCLUDED #define BOOST_MPL_BOOL_HPP_INCLUDED
// + file: boost/mpl/bool.hpp // + file: boost/mpl/bool.hpp
// + last modified: 25/feb/03 // + last modified: 08/mar/03
// Copyright (c) 2000-03 // Copyright (c) 2000-03
// Aleksey Gurtovoy // Aleksey Gurtovoy
@@ -18,6 +18,7 @@
// //
// See http://www.boost.org/libs/mpl for documentation. // See http://www.boost.org/libs/mpl for documentation.
#include "boost/mpl/bool_fwd.hpp"
#include "boost/mpl/aux_/config/static_constant.hpp" #include "boost/mpl/aux_/config/static_constant.hpp"
namespace boost { namespace mpl { namespace boost { namespace mpl {
@@ -30,10 +31,6 @@ template< bool C_ > struct bool_
operator bool() const { return this->value; } operator bool() const { return this->value; }
}; };
// shorcuts
typedef bool_<true> true_;
typedef bool_<false> false_;
}} // namespace boost::mpl }} // namespace boost::mpl
#endif // BOOST_MPL_BOOL_HPP_INCLUDED #endif // BOOST_MPL_BOOL_HPP_INCLUDED

View File

@@ -23,6 +23,8 @@
namespace boost { namespace boost {
namespace mpl { namespace mpl {
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(State) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(State)
@@ -33,7 +35,9 @@ struct copy
{ {
}; };
BOOST_MPL_AUX_VOID_SPEC(3, copy) BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
BOOST_MPL_AUX_ALGORITHM_VOID_SPEC(3, copy)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -26,6 +26,8 @@
namespace boost { namespace boost {
namespace mpl { namespace mpl {
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(State) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(State)
@@ -46,7 +48,9 @@ struct copy_backward_if
>::type type; >::type type;
}; };
BOOST_MPL_AUX_VOID_SPEC(4, copy_backward_if) BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
BOOST_MPL_AUX_ALGORITHM_VOID_SPEC(4, copy_backward_if)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -26,6 +26,8 @@
namespace boost { namespace boost {
namespace mpl { namespace mpl {
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(State) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(State)
@@ -46,7 +48,9 @@ struct copy_if
>::type type; >::type type;
}; };
BOOST_MPL_AUX_VOID_SPEC(4, copy_if) BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
BOOST_MPL_AUX_ALGORITHM_VOID_SPEC(4, copy_if)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -25,6 +25,8 @@
namespace boost { namespace boost {
namespace mpl { namespace mpl {
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T)
@@ -35,7 +37,9 @@ struct count
BOOST_MPL_AUX_LAMBDA_SUPPORT(2,count,(Sequence,T)) BOOST_MPL_AUX_LAMBDA_SUPPORT(2,count,(Sequence,T))
}; };
BOOST_MPL_AUX_VOID_SPEC(2, count) BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
BOOST_MPL_AUX_ALGORITHM_VOID_SPEC(2, count)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -52,6 +52,8 @@ struct next_if
} // namespace aux } // namespace aux
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Predicate) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Predicate)
@@ -71,7 +73,9 @@ struct count_if
BOOST_MPL_AUX_LAMBDA_SUPPORT(2,count_if,(Sequence,Predicate)) BOOST_MPL_AUX_LAMBDA_SUPPORT(2,count_if,(Sequence,Predicate))
}; };
BOOST_MPL_AUX_VOID_SPEC(2, count_if) BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
BOOST_MPL_AUX_ALGORITHM_VOID_SPEC(2, count_if)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -42,7 +42,7 @@ template< typename Category, typename First, typename Last >
struct distance_impl struct distance_impl
: iter_fold< : iter_fold<
iterator_range<First,Last> iterator_range<First,Last>
, integral_c<unsigned long, 0> , integral_c<long, 0>
, next<> , next<>
> >
{ {
@@ -56,6 +56,8 @@ struct distance_impl<ra_iter_tag_,First,Last>
} // namespace aux } // namespace aux
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(First) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(First)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Last) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Last)
@@ -70,6 +72,8 @@ struct distance
>::type type; >::type type;
}; };
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
#else #else
namespace aux { namespace aux {
@@ -81,7 +85,7 @@ struct distance_impl
template< typename First, typename Last > struct result_ template< typename First, typename Last > struct result_
: iter_fold< : iter_fold<
iterator_range<First,Last> iterator_range<First,Last>
, integral_c<unsigned long, 0> , integral_c<long, 0>
, next<> , next<>
> >
{ {
@@ -99,6 +103,8 @@ struct distance_impl<ra_iter_tag_>
} // namespace aux } // namespace aux
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(First) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(First)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Last) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Last)
@@ -113,9 +119,11 @@ struct distance
{ {
}; };
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
BOOST_MPL_AUX_VOID_SPEC(2, distance) BOOST_MPL_AUX_ALGORITHM_VOID_SPEC(2, distance)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -61,6 +61,8 @@ struct equal_pred
} // namespace aux } // namespace aux
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence1) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence1)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence2) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence2)
@@ -97,7 +99,9 @@ struct equal
BOOST_MPL_AUX_LAMBDA_SUPPORT(2,equal,(Sequence1,Sequence2)) BOOST_MPL_AUX_LAMBDA_SUPPORT(2,equal,(Sequence1,Sequence2))
}; };
BOOST_MPL_AUX_VOID_SPEC(2, equal) BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
BOOST_MPL_AUX_ALGORITHM_VOID_SPEC(2, equal)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -25,6 +25,8 @@
namespace boost { namespace boost {
namespace mpl { namespace mpl {
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T)
@@ -35,7 +37,9 @@ struct find
BOOST_MPL_AUX_LAMBDA_SUPPORT(2,find,(Sequence,T)) BOOST_MPL_AUX_LAMBDA_SUPPORT(2,find,(Sequence,T))
}; };
BOOST_MPL_AUX_VOID_SPEC(2, find) BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
BOOST_MPL_AUX_ALGORITHM_VOID_SPEC(2, find)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -54,6 +54,8 @@ struct find_if_pred
} // namespace aux } // namespace aux
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Predicate) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Predicate)
@@ -78,7 +80,9 @@ struct find_if
BOOST_MPL_AUX_LAMBDA_SUPPORT(2,find_if,(Sequence,Predicate)) BOOST_MPL_AUX_LAMBDA_SUPPORT(2,find_if,(Sequence,Predicate))
}; };
BOOST_MPL_AUX_VOID_SPEC(2,find_if) BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
BOOST_MPL_AUX_ALGORITHM_VOID_SPEC(2,find_if)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -1,9 +1,11 @@
//-----------------------------------------------------------------------------
// boost/mpl/if.hpp header file #ifndef BOOST_MPL_IF_HPP_INCLUDED
// See http://www.boost.org for updates, documentation, and revision history. #define BOOST_MPL_IF_HPP_INCLUDED
//-----------------------------------------------------------------------------
// // + file: boost/mpl/if.hpp
// Copyright (c) 2000-02 Boost.org // + last modified: 10/mar/03
// Copyright (c) 2000-03 Boost.org
// //
// Permission to use, copy, modify, distribute and sell this software // Permission to use, copy, modify, distribute and sell this software
// and its documentation for any purpose is hereby granted without fee, // and its documentation for any purpose is hereby granted without fee,
@@ -12,9 +14,8 @@
// supporting documentation. No representations are made about the // supporting documentation. No representations are made about the
// suitability of this software for any purpose. It is provided "as is" // suitability of this software for any purpose. It is provided "as is"
// without express or implied warranty. // without express or implied warranty.
//
#ifndef BOOST_MPL_IF_HPP_INCLUDED // See http://www.boost.org/libs/mpl for documentation.
#define BOOST_MPL_IF_HPP_INCLUDED
#include "boost/mpl/aux_/value_wknd.hpp" #include "boost/mpl/aux_/value_wknd.hpp"
#include "boost/mpl/aux_/ice_cast.hpp" #include "boost/mpl/aux_/ice_cast.hpp"

View File

@@ -18,6 +18,8 @@
// //
// See http://www.boost.org/libs/mpl for documentation. // See http://www.boost.org/libs/mpl for documentation.
#include "boost/mpl/int_fwd.hpp"
#define AUX_WRAPPER_VALUE_TYPE int #define AUX_WRAPPER_VALUE_TYPE int
#include "boost/mpl/aux_/integral_wrapper.hpp" #include "boost/mpl/aux_/integral_wrapper.hpp"

View File

@@ -3,7 +3,7 @@
#define BOOST_MPL_INTEGRAL_C_HPP_INCLUDED #define BOOST_MPL_INTEGRAL_C_HPP_INCLUDED
// + file: boost/mpl/integral_c.hpp // + file: boost/mpl/integral_c.hpp
// + last modified: 25/feb/03 // + last modified: 08/mar/03
// Copyright (c) 2000-03 // Copyright (c) 2000-03
// Aleksey Gurtovoy // Aleksey Gurtovoy
@@ -18,6 +18,7 @@
// //
// See http://www.boost.org/libs/mpl for documentation. // See http://www.boost.org/libs/mpl for documentation.
#include "boost/mpl/integral_c_fwd.hpp"
#include "boost/mpl/aux_/ice_cast.hpp" #include "boost/mpl/aux_/ice_cast.hpp"
#include "boost/mpl/aux_/config/ctps.hpp" #include "boost/mpl/aux_/config/ctps.hpp"
#include "boost/mpl/aux_/config/workaround.hpp" #include "boost/mpl/aux_/config/workaround.hpp"

View File

@@ -24,7 +24,7 @@ namespace boost {
namespace mpl { namespace mpl {
#if !defined(BOOST_MPL_NO_FULL_LAMBDA_SUPPORT) #if !defined(BOOST_MPL_NO_FULL_LAMBDA_SUPPORT)
template< typename T BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(long Arity) > template< typename T BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(typename Arity) >
struct lambda; struct lambda;
#else #else
template< typename T, bool Protect > struct lambda; template< typename T, bool Protect > struct lambda;

View File

@@ -3,7 +3,7 @@
#define BOOST_MPL_LONG_HPP_INCLUDED #define BOOST_MPL_LONG_HPP_INCLUDED
// + file: boost/mpl/long.hpp // + file: boost/mpl/long.hpp
// + last modified: 27/jan/03 // + last modified: 08/mar/03
// Copyright (c) 2000-03 // Copyright (c) 2000-03
// Aleksey Gurtovoy // Aleksey Gurtovoy
@@ -18,6 +18,8 @@
// //
// See http://www.boost.org/libs/mpl for documentation. // See http://www.boost.org/libs/mpl for documentation.
#include "boost/mpl/long_fwd.hpp"
#define AUX_WRAPPER_VALUE_TYPE long #define AUX_WRAPPER_VALUE_TYPE long
#include "boost/mpl/aux_/integral_wrapper.hpp" #include "boost/mpl/aux_/integral_wrapper.hpp"

View File

@@ -51,6 +51,8 @@ namespace mpl {
#if defined(BOOST_MPL_CFG_STRIPPED_DOWN_LOWER_BOUND_IMPL) #if defined(BOOST_MPL_CFG_STRIPPED_DOWN_LOWER_BOUND_IMPL)
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
// agurt 23/oct/02: has a wrong complexity etc., but at least it works // agurt 23/oct/02: has a wrong complexity etc., but at least it works
// feel free to contribute a better implementation! // feel free to contribute a better implementation!
template< template<
@@ -64,6 +66,8 @@ struct lower_bound
{ {
}; };
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
#else #else
namespace aux { namespace aux {
@@ -121,6 +125,8 @@ struct lower_bound_step_impl
} // namespace aux } // namespace aux
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T)
@@ -138,9 +144,11 @@ struct lower_bound
>::type type; >::type type;
}; };
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
#endif // BOOST_MPL_CFG_STRIPPED_DOWN_LOWER_BOUND_IMPL #endif // BOOST_MPL_CFG_STRIPPED_DOWN_LOWER_BOUND_IMPL
BOOST_MPL_AUX_VOID_SPEC(2, lower_bound) BOOST_MPL_AUX_ALGORITHM_VOID_SPEC(2, lower_bound)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -52,6 +52,9 @@ struct select_max
} // namespace aux } // namespace aux
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence)
, typename Predicate = less<_,_> , typename Predicate = less<_,_>
@@ -69,7 +72,9 @@ struct max_element
>::type type; >::type type;
}; };
BOOST_MPL_AUX_VOID_SPEC(1, max_element) BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
BOOST_MPL_AUX_ALGORITHM_VOID_SPEC(1, max_element)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -24,6 +24,8 @@
namespace boost { namespace boost {
namespace mpl { namespace mpl {
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T)
@@ -33,7 +35,9 @@ struct remove
{ {
}; };
BOOST_MPL_AUX_VOID_SPEC(2, remove) BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
BOOST_MPL_AUX_ALGORITHM_VOID_SPEC(2, remove)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -1,9 +1,11 @@
//-----------------------------------------------------------------------------
// boost mpl/remove_if.hpp header file #ifndef BOOST_MPL_REMOVE_IF_HPP_INCLUDED
// See http://www.boost.org for updates, documentation, and revision history. #define BOOST_MPL_REMOVE_IF_HPP_INCLUDED
//-----------------------------------------------------------------------------
// // + file: boost/mpl/remove_if.hpp
// Copyright (c) 2000-02 // + last modified: 10/mar/03
// Copyright (c) 2000-03
// Aleksey Gurtovoy // Aleksey Gurtovoy
// //
// Permission to use, copy, modify, distribute and sell this software // Permission to use, copy, modify, distribute and sell this software
@@ -13,9 +15,8 @@
// supporting documentation. No representations are made about the // supporting documentation. No representations are made about the
// suitability of this software for any purpose. It is provided "as is" // suitability of this software for any purpose. It is provided "as is"
// without express or implied warranty. // without express or implied warranty.
//
#ifndef BOOST_MPL_REMOVE_IF_HPP_INCLUDED // See http://www.boost.org/libs/mpl for documentation.
#define BOOST_MPL_REMOVE_IF_HPP_INCLUDED
#include "boost/mpl/fold_backward.hpp" #include "boost/mpl/fold_backward.hpp"
#include "boost/mpl/clear.hpp" #include "boost/mpl/clear.hpp"
@@ -36,7 +37,7 @@ template< typename Pred > struct remove_if_helper
template< typename Sequence, typename U > struct apply template< typename Sequence, typename U > struct apply
{ {
typedef typename apply_if< typedef typename apply_if<
typename apply1<Pred, U>::type typename apply1<Pred,U>::type
, identity<Sequence> , identity<Sequence>
, push_front<Sequence,U> , push_front<Sequence,U>
>::type type; >::type type;
@@ -45,6 +46,8 @@ template< typename Pred > struct remove_if_helper
} // namespace aux } // namespace aux
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Predicate) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Predicate)
@@ -62,7 +65,9 @@ struct remove_if
>::type type; >::type type;
}; };
BOOST_MPL_AUX_VOID_SPEC(2, remove_if) BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
BOOST_MPL_AUX_ALGORITHM_VOID_SPEC(2, remove_if)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -24,6 +24,8 @@
namespace boost { namespace boost {
namespace mpl { namespace mpl {
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(OldType) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(OldType)
@@ -34,7 +36,9 @@ struct replace
{ {
}; };
BOOST_MPL_AUX_VOID_SPEC(3, replace) BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
BOOST_MPL_AUX_ALGORITHM_VOID_SPEC(3, replace)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -44,6 +44,8 @@ struct replace_if_op
} // namespace aux } // namespace aux
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Predicate) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Predicate)
@@ -61,7 +63,9 @@ struct replace_if
>::type type; >::type type;
}; };
BOOST_MPL_AUX_VOID_SPEC(3, replace_if) BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
BOOST_MPL_AUX_ALGORITHM_VOID_SPEC(3, replace_if)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -25,6 +25,8 @@
namespace boost { namespace boost {
namespace mpl { namespace mpl {
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence)
> >
@@ -41,7 +43,9 @@ struct reverse
>::type type; >::type type;
}; };
BOOST_MPL_AUX_VOID_SPEC(1, reverse) BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
BOOST_MPL_AUX_ALGORITHM_VOID_SPEC(1, reverse)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -1,49 +0,0 @@
//-----------------------------------------------------------------------------
// boost mpl/size_t_c.hpp header file
// See http://www.boost.org for updates, documentation, and revision history.
//-----------------------------------------------------------------------------
//
// Copyright (c) 2000-02
// Aleksey Gurtovoy
//
// Permission to use, copy, modify, distribute and sell this software
// and its documentation for any purpose is hereby granted without fee,
// provided that the above copyright notice appears in all copies and
// that both the copyright notice and this permission notice appear in
// supporting documentation. No representations are made about the
// suitability of this software for any purpose. It is provided "as is"
// without express or implied warranty.
#ifndef BOOST_MPL_SIZE_T_C_HPP_INCLUDED
#define BOOST_MPL_SIZE_T_C_HPP_INCLUDED
#include "boost/mpl/integral_c.hpp"
#include "boost/config.hpp"
#include <cstddef> // for std::size_t
namespace boost {
namespace mpl {
template< std::size_t N > struct size_t_c
#if !defined(__BORLANDC__)
: integral_c< std::size_t,N >
{
typedef size_t_c type;
};
#else
{
BOOST_STATIC_CONSTANT(std::size_t, value = N);
typedef size_t_c type;
typedef std::size_t value_type;
typedef size_t_c<N + 1> next;
typedef size_t_c<N - 1> prior;
operator std::size_t() const { return this->value; }
};
#endif
} // namespace mpl
} // namespace boost
#endif // BOOST_MPL_SIZE_T_C_HPP_INCLUDED

View File

@@ -1,9 +1,11 @@
//-----------------------------------------------------------------------------
// boost mpl/sizeof.hpp header file #ifndef BOOST_MPL_SIZEOF_HPP_INCLUDED
// See http://www.boost.org for updates, documentation, and revision history. #define BOOST_MPL_SIZEOF_HPP_INCLUDED
//-----------------------------------------------------------------------------
// // + file: boost/mpl/sizeof.hpp
// Copyright (c) 2001-02 // + last modified: 08/mar/03
// Copyright (c) 2000-03
// Aleksey Gurtovoy // Aleksey Gurtovoy
// //
// Permission to use, copy, modify, distribute and sell this software // Permission to use, copy, modify, distribute and sell this software
@@ -13,31 +15,26 @@
// supporting documentation. No representations are made about the // supporting documentation. No representations are made about the
// suitability of this software for any purpose. It is provided "as is" // suitability of this software for any purpose. It is provided "as is"
// without express or implied warranty. // without express or implied warranty.
//
// See http://www.boost.org/libs/mpl for documentation.
#ifndef BOOST_MPL_SIZEOF_HPP_INCLUDED #include "boost/mpl/size_t.hpp"
#define BOOST_MPL_SIZEOF_HPP_INCLUDED
#include "boost/mpl/size_t_c.hpp"
#include "boost/mpl/aux_/void_spec.hpp" #include "boost/mpl/aux_/void_spec.hpp"
#include "boost/mpl/aux_/lambda_support.hpp" #include "boost/mpl/aux_/lambda_support.hpp"
#include <cstddef> // for std::size_t namespace boost { namespace mpl {
namespace boost {
namespace mpl {
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T)
> >
struct sizeof_ struct sizeof_
: size_t_c<sizeof(T)> : size_t< sizeof(T) >
{ {
BOOST_MPL_AUX_LAMBDA_SUPPORT(1,sizeof_,(T)) BOOST_MPL_AUX_LAMBDA_SUPPORT(1,sizeof_,(T))
}; };
BOOST_MPL_AUX_VOID_SPEC(1, sizeof_) BOOST_MPL_AUX_VOID_SPEC(1, sizeof_)
} // namespace mpl }} // namespace boost::mpl
} // namespace boost
#endif // BOOST_MPL_SIZEOF_HPP_INCLUDED #endif // BOOST_MPL_SIZEOF_HPP_INCLUDED

View File

@@ -44,6 +44,8 @@ struct transform_op
} // namespace aux } // namespace aux
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Operation) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Operation)
@@ -62,7 +64,9 @@ struct transform
>::type type; >::type type;
}; };
BOOST_MPL_AUX_VOID_SPEC(2, transform) BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
BOOST_MPL_AUX_ALGORITHM_VOID_SPEC(2, transform)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -59,6 +59,8 @@ struct unique_op
BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1,aux::unique_op) BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1,aux::unique_op)
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence)
, typename Predicate = is_same<_,_> , typename Predicate = is_same<_,_>
@@ -85,7 +87,9 @@ struct unique
#endif #endif
}; };
BOOST_MPL_AUX_VOID_SPEC(1, unique) BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
BOOST_MPL_AUX_ALGORITHM_VOID_SPEC(1, unique)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -50,6 +50,8 @@ namespace mpl {
#if defined(BOOST_MPL_CFG_STRIPPED_DOWN_UPPER_BOUND_IMPL) #if defined(BOOST_MPL_CFG_STRIPPED_DOWN_UPPER_BOUND_IMPL)
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
// agurt 23/oct/02: has a wrong complexity etc., but at least it works; // agurt 23/oct/02: has a wrong complexity etc., but at least it works;
// feel free to contribute a better implementation! // feel free to contribute a better implementation!
template< template<
@@ -63,6 +65,8 @@ struct upper_bound
{ {
}; };
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
#else #else
namespace aux { namespace aux {
@@ -119,6 +123,8 @@ struct upper_bound_step_impl
} // namespace aux } // namespace aux
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_BEGIN
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(Sequence)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T)
@@ -136,9 +142,11 @@ struct upper_bound
>::type type; >::type type;
}; };
BOOST_MPL_AUX_AGLORITHM_NAMESPACE_END
#endif // BOOST_MPL_CFG_STRIPPED_DOWN_UPPER_BOUND_IMPL #endif // BOOST_MPL_CFG_STRIPPED_DOWN_UPPER_BOUND_IMPL
BOOST_MPL_AUX_VOID_SPEC(2, upper_bound) BOOST_MPL_AUX_ALGORITHM_VOID_SPEC(2, upper_bound)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost