mirror of
https://github.com/boostorg/mpl.git
synced 2025-08-03 06:44:37 +02:00
add support for tagged lambda invocations
[SVN r19417]
This commit is contained in:
@@ -1,9 +1,15 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// boost mpl/aux_/full_lambda.hpp header file
|
||||
// See http://www.boost.org for updates, documentation, and revision history.
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) 2001-02
|
||||
|
||||
#if !defined(BOOST_PP_IS_ITERATING)
|
||||
|
||||
///// header body
|
||||
|
||||
#ifndef BOOST_MPL_AUX_FULL_LAMBDA_HPP_INCLUDED
|
||||
#define BOOST_MPL_AUX_FULL_LAMBDA_HPP_INCLUDED
|
||||
|
||||
// + file: boost/mpl/full_lambda.hpp
|
||||
// + last modified: 03/aug/03
|
||||
|
||||
// Copyright (c) 2001-03
|
||||
// Aleksey Gurtovoy
|
||||
//
|
||||
// Permission to use, copy, modify, distribute and sell this software
|
||||
@@ -13,13 +19,8 @@
|
||||
// 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.
|
||||
|
||||
#if !defined(BOOST_PP_IS_ITERATING)
|
||||
|
||||
///// header body
|
||||
|
||||
#ifndef BOOST_MPL_AUX_FULL_LAMBDA_HPP_INCLUDED
|
||||
#define BOOST_MPL_AUX_FULL_LAMBDA_HPP_INCLUDED
|
||||
//
|
||||
// See http://www.boost.org/libs/mpl for documentation.
|
||||
|
||||
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
|
||||
# include "boost/mpl/lambda_fwd.hpp"
|
||||
@@ -81,6 +82,7 @@ namespace mpl {
|
||||
|
||||
template<
|
||||
typename T
|
||||
, typename Tag
|
||||
, typename Protect = false_
|
||||
AUX_ARITY_PARAM(typename Arity = int_< aux::template_arity<T>::value >)
|
||||
>
|
||||
@@ -92,10 +94,11 @@ struct lambda_impl
|
||||
|
||||
template<
|
||||
typename T
|
||||
, typename Tag = void_
|
||||
AUX_ARITY_PARAM(typename Arity = int_< aux::template_arity<T>::value >)
|
||||
>
|
||||
struct lambda
|
||||
: lambda_impl<T,false_ AUX_ARITY_PARAM(Arity)>
|
||||
: lambda_impl<T,Tag,false_ AUX_ARITY_PARAM(Arity)>
|
||||
{
|
||||
};
|
||||
|
||||
@@ -121,8 +124,8 @@ struct lambda_or< BOOST_MPL_PP_ENUM(n,false) >
|
||||
} // namespace aux
|
||||
#undef n
|
||||
|
||||
template< int N, typename Protect >
|
||||
struct lambda_impl< arg<N>, Protect AUX_ARITY_PARAM(int_<-1>) >
|
||||
template< int N, typename Tag, typename Protect >
|
||||
struct lambda_impl< arg<N>,Tag,Protect AUX_ARITY_PARAM(int_<-1>) >
|
||||
{
|
||||
BOOST_MPL_AUX_IS_LAMBDA_EXPR(true_)
|
||||
typedef arg<N> type;
|
||||
@@ -135,8 +138,8 @@ struct lambda_impl< arg<N>, Protect AUX_ARITY_PARAM(int_<-1>) >
|
||||
#include BOOST_PP_ITERATE()
|
||||
|
||||
//: special case for 'protect'
|
||||
template< typename T, typename Protect >
|
||||
struct lambda_impl< protect<T>, Protect AUX_ARITY_PARAM(int_<1>) >
|
||||
template< typename T, typename Tag, typename Protect >
|
||||
struct lambda_impl< protect<T>,Tag,Protect AUX_ARITY_PARAM(int_<1>) >
|
||||
{
|
||||
BOOST_MPL_AUX_IS_LAMBDA_EXPR(false_)
|
||||
typedef protect<T> type;
|
||||
@@ -145,10 +148,12 @@ struct lambda_impl< protect<T>, Protect AUX_ARITY_PARAM(int_<1>) >
|
||||
//: specializations for main 'bind', 'bind1st' and 'bind2nd' forms
|
||||
template<
|
||||
typename F, AUX_LAMBDA_BIND_PARAMS(typename T)
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind<F,AUX_LAMBDA_BIND_PARAMS(T)>
|
||||
, Tag
|
||||
, Protect
|
||||
AUX_ARITY_PARAM(int_<BOOST_PP_INC(BOOST_MPL_METAFUNCTION_MAX_ARITY)>)
|
||||
>
|
||||
@@ -159,9 +164,10 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl< bind1st<F,T>, Protect AUX_ARITY_PARAM(int_<2>) >
|
||||
struct lambda_impl< bind1st<F,T>,Tag,Protect AUX_ARITY_PARAM(int_<2>) >
|
||||
{
|
||||
BOOST_MPL_AUX_IS_LAMBDA_EXPR(false_)
|
||||
typedef bind1st<F,T> type;
|
||||
@@ -169,9 +175,10 @@ struct lambda_impl< bind1st<F,T>, Protect AUX_ARITY_PARAM(int_<2>) >
|
||||
|
||||
template<
|
||||
typename F, typename T
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl< bind2nd<F,T>, Protect AUX_ARITY_PARAM(int_<2>) >
|
||||
struct lambda_impl< bind2nd<F,T>,Tag,Protect AUX_ARITY_PARAM(int_<2>) >
|
||||
{
|
||||
BOOST_MPL_AUX_IS_LAMBDA_EXPR(false_)
|
||||
typedef bind2nd<F,T> type;
|
||||
@@ -198,9 +205,10 @@ struct lambda_impl< bind2nd<F,T>, Protect AUX_ARITY_PARAM(int_<2>) >
|
||||
template<
|
||||
template< AUX_LAMBDA_PARAMS(i, typename P) > class F
|
||||
, AUX_LAMBDA_PARAMS(i, typename T)
|
||||
, typename Tag
|
||||
>
|
||||
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(int_<i>) >
|
||||
struct lambda< F<AUX_LAMBDA_PARAMS(i, T)>, Tag AUX_ARITY_PARAM(int_<i>) >
|
||||
: lambda_impl< F<AUX_LAMBDA_PARAMS(i, T)>,Tag,true_ AUX_ARITY_PARAM(int_<i>) >
|
||||
{
|
||||
};
|
||||
|
||||
@@ -209,19 +217,20 @@ struct lambda< F<AUX_LAMBDA_PARAMS(i, T)> AUX_ARITY_PARAM(int_<i>) >
|
||||
template<
|
||||
template< AUX_LAMBDA_PARAMS(i, typename P) > class F
|
||||
, AUX_LAMBDA_PARAMS(i, typename T)
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F<AUX_LAMBDA_PARAMS(i, T)>, Protect AUX_ARITY_PARAM(int_<i>)
|
||||
F<AUX_LAMBDA_PARAMS(i, T)>, Tag, Protect AUX_ARITY_PARAM(int_<i>)
|
||||
>
|
||||
{
|
||||
# define AUX_LAMBDA_INVOCATION(unused, i, T) \
|
||||
BOOST_PP_COMMA_IF(i) \
|
||||
typename lambda_impl< BOOST_PP_CAT(T, BOOST_PP_INC(i)) >::type \
|
||||
typename lambda_impl< BOOST_PP_CAT(T, BOOST_PP_INC(i)),Tag >::type \
|
||||
/**/
|
||||
|
||||
typedef BOOST_PP_CAT(bind,i)<
|
||||
BOOST_PP_CAT(quote,i)<F>
|
||||
BOOST_PP_CAT(quote,i)<F,Tag>
|
||||
, BOOST_MPL_PP_REPEAT(i, AUX_LAMBDA_INVOCATION, T)
|
||||
> type;
|
||||
|
||||
@@ -238,7 +247,7 @@ struct lambda_impl<
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< AUX_LAMBDA_PARAMS(i, typename P) > class F
|
||||
, AUX_LAMBDA_PARAMS(i, typename L)
|
||||
>
|
||||
@@ -251,24 +260,26 @@ struct BOOST_PP_CAT(le_result,i)
|
||||
|
||||
template<
|
||||
template< AUX_LAMBDA_PARAMS(i, typename P) > class F
|
||||
, typename Tag
|
||||
, 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_,Tag,false_,F,AUX_LAMBDA_PARAMS(i, L) >
|
||||
{
|
||||
typedef BOOST_PP_CAT(bind,i)<
|
||||
BOOST_PP_CAT(quote,i)<F>
|
||||
BOOST_PP_CAT(quote,i)<F,Tag>
|
||||
, BOOST_MPL_PP_REPEAT(i, AUX_LAMBDA_RESULT, L)
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< AUX_LAMBDA_PARAMS(i, typename P) > class F
|
||||
, typename Tag
|
||||
, 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_,Tag,true_,F,AUX_LAMBDA_PARAMS(i, L) >
|
||||
{
|
||||
typedef protect< BOOST_PP_CAT(bind,i)<
|
||||
BOOST_PP_CAT(quote,i)<F>
|
||||
BOOST_PP_CAT(quote,i)<F,Tag>
|
||||
, BOOST_MPL_PP_REPEAT(i, AUX_LAMBDA_RESULT, L)
|
||||
> > type;
|
||||
};
|
||||
@@ -276,7 +287,7 @@ struct BOOST_PP_CAT(le_result,i)< true_,true_,F,AUX_LAMBDA_PARAMS(i, L) >
|
||||
} // namespace aux
|
||||
|
||||
# define AUX_LAMBDA_INVOCATION(unused, i, T) \
|
||||
typedef lambda_impl< BOOST_PP_CAT(T, BOOST_PP_INC(i)) > \
|
||||
typedef lambda_impl< BOOST_PP_CAT(T, BOOST_PP_INC(i)), Tag > \
|
||||
BOOST_PP_CAT(l,BOOST_PP_INC(i)); \
|
||||
/**/
|
||||
|
||||
@@ -288,10 +299,11 @@ struct BOOST_PP_CAT(le_result,i)< true_,true_,F,AUX_LAMBDA_PARAMS(i, L) >
|
||||
template<
|
||||
template< AUX_LAMBDA_PARAMS(i, typename P) > class F
|
||||
, AUX_LAMBDA_PARAMS(i, typename T)
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F<AUX_LAMBDA_PARAMS(i, T)>, Protect AUX_ARITY_PARAM(int_<i>)
|
||||
F<AUX_LAMBDA_PARAMS(i, T)>, Tag, Protect AUX_ARITY_PARAM(int_<i>)
|
||||
>
|
||||
{
|
||||
BOOST_MPL_PP_REPEAT(i, AUX_LAMBDA_INVOCATION, T)
|
||||
@@ -301,6 +313,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::BOOST_PP_CAT(le_result,i)<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, AUX_LAMBDA_PARAMS(i, l)
|
||||
@@ -316,10 +329,12 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F AUX_LAMBDA_BIND_N_PARAMS(i, typename T)
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
BOOST_PP_CAT(bind,i)<F AUX_LAMBDA_BIND_N_PARAMS(i, T)>
|
||||
, Tag
|
||||
, Protect AUX_ARITY_PARAM(int_<BOOST_PP_INC(i)>)
|
||||
>
|
||||
{
|
||||
|
@@ -1,9 +1,15 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// boost mpl/lambda_no_ctps.hpp header file
|
||||
// See http://www.boost.org for updates, documentation, and revision history.
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) 2001-02
|
||||
|
||||
#if !defined(BOOST_PP_IS_ITERATING)
|
||||
|
||||
///// header body
|
||||
|
||||
#ifndef BOOST_MPL_AUX_LAMBDA_NO_CTPS_HPP_INCLUDED
|
||||
#define BOOST_MPL_AUX_LAMBDA_NO_CTPS_HPP_INCLUDED
|
||||
|
||||
// + file: boost/mpl/lambda_no_ctps.hpp
|
||||
// + last modified: 03/aug/03
|
||||
|
||||
// Copyright (c) 2001-03
|
||||
// Aleksey Gurtovoy
|
||||
//
|
||||
// Permission to use, copy, modify, distribute and sell this software
|
||||
@@ -13,26 +19,22 @@
|
||||
// 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.
|
||||
|
||||
#if !defined(BOOST_PP_IS_ITERATING)
|
||||
|
||||
///// header body
|
||||
|
||||
#ifndef BOOST_MPL_AUX_LAMBDA_NO_CTPS_HPP_INCLUDED
|
||||
#define BOOST_MPL_AUX_LAMBDA_NO_CTPS_HPP_INCLUDED
|
||||
//
|
||||
// See http://www.boost.org/libs/mpl for documentation.
|
||||
|
||||
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
|
||||
# include "boost/mpl/lambda_fwd.hpp"
|
||||
# include "boost/mpl/bind.hpp"
|
||||
# include "boost/mpl/protect.hpp"
|
||||
# include "boost/mpl/bool.hpp"
|
||||
# include "boost/mpl/void.hpp"
|
||||
# include "boost/mpl/aux_/template_arity.hpp"
|
||||
#endif
|
||||
|
||||
#include "boost/mpl/aux_/config/use_preprocessed.hpp"
|
||||
|
||||
#if !defined(BOOST_MPL_NO_PREPROCESSED_HEADERS) && \
|
||||
!defined(BOOST_MPL_PREPROCESSING_MODE)
|
||||
#if !defined(BOOST_MPL_NO_PREPROCESSED_HEADERS) \
|
||||
&& !defined(BOOST_MPL_PREPROCESSING_MODE)
|
||||
|
||||
# define BOOST_MPL_PREPROCESSED_HEADER lambda_no_ctps.hpp
|
||||
# include "boost/mpl/aux_/include_preprocessed.hpp"
|
||||
@@ -62,7 +64,7 @@ namespace aux {
|
||||
|
||||
template< BOOST_MPL_AUX_NTTP_DECL(int, arity_), bool Protect > struct lambda_impl
|
||||
{
|
||||
template< typename T > struct result_
|
||||
template< typename T, typename Tag > struct result_
|
||||
{
|
||||
typedef T type;
|
||||
};
|
||||
@@ -74,7 +76,11 @@ template< BOOST_MPL_AUX_NTTP_DECL(int, arity_), bool Protect > struct lambda_imp
|
||||
|
||||
} // namespace aux
|
||||
|
||||
template< typename T, bool Protect = true >
|
||||
template<
|
||||
typename T
|
||||
, typename Tag = void_
|
||||
, bool Protect = true
|
||||
>
|
||||
struct lambda
|
||||
: aux::lambda_impl<
|
||||
::boost::mpl::aux::template_arity<T>::value
|
||||
@@ -83,7 +89,7 @@ struct lambda
|
||||
#else
|
||||
, bool_<Protect>::value
|
||||
#endif
|
||||
>::template result_<T>
|
||||
>::template result_<T,Tag>
|
||||
{
|
||||
};
|
||||
|
||||
@@ -101,32 +107,37 @@ struct lambda
|
||||
#define i BOOST_PP_FRAME_ITERATION(1)
|
||||
|
||||
# define AUX_LAMBDA_INVOCATION(unused, i, T) \
|
||||
, typename lambda< \
|
||||
typedef typename lambda< \
|
||||
typename F::BOOST_PP_CAT(arg,BOOST_PP_INC(i)) \
|
||||
, Tag \
|
||||
, false \
|
||||
>::type \
|
||||
>::type BOOST_PP_CAT(arg,BOOST_PP_INC(i)); \
|
||||
/**/
|
||||
|
||||
template<> struct lambda_impl<i,false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
BOOST_MPL_PP_REPEAT(i, AUX_LAMBDA_INVOCATION, T)
|
||||
|
||||
typedef BOOST_PP_CAT(bind,i)<
|
||||
f_
|
||||
BOOST_MPL_PP_REPEAT(i, AUX_LAMBDA_INVOCATION, T)
|
||||
, AUX_LAMBDA_PARAMS(i, arg)
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<i,true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
BOOST_MPL_PP_REPEAT(i, AUX_LAMBDA_INVOCATION, T)
|
||||
|
||||
typedef mpl::protect< BOOST_PP_CAT(bind,i)<
|
||||
f_
|
||||
BOOST_MPL_PP_REPEAT(i, AUX_LAMBDA_INVOCATION, T)
|
||||
, AUX_LAMBDA_PARAMS(i, arg)
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// preprocessed version of 'boost/mpl/aux_/full_lambda.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/lambda_expr.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
namespace boost {
|
||||
@@ -6,6 +6,7 @@ namespace mpl {
|
||||
|
||||
template<
|
||||
typename T
|
||||
, typename Tag
|
||||
, typename Protect = false_
|
||||
, typename Arity = int_< aux::template_arity<T>::value >
|
||||
>
|
||||
@@ -17,10 +18,11 @@ struct lambda_impl
|
||||
|
||||
template<
|
||||
typename T
|
||||
, typename Tag = void_
|
||||
, typename Arity = int_< aux::template_arity<T>::value >
|
||||
>
|
||||
struct lambda
|
||||
: lambda_impl< T,false_,Arity >
|
||||
: lambda_impl< T,Tag,false_,Arity >
|
||||
{
|
||||
};
|
||||
|
||||
@@ -43,8 +45,8 @@ struct lambda_or< false,false,false,false,false >
|
||||
|
||||
} // namespace aux
|
||||
|
||||
template< int N, typename Protect >
|
||||
struct lambda_impl< arg<N>,Protect,int_<-1> >
|
||||
template< int N, typename Tag, typename Protect >
|
||||
struct lambda_impl< arg<N>,Tag,Protect,int_<-1> >
|
||||
{
|
||||
typedef true_ is_le;
|
||||
typedef arg<N> type;
|
||||
@@ -52,10 +54,12 @@ struct lambda_impl< arg<N>,Protect,int_<-1> >
|
||||
|
||||
template<
|
||||
typename F
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind0<F>
|
||||
, Tag
|
||||
, Protect, int_<1>
|
||||
>
|
||||
{
|
||||
@@ -68,16 +72,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename T1
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1>,int_<1> >
|
||||
: lambda_impl< F<T1>,true_,int_<1> >
|
||||
struct lambda< F<T1>,Tag,int_<1> >
|
||||
: lambda_impl< F<T1>,Tag,true_,int_<1> >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1 > class F
|
||||
, typename L1
|
||||
>
|
||||
@@ -90,24 +95,26 @@ struct le_result1
|
||||
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename Tag
|
||||
, typename L1
|
||||
>
|
||||
struct le_result1< true_,false_,F,L1 >
|
||||
struct le_result1< true_,Tag,false_,F,L1 >
|
||||
{
|
||||
typedef bind1<
|
||||
quote1<F>
|
||||
quote1< F,Tag >
|
||||
, typename L1::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename Tag
|
||||
, typename L1
|
||||
>
|
||||
struct le_result1< true_,true_,F,L1 >
|
||||
struct le_result1< true_,Tag,true_,F,L1 >
|
||||
{
|
||||
typedef protect< bind1<
|
||||
quote1<F>
|
||||
quote1< F,Tag >
|
||||
, typename L1::type
|
||||
> > type;
|
||||
};
|
||||
@@ -117,19 +124,21 @@ struct le_result1< true_,true_,F,L1 >
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename T1
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1>,Protect,int_<1 >
|
||||
struct lambda_impl<
|
||||
F< T1>,Tag,Protect,int_<1 >
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value
|
||||
> is_le;
|
||||
|
||||
typedef typename aux::le_result1<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1
|
||||
@@ -138,10 +147,12 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind1< F,T1 >
|
||||
, Tag
|
||||
, Protect, int_<2>
|
||||
>
|
||||
{
|
||||
@@ -155,16 +166,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename T1, typename T2
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2>,int_<2> >
|
||||
: lambda_impl< F<T1,T2>,true_,int_<2> >
|
||||
struct lambda< F<T1,T2>,Tag,int_<2> >
|
||||
: lambda_impl< F<T1,T2>,Tag,true_,int_<2> >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2 > class F
|
||||
, typename L1, typename L2
|
||||
>
|
||||
@@ -177,24 +189,26 @@ struct le_result2
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2
|
||||
>
|
||||
struct le_result2< true_,false_,F,L1,L2 >
|
||||
struct le_result2< true_,Tag,false_,F,L1,L2 >
|
||||
{
|
||||
typedef bind2<
|
||||
quote2<F>
|
||||
quote2< F,Tag >
|
||||
, typename L1::type, typename L2::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2
|
||||
>
|
||||
struct le_result2< true_,true_,F,L1,L2 >
|
||||
struct le_result2< true_,Tag,true_,F,L1,L2 >
|
||||
{
|
||||
typedef protect< bind2<
|
||||
quote2<F>
|
||||
quote2< F,Tag >
|
||||
, typename L1::type, typename L2::type
|
||||
> > type;
|
||||
};
|
||||
@@ -204,14 +218,15 @@ struct le_result2< true_,true_,F,L1,L2 >
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename T1, typename T2
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2>,Protect,int_<2 >
|
||||
struct lambda_impl<
|
||||
F< T1,T2>,Tag,Protect,int_<2 >
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value
|
||||
@@ -219,6 +234,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result2<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2
|
||||
@@ -227,10 +243,12 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind2< F,T1,T2 >
|
||||
, Tag
|
||||
, Protect, int_<3>
|
||||
>
|
||||
{
|
||||
@@ -244,16 +262,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3>,int_<3> >
|
||||
: lambda_impl< F<T1,T2,T3>,true_,int_<3> >
|
||||
struct lambda< F<T1,T2,T3>,Tag,int_<3> >
|
||||
: lambda_impl< F<T1,T2,T3>,Tag,true_,int_<3> >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3 > class F
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
@@ -266,24 +285,26 @@ struct le_result3
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
struct le_result3< true_,false_,F,L1,L2,L3 >
|
||||
struct le_result3< true_,Tag,false_,F,L1,L2,L3 >
|
||||
{
|
||||
typedef bind3<
|
||||
quote3<F>
|
||||
quote3< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
struct le_result3< true_,true_,F,L1,L2,L3 >
|
||||
struct le_result3< true_,Tag,true_,F,L1,L2,L3 >
|
||||
{
|
||||
typedef protect< bind3<
|
||||
quote3<F>
|
||||
quote3< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
> > type;
|
||||
};
|
||||
@@ -293,15 +314,16 @@ struct le_result3< true_,true_,F,L1,L2,L3 >
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3>,Protect,int_<3 >
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3>,Tag,Protect,int_<3 >
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -309,6 +331,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result3<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3
|
||||
@@ -317,10 +340,12 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind3< F,T1,T2,T3 >
|
||||
, Tag
|
||||
, Protect, int_<4>
|
||||
>
|
||||
{
|
||||
@@ -334,16 +359,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3,T4>,int_<4> >
|
||||
: lambda_impl< F<T1,T2,T3,T4>,true_,int_<4> >
|
||||
struct lambda< F<T1,T2,T3,T4>,Tag,int_<4> >
|
||||
: lambda_impl< F<T1,T2,T3,T4>,Tag,true_,int_<4> >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
@@ -357,12 +383,13 @@ struct le_result4
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
struct le_result4< true_,false_,F,L1,L2,L3,L4 >
|
||||
struct le_result4< true_,Tag,false_,F,L1,L2,L3,L4 >
|
||||
{
|
||||
typedef bind4<
|
||||
quote4<F>
|
||||
quote4< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type
|
||||
> type;
|
||||
@@ -370,12 +397,13 @@ struct le_result4< true_,false_,F,L1,L2,L3,L4 >
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
struct le_result4< true_,true_,F,L1,L2,L3,L4 >
|
||||
struct le_result4< true_,Tag,true_,F,L1,L2,L3,L4 >
|
||||
{
|
||||
typedef protect< bind4<
|
||||
quote4<F>
|
||||
quote4< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type
|
||||
> > type;
|
||||
@@ -386,16 +414,17 @@ struct le_result4< true_,true_,F,L1,L2,L3,L4 >
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4>,Protect,int_<4 >
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4>,Tag,Protect,int_<4 >
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl<T4> l4;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
typedef lambda_impl< T4,Tag > l4;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -404,6 +433,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result4<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3, l4
|
||||
@@ -412,10 +442,12 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind4< F,T1,T2,T3,T4 >
|
||||
, Tag
|
||||
, Protect, int_<5>
|
||||
>
|
||||
{
|
||||
@@ -433,16 +465,17 @@ template<
|
||||
>
|
||||
class F
|
||||
, typename T1, typename T2, typename T3, typename T4, typename T5
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3,T4,T5>,int_<5> >
|
||||
: lambda_impl< F<T1,T2,T3,T4,T5>,true_,int_<5> >
|
||||
struct lambda< F<T1,T2,T3,T4,T5>,Tag,int_<5> >
|
||||
: lambda_impl< F<T1,T2,T3,T4,T5>,Tag,true_,int_<5> >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
|
||||
, typename L1, typename L2, typename L3, typename L4, typename L5
|
||||
>
|
||||
@@ -460,12 +493,13 @@ template<
|
||||
, typename P5
|
||||
>
|
||||
class F
|
||||
, typename Tag
|
||||
, 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_,Tag,false_,F,L1,L2,L3,L4,L5 >
|
||||
{
|
||||
typedef bind5<
|
||||
quote5<F>
|
||||
quote5< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type, typename L5::type
|
||||
> type;
|
||||
@@ -477,12 +511,13 @@ template<
|
||||
, typename P5
|
||||
>
|
||||
class F
|
||||
, typename Tag
|
||||
, 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_,Tag,true_,F,L1,L2,L3,L4,L5 >
|
||||
{
|
||||
typedef protect< bind5<
|
||||
quote5<F>
|
||||
quote5< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type, typename L5::type
|
||||
> > type;
|
||||
@@ -497,17 +532,18 @@ template<
|
||||
>
|
||||
class F
|
||||
, typename T1, typename T2, typename T3, typename T4, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4,T5>,Protect,int_<5 >
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4,T5>,Tag,Protect,int_<5 >
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl<T4> l4;
|
||||
typedef lambda_impl<T5> l5;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
typedef lambda_impl< T4,Tag > l4;
|
||||
typedef lambda_impl< T5,Tag > l5;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -516,6 +552,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result5<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3, l4, l5
|
||||
@@ -525,10 +562,12 @@ struct lambda_impl<
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind5< F,T1,T2,T3,T4,T5 >
|
||||
, Tag
|
||||
, Protect, int_<6>
|
||||
>
|
||||
{
|
||||
@@ -540,22 +579,25 @@ struct lambda_impl<
|
||||
};
|
||||
|
||||
// special case for 'protect'
|
||||
template< typename T, typename Protect >
|
||||
struct lambda_impl< protect<T>,Protect,int_<1> >
|
||||
template< typename T, typename Tag, typename Protect >
|
||||
struct lambda_impl< protect<T>,Tag,Protect,int_<1> >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef protect<T> type;
|
||||
};
|
||||
|
||||
// specializations for main 'bind', 'bind1st' and 'bind2nd' forms
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind< F,T1,T2,T3,T4,T5 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
, int_<6>
|
||||
>
|
||||
{
|
||||
@@ -565,9 +607,10 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl< bind1st<F,T>,Protect,int_<2> >
|
||||
struct lambda_impl< bind1st<F,T>,Tag,Protect,int_<2> >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef bind1st< F,T > type;
|
||||
@@ -575,9 +618,10 @@ struct lambda_impl< bind1st<F,T>,Protect,int_<2> >
|
||||
|
||||
template<
|
||||
typename F, typename T
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl< bind2nd<F,T>,Protect,int_<2> >
|
||||
struct lambda_impl< bind2nd<F,T>,Tag,Protect,int_<2> >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef bind2nd< F,T > type;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// preprocessed version of 'boost/mpl/lambda_no_ctps.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/config/use_preprocessed.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
namespace boost {
|
||||
@@ -8,7 +8,7 @@ namespace aux {
|
||||
|
||||
template< int arity_, bool Protect > struct lambda_impl
|
||||
{
|
||||
template< typename T > struct result_
|
||||
template< typename T, typename Tag > struct result_
|
||||
{
|
||||
typedef T type;
|
||||
};
|
||||
@@ -16,142 +16,184 @@ template< int arity_, bool Protect > struct lambda_impl
|
||||
|
||||
template<> struct lambda_impl<1, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef bind1<
|
||||
f_
|
||||
, typename lambda< typename F::arg1, false >::type
|
||||
, arg1
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<1, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef mpl::protect< bind1<
|
||||
f_
|
||||
, typename lambda< typename F::arg1, false >::type
|
||||
, arg1
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<2, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
|
||||
|
||||
typedef bind2<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type
|
||||
, arg1, arg2
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<2, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
|
||||
|
||||
typedef mpl::protect< bind2<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type
|
||||
, arg1, arg2
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<3, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
|
||||
|
||||
typedef bind3<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type
|
||||
, arg1, arg2, arg3
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<3, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
|
||||
|
||||
typedef mpl::protect< bind3<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type
|
||||
, arg1, arg2, arg3
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<4, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
|
||||
|
||||
typedef bind4<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type
|
||||
, arg1, arg2, arg3, arg4
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<4, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
|
||||
|
||||
typedef mpl::protect< bind4<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type
|
||||
, arg1, arg2, arg3, arg4
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<5, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
typedef typename lambda< typename F::arg5, Tag, false >::type arg5;
|
||||
|
||||
|
||||
typedef bind5<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type
|
||||
, arg1, arg2, arg3, arg4, arg5
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<5, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
typedef typename lambda< typename F::arg5, Tag, false >::type arg5;
|
||||
|
||||
|
||||
typedef mpl::protect< bind5<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type
|
||||
, arg1, arg2, arg3, arg4, arg5
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
} // namespace aux
|
||||
|
||||
template< typename T, bool Protect = true >
|
||||
template<
|
||||
typename T
|
||||
, typename Tag = void_
|
||||
, bool Protect = true
|
||||
>
|
||||
struct lambda
|
||||
: aux::lambda_impl<
|
||||
::boost::mpl::aux::template_arity<T>::value
|
||||
|
||||
, Protect
|
||||
|
||||
>::template result_<T>
|
||||
>::template result_< T,Tag >
|
||||
{
|
||||
};
|
||||
|
||||
|
@@ -1,3 +1,3 @@
|
||||
// preprocessed version of 'boost/mpl/quote.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/config/use_preprocessed.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// preprocessed version of 'boost/mpl/aux_/full_lambda.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/lambda_expr.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
namespace boost {
|
||||
@@ -6,6 +6,7 @@ namespace mpl {
|
||||
|
||||
template<
|
||||
typename T
|
||||
, typename Tag
|
||||
, typename Protect = false_
|
||||
, typename Arity = int_< aux::template_arity<T>::value >
|
||||
>
|
||||
@@ -17,10 +18,11 @@ struct lambda_impl
|
||||
|
||||
template<
|
||||
typename T
|
||||
, typename Tag = void_
|
||||
, typename Arity = int_< aux::template_arity<T>::value >
|
||||
>
|
||||
struct lambda
|
||||
: lambda_impl< T,false_,Arity >
|
||||
: lambda_impl< T,Tag,false_,Arity >
|
||||
{
|
||||
};
|
||||
|
||||
@@ -43,8 +45,8 @@ struct lambda_or< false,false,false,false,false >
|
||||
|
||||
} // namespace aux
|
||||
|
||||
template< int N, typename Protect >
|
||||
struct lambda_impl< arg<N>,Protect,int_<-1> >
|
||||
template< int N, typename Tag, typename Protect >
|
||||
struct lambda_impl< arg<N>,Tag,Protect,int_<-1> >
|
||||
{
|
||||
typedef true_ is_le;
|
||||
typedef arg<N> type;
|
||||
@@ -52,10 +54,12 @@ struct lambda_impl< arg<N>,Protect,int_<-1> >
|
||||
|
||||
template<
|
||||
typename F
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind0<F>
|
||||
, Tag
|
||||
, Protect, int_<1>
|
||||
>
|
||||
{
|
||||
@@ -68,16 +72,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename T1
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1>,int_<1> >
|
||||
: lambda_impl< F<T1>,true_,int_<1> >
|
||||
struct lambda< F<T1>,Tag,int_<1> >
|
||||
: lambda_impl< F<T1>,Tag,true_,int_<1> >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1 > class F
|
||||
, typename L1
|
||||
>
|
||||
@@ -90,24 +95,26 @@ struct le_result1
|
||||
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename Tag
|
||||
, typename L1
|
||||
>
|
||||
struct le_result1< true_,false_,F,L1 >
|
||||
struct le_result1< true_,Tag,false_,F,L1 >
|
||||
{
|
||||
typedef bind1<
|
||||
quote1<F>
|
||||
quote1< F,Tag >
|
||||
, typename L1::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename Tag
|
||||
, typename L1
|
||||
>
|
||||
struct le_result1< true_,true_,F,L1 >
|
||||
struct le_result1< true_,Tag,true_,F,L1 >
|
||||
{
|
||||
typedef protect< bind1<
|
||||
quote1<F>
|
||||
quote1< F,Tag >
|
||||
, typename L1::type
|
||||
> > type;
|
||||
};
|
||||
@@ -117,19 +124,21 @@ struct le_result1< true_,true_,F,L1 >
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename T1
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1>,Protect,int_<1 >
|
||||
struct lambda_impl<
|
||||
F< T1>,Tag,Protect,int_<1 >
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value
|
||||
> is_le;
|
||||
|
||||
typedef typename aux::le_result1<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1
|
||||
@@ -138,10 +147,12 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind1< F,T1 >
|
||||
, Tag
|
||||
, Protect, int_<2>
|
||||
>
|
||||
{
|
||||
@@ -155,16 +166,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename T1, typename T2
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2>,int_<2> >
|
||||
: lambda_impl< F<T1,T2>,true_,int_<2> >
|
||||
struct lambda< F<T1,T2>,Tag,int_<2> >
|
||||
: lambda_impl< F<T1,T2>,Tag,true_,int_<2> >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2 > class F
|
||||
, typename L1, typename L2
|
||||
>
|
||||
@@ -177,24 +189,26 @@ struct le_result2
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2
|
||||
>
|
||||
struct le_result2< true_,false_,F,L1,L2 >
|
||||
struct le_result2< true_,Tag,false_,F,L1,L2 >
|
||||
{
|
||||
typedef bind2<
|
||||
quote2<F>
|
||||
quote2< F,Tag >
|
||||
, typename L1::type, typename L2::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2
|
||||
>
|
||||
struct le_result2< true_,true_,F,L1,L2 >
|
||||
struct le_result2< true_,Tag,true_,F,L1,L2 >
|
||||
{
|
||||
typedef protect< bind2<
|
||||
quote2<F>
|
||||
quote2< F,Tag >
|
||||
, typename L1::type, typename L2::type
|
||||
> > type;
|
||||
};
|
||||
@@ -204,14 +218,15 @@ struct le_result2< true_,true_,F,L1,L2 >
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename T1, typename T2
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2>,Protect,int_<2 >
|
||||
struct lambda_impl<
|
||||
F< T1,T2>,Tag,Protect,int_<2 >
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value
|
||||
@@ -219,6 +234,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result2<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2
|
||||
@@ -227,10 +243,12 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind2< F,T1,T2 >
|
||||
, Tag
|
||||
, Protect, int_<3>
|
||||
>
|
||||
{
|
||||
@@ -244,16 +262,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3>,int_<3> >
|
||||
: lambda_impl< F<T1,T2,T3>,true_,int_<3> >
|
||||
struct lambda< F<T1,T2,T3>,Tag,int_<3> >
|
||||
: lambda_impl< F<T1,T2,T3>,Tag,true_,int_<3> >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3 > class F
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
@@ -266,24 +285,26 @@ struct le_result3
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
struct le_result3< true_,false_,F,L1,L2,L3 >
|
||||
struct le_result3< true_,Tag,false_,F,L1,L2,L3 >
|
||||
{
|
||||
typedef bind3<
|
||||
quote3<F>
|
||||
quote3< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
struct le_result3< true_,true_,F,L1,L2,L3 >
|
||||
struct le_result3< true_,Tag,true_,F,L1,L2,L3 >
|
||||
{
|
||||
typedef protect< bind3<
|
||||
quote3<F>
|
||||
quote3< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
> > type;
|
||||
};
|
||||
@@ -293,15 +314,16 @@ struct le_result3< true_,true_,F,L1,L2,L3 >
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3>,Protect,int_<3 >
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3>,Tag,Protect,int_<3 >
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -309,6 +331,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result3<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3
|
||||
@@ -317,10 +340,12 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind3< F,T1,T2,T3 >
|
||||
, Tag
|
||||
, Protect, int_<4>
|
||||
>
|
||||
{
|
||||
@@ -334,16 +359,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3,T4>,int_<4> >
|
||||
: lambda_impl< F<T1,T2,T3,T4>,true_,int_<4> >
|
||||
struct lambda< F<T1,T2,T3,T4>,Tag,int_<4> >
|
||||
: lambda_impl< F<T1,T2,T3,T4>,Tag,true_,int_<4> >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
@@ -357,12 +383,13 @@ struct le_result4
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
struct le_result4< true_,false_,F,L1,L2,L3,L4 >
|
||||
struct le_result4< true_,Tag,false_,F,L1,L2,L3,L4 >
|
||||
{
|
||||
typedef bind4<
|
||||
quote4<F>
|
||||
quote4< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type
|
||||
> type;
|
||||
@@ -370,12 +397,13 @@ struct le_result4< true_,false_,F,L1,L2,L3,L4 >
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
struct le_result4< true_,true_,F,L1,L2,L3,L4 >
|
||||
struct le_result4< true_,Tag,true_,F,L1,L2,L3,L4 >
|
||||
{
|
||||
typedef protect< bind4<
|
||||
quote4<F>
|
||||
quote4< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type
|
||||
> > type;
|
||||
@@ -386,16 +414,17 @@ struct le_result4< true_,true_,F,L1,L2,L3,L4 >
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4>,Protect,int_<4 >
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4>,Tag,Protect,int_<4 >
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl<T4> l4;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
typedef lambda_impl< T4,Tag > l4;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -404,6 +433,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result4<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3, l4
|
||||
@@ -412,10 +442,12 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind4< F,T1,T2,T3,T4 >
|
||||
, Tag
|
||||
, Protect, int_<5>
|
||||
>
|
||||
{
|
||||
@@ -433,16 +465,17 @@ template<
|
||||
>
|
||||
class F
|
||||
, typename T1, typename T2, typename T3, typename T4, typename T5
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3,T4,T5>,int_<5> >
|
||||
: lambda_impl< F<T1,T2,T3,T4,T5>,true_,int_<5> >
|
||||
struct lambda< F<T1,T2,T3,T4,T5>,Tag,int_<5> >
|
||||
: lambda_impl< F<T1,T2,T3,T4,T5>,Tag,true_,int_<5> >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
|
||||
, typename L1, typename L2, typename L3, typename L4, typename L5
|
||||
>
|
||||
@@ -460,12 +493,13 @@ template<
|
||||
, typename P5
|
||||
>
|
||||
class F
|
||||
, typename Tag
|
||||
, 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_,Tag,false_,F,L1,L2,L3,L4,L5 >
|
||||
{
|
||||
typedef bind5<
|
||||
quote5<F>
|
||||
quote5< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type, typename L5::type
|
||||
> type;
|
||||
@@ -477,12 +511,13 @@ template<
|
||||
, typename P5
|
||||
>
|
||||
class F
|
||||
, typename Tag
|
||||
, 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_,Tag,true_,F,L1,L2,L3,L4,L5 >
|
||||
{
|
||||
typedef protect< bind5<
|
||||
quote5<F>
|
||||
quote5< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type, typename L5::type
|
||||
> > type;
|
||||
@@ -497,17 +532,18 @@ template<
|
||||
>
|
||||
class F
|
||||
, typename T1, typename T2, typename T3, typename T4, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4,T5>,Protect,int_<5 >
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4,T5>,Tag,Protect,int_<5 >
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl<T4> l4;
|
||||
typedef lambda_impl<T5> l5;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
typedef lambda_impl< T4,Tag > l4;
|
||||
typedef lambda_impl< T5,Tag > l5;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -516,6 +552,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result5<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3, l4, l5
|
||||
@@ -525,10 +562,12 @@ struct lambda_impl<
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind5< F,T1,T2,T3,T4,T5 >
|
||||
, Tag
|
||||
, Protect, int_<6>
|
||||
>
|
||||
{
|
||||
@@ -540,22 +579,25 @@ struct lambda_impl<
|
||||
};
|
||||
|
||||
// special case for 'protect'
|
||||
template< typename T, typename Protect >
|
||||
struct lambda_impl< protect<T>,Protect,int_<1> >
|
||||
template< typename T, typename Tag, typename Protect >
|
||||
struct lambda_impl< protect<T>,Tag,Protect,int_<1> >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef protect<T> type;
|
||||
};
|
||||
|
||||
// specializations for main 'bind', 'bind1st' and 'bind2nd' forms
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind< F,T1,T2,T3,T4,T5 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
, int_<6>
|
||||
>
|
||||
{
|
||||
@@ -565,9 +607,10 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl< bind1st<F,T>,Protect,int_<2> >
|
||||
struct lambda_impl< bind1st<F,T>,Tag,Protect,int_<2> >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef bind1st< F,T > type;
|
||||
@@ -575,9 +618,10 @@ struct lambda_impl< bind1st<F,T>,Protect,int_<2> >
|
||||
|
||||
template<
|
||||
typename F, typename T
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl< bind2nd<F,T>,Protect,int_<2> >
|
||||
struct lambda_impl< bind2nd<F,T>,Tag,Protect,int_<2> >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef bind2nd< F,T > type;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// preprocessed version of 'boost/mpl/lambda_no_ctps.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/config/use_preprocessed.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
namespace boost {
|
||||
@@ -8,7 +8,7 @@ namespace aux {
|
||||
|
||||
template< int arity_, bool Protect > struct lambda_impl
|
||||
{
|
||||
template< typename T > struct result_
|
||||
template< typename T, typename Tag > struct result_
|
||||
{
|
||||
typedef T type;
|
||||
};
|
||||
@@ -16,142 +16,184 @@ template< int arity_, bool Protect > struct lambda_impl
|
||||
|
||||
template<> struct lambda_impl<1, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef bind1<
|
||||
f_
|
||||
, typename lambda< typename F::arg1, false >::type
|
||||
, arg1
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<1, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef mpl::protect< bind1<
|
||||
f_
|
||||
, typename lambda< typename F::arg1, false >::type
|
||||
, arg1
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<2, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
|
||||
|
||||
typedef bind2<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type
|
||||
, arg1, arg2
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<2, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
|
||||
|
||||
typedef mpl::protect< bind2<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type
|
||||
, arg1, arg2
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<3, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
|
||||
|
||||
typedef bind3<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type
|
||||
, arg1, arg2, arg3
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<3, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
|
||||
|
||||
typedef mpl::protect< bind3<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type
|
||||
, arg1, arg2, arg3
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<4, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
|
||||
|
||||
typedef bind4<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type
|
||||
, arg1, arg2, arg3, arg4
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<4, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
|
||||
|
||||
typedef mpl::protect< bind4<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type
|
||||
, arg1, arg2, arg3, arg4
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<5, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
typedef typename lambda< typename F::arg5, Tag, false >::type arg5;
|
||||
|
||||
|
||||
typedef bind5<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type
|
||||
, arg1, arg2, arg3, arg4, arg5
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<5, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
typedef typename lambda< typename F::arg5, Tag, false >::type arg5;
|
||||
|
||||
|
||||
typedef mpl::protect< bind5<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type
|
||||
, arg1, arg2, arg3, arg4, arg5
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
} // namespace aux
|
||||
|
||||
template< typename T, bool Protect = true >
|
||||
template<
|
||||
typename T
|
||||
, typename Tag = void_
|
||||
, bool Protect = true
|
||||
>
|
||||
struct lambda
|
||||
: aux::lambda_impl<
|
||||
::boost::mpl::aux::template_arity<T>::value
|
||||
|
||||
, Protect
|
||||
|
||||
>::template result_<T>
|
||||
>::template result_< T,Tag >
|
||||
{
|
||||
};
|
||||
|
||||
|
@@ -1,3 +1,3 @@
|
||||
// preprocessed version of 'boost/mpl/quote.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/config/use_preprocessed.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// preprocessed version of 'boost/mpl/aux_/full_lambda.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/lambda_expr.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
namespace boost {
|
||||
@@ -6,6 +6,7 @@ namespace mpl {
|
||||
|
||||
template<
|
||||
typename T
|
||||
, typename Tag
|
||||
, typename Protect = false_
|
||||
, typename Arity = int_< aux::template_arity<T>::value >
|
||||
>
|
||||
@@ -17,10 +18,11 @@ struct lambda_impl
|
||||
|
||||
template<
|
||||
typename T
|
||||
, typename Tag = void_
|
||||
, typename Arity = int_< aux::template_arity<T>::value >
|
||||
>
|
||||
struct lambda
|
||||
: lambda_impl< T,false_,Arity >
|
||||
: lambda_impl< T,Tag,false_,Arity >
|
||||
{
|
||||
};
|
||||
|
||||
@@ -43,8 +45,8 @@ struct lambda_or< false,false,false,false,false >
|
||||
|
||||
} // namespace aux
|
||||
|
||||
template< int N, typename Protect >
|
||||
struct lambda_impl< arg<N>,Protect,int_<-1> >
|
||||
template< int N, typename Tag, typename Protect >
|
||||
struct lambda_impl< arg<N>,Tag,Protect,int_<-1> >
|
||||
{
|
||||
typedef true_ is_le;
|
||||
typedef arg<N> type;
|
||||
@@ -52,10 +54,12 @@ struct lambda_impl< arg<N>,Protect,int_<-1> >
|
||||
|
||||
template<
|
||||
typename F
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind0<F>
|
||||
, Tag
|
||||
, Protect, int_<1>
|
||||
>
|
||||
{
|
||||
@@ -68,16 +72,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename T1
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1>,int_<1> >
|
||||
: lambda_impl< F<T1>,true_,int_<1> >
|
||||
struct lambda< F<T1>,Tag,int_<1> >
|
||||
: lambda_impl< F<T1>,Tag,true_,int_<1> >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1 > class F
|
||||
, typename L1
|
||||
>
|
||||
@@ -90,24 +95,26 @@ struct le_result1
|
||||
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename Tag
|
||||
, typename L1
|
||||
>
|
||||
struct le_result1< true_,false_,F,L1 >
|
||||
struct le_result1< true_,Tag,false_,F,L1 >
|
||||
{
|
||||
typedef bind1<
|
||||
quote1<F>
|
||||
quote1< F,Tag >
|
||||
, typename L1::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename Tag
|
||||
, typename L1
|
||||
>
|
||||
struct le_result1< true_,true_,F,L1 >
|
||||
struct le_result1< true_,Tag,true_,F,L1 >
|
||||
{
|
||||
typedef protect< bind1<
|
||||
quote1<F>
|
||||
quote1< F,Tag >
|
||||
, typename L1::type
|
||||
> > type;
|
||||
};
|
||||
@@ -117,19 +124,21 @@ struct le_result1< true_,true_,F,L1 >
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename T1
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1>,Protect,int_<1 >
|
||||
struct lambda_impl<
|
||||
F< T1>,Tag,Protect,int_<1 >
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value
|
||||
> is_le;
|
||||
|
||||
typedef typename aux::le_result1<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1
|
||||
@@ -138,10 +147,12 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind1< F,T1 >
|
||||
, Tag
|
||||
, Protect, int_<2>
|
||||
>
|
||||
{
|
||||
@@ -155,16 +166,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename T1, typename T2
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2>,int_<2> >
|
||||
: lambda_impl< F<T1,T2>,true_,int_<2> >
|
||||
struct lambda< F<T1,T2>,Tag,int_<2> >
|
||||
: lambda_impl< F<T1,T2>,Tag,true_,int_<2> >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2 > class F
|
||||
, typename L1, typename L2
|
||||
>
|
||||
@@ -177,24 +189,26 @@ struct le_result2
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2
|
||||
>
|
||||
struct le_result2< true_,false_,F,L1,L2 >
|
||||
struct le_result2< true_,Tag,false_,F,L1,L2 >
|
||||
{
|
||||
typedef bind2<
|
||||
quote2<F>
|
||||
quote2< F,Tag >
|
||||
, typename L1::type, typename L2::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2
|
||||
>
|
||||
struct le_result2< true_,true_,F,L1,L2 >
|
||||
struct le_result2< true_,Tag,true_,F,L1,L2 >
|
||||
{
|
||||
typedef protect< bind2<
|
||||
quote2<F>
|
||||
quote2< F,Tag >
|
||||
, typename L1::type, typename L2::type
|
||||
> > type;
|
||||
};
|
||||
@@ -204,14 +218,15 @@ struct le_result2< true_,true_,F,L1,L2 >
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename T1, typename T2
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2>,Protect,int_<2 >
|
||||
struct lambda_impl<
|
||||
F< T1,T2>,Tag,Protect,int_<2 >
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value
|
||||
@@ -219,6 +234,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result2<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2
|
||||
@@ -227,10 +243,12 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind2< F,T1,T2 >
|
||||
, Tag
|
||||
, Protect, int_<3>
|
||||
>
|
||||
{
|
||||
@@ -244,16 +262,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3>,int_<3> >
|
||||
: lambda_impl< F<T1,T2,T3>,true_,int_<3> >
|
||||
struct lambda< F<T1,T2,T3>,Tag,int_<3> >
|
||||
: lambda_impl< F<T1,T2,T3>,Tag,true_,int_<3> >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3 > class F
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
@@ -266,24 +285,26 @@ struct le_result3
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
struct le_result3< true_,false_,F,L1,L2,L3 >
|
||||
struct le_result3< true_,Tag,false_,F,L1,L2,L3 >
|
||||
{
|
||||
typedef bind3<
|
||||
quote3<F>
|
||||
quote3< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
struct le_result3< true_,true_,F,L1,L2,L3 >
|
||||
struct le_result3< true_,Tag,true_,F,L1,L2,L3 >
|
||||
{
|
||||
typedef protect< bind3<
|
||||
quote3<F>
|
||||
quote3< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
> > type;
|
||||
};
|
||||
@@ -293,15 +314,16 @@ struct le_result3< true_,true_,F,L1,L2,L3 >
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3>,Protect,int_<3 >
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3>,Tag,Protect,int_<3 >
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -309,6 +331,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result3<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3
|
||||
@@ -317,10 +340,12 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind3< F,T1,T2,T3 >
|
||||
, Tag
|
||||
, Protect, int_<4>
|
||||
>
|
||||
{
|
||||
@@ -334,16 +359,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3,T4>,int_<4> >
|
||||
: lambda_impl< F<T1,T2,T3,T4>,true_,int_<4> >
|
||||
struct lambda< F<T1,T2,T3,T4>,Tag,int_<4> >
|
||||
: lambda_impl< F<T1,T2,T3,T4>,Tag,true_,int_<4> >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
@@ -357,12 +383,13 @@ struct le_result4
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
struct le_result4< true_,false_,F,L1,L2,L3,L4 >
|
||||
struct le_result4< true_,Tag,false_,F,L1,L2,L3,L4 >
|
||||
{
|
||||
typedef bind4<
|
||||
quote4<F>
|
||||
quote4< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type
|
||||
> type;
|
||||
@@ -370,12 +397,13 @@ struct le_result4< true_,false_,F,L1,L2,L3,L4 >
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
struct le_result4< true_,true_,F,L1,L2,L3,L4 >
|
||||
struct le_result4< true_,Tag,true_,F,L1,L2,L3,L4 >
|
||||
{
|
||||
typedef protect< bind4<
|
||||
quote4<F>
|
||||
quote4< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type
|
||||
> > type;
|
||||
@@ -386,16 +414,17 @@ struct le_result4< true_,true_,F,L1,L2,L3,L4 >
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4>,Protect,int_<4 >
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4>,Tag,Protect,int_<4 >
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl<T4> l4;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
typedef lambda_impl< T4,Tag > l4;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -404,6 +433,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result4<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3, l4
|
||||
@@ -412,10 +442,12 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind4< F,T1,T2,T3,T4 >
|
||||
, Tag
|
||||
, Protect, int_<5>
|
||||
>
|
||||
{
|
||||
@@ -433,16 +465,17 @@ template<
|
||||
>
|
||||
class F
|
||||
, typename T1, typename T2, typename T3, typename T4, typename T5
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3,T4,T5>,int_<5> >
|
||||
: lambda_impl< F<T1,T2,T3,T4,T5>,true_,int_<5> >
|
||||
struct lambda< F<T1,T2,T3,T4,T5>,Tag,int_<5> >
|
||||
: lambda_impl< F<T1,T2,T3,T4,T5>,Tag,true_,int_<5> >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
|
||||
, typename L1, typename L2, typename L3, typename L4, typename L5
|
||||
>
|
||||
@@ -460,12 +493,13 @@ template<
|
||||
, typename P5
|
||||
>
|
||||
class F
|
||||
, typename Tag
|
||||
, 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_,Tag,false_,F,L1,L2,L3,L4,L5 >
|
||||
{
|
||||
typedef bind5<
|
||||
quote5<F>
|
||||
quote5< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type, typename L5::type
|
||||
> type;
|
||||
@@ -477,12 +511,13 @@ template<
|
||||
, typename P5
|
||||
>
|
||||
class F
|
||||
, typename Tag
|
||||
, 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_,Tag,true_,F,L1,L2,L3,L4,L5 >
|
||||
{
|
||||
typedef protect< bind5<
|
||||
quote5<F>
|
||||
quote5< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type, typename L5::type
|
||||
> > type;
|
||||
@@ -497,17 +532,18 @@ template<
|
||||
>
|
||||
class F
|
||||
, typename T1, typename T2, typename T3, typename T4, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4,T5>,Protect,int_<5 >
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4,T5>,Tag,Protect,int_<5 >
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl<T4> l4;
|
||||
typedef lambda_impl<T5> l5;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
typedef lambda_impl< T4,Tag > l4;
|
||||
typedef lambda_impl< T5,Tag > l5;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -516,6 +552,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result5<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3, l4, l5
|
||||
@@ -525,10 +562,12 @@ struct lambda_impl<
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind5< F,T1,T2,T3,T4,T5 >
|
||||
, Tag
|
||||
, Protect, int_<6>
|
||||
>
|
||||
{
|
||||
@@ -540,22 +579,25 @@ struct lambda_impl<
|
||||
};
|
||||
|
||||
// special case for 'protect'
|
||||
template< typename T, typename Protect >
|
||||
struct lambda_impl< protect<T>,Protect,int_<1> >
|
||||
template< typename T, typename Tag, typename Protect >
|
||||
struct lambda_impl< protect<T>,Tag,Protect,int_<1> >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef protect<T> type;
|
||||
};
|
||||
|
||||
// specializations for main 'bind', 'bind1st' and 'bind2nd' forms
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind< F,T1,T2,T3,T4,T5 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
, int_<6>
|
||||
>
|
||||
{
|
||||
@@ -565,9 +607,10 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl< bind1st<F,T>,Protect,int_<2> >
|
||||
struct lambda_impl< bind1st<F,T>,Tag,Protect,int_<2> >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef bind1st< F,T > type;
|
||||
@@ -575,9 +618,10 @@ struct lambda_impl< bind1st<F,T>,Protect,int_<2> >
|
||||
|
||||
template<
|
||||
typename F, typename T
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl< bind2nd<F,T>,Protect,int_<2> >
|
||||
struct lambda_impl< bind2nd<F,T>,Tag,Protect,int_<2> >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef bind2nd< F,T > type;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// preprocessed version of 'boost/mpl/lambda_no_ctps.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/config/use_preprocessed.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
namespace boost {
|
||||
@@ -8,7 +8,7 @@ namespace aux {
|
||||
|
||||
template< int arity_, bool Protect > struct lambda_impl
|
||||
{
|
||||
template< typename T > struct result_
|
||||
template< typename T, typename Tag > struct result_
|
||||
{
|
||||
typedef T type;
|
||||
};
|
||||
@@ -16,142 +16,184 @@ template< int arity_, bool Protect > struct lambda_impl
|
||||
|
||||
template<> struct lambda_impl<1, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef bind1<
|
||||
f_
|
||||
, typename lambda< typename F::arg1, false >::type
|
||||
, arg1
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<1, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef mpl::protect< bind1<
|
||||
f_
|
||||
, typename lambda< typename F::arg1, false >::type
|
||||
, arg1
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<2, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
|
||||
|
||||
typedef bind2<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type
|
||||
, arg1, arg2
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<2, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
|
||||
|
||||
typedef mpl::protect< bind2<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type
|
||||
, arg1, arg2
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<3, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
|
||||
|
||||
typedef bind3<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type
|
||||
, arg1, arg2, arg3
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<3, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
|
||||
|
||||
typedef mpl::protect< bind3<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type
|
||||
, arg1, arg2, arg3
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<4, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
|
||||
|
||||
typedef bind4<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type
|
||||
, arg1, arg2, arg3, arg4
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<4, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
|
||||
|
||||
typedef mpl::protect< bind4<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type
|
||||
, arg1, arg2, arg3, arg4
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<5, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
typedef typename lambda< typename F::arg5, Tag, false >::type arg5;
|
||||
|
||||
|
||||
typedef bind5<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type
|
||||
, arg1, arg2, arg3, arg4, arg5
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<5, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
typedef typename lambda< typename F::arg5, Tag, false >::type arg5;
|
||||
|
||||
|
||||
typedef mpl::protect< bind5<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type
|
||||
, arg1, arg2, arg3, arg4, arg5
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
} // namespace aux
|
||||
|
||||
template< typename T, bool Protect = true >
|
||||
template<
|
||||
typename T
|
||||
, typename Tag = void_
|
||||
, bool Protect = true
|
||||
>
|
||||
struct lambda
|
||||
: aux::lambda_impl<
|
||||
::boost::mpl::aux::template_arity<T>::value
|
||||
|
||||
, Protect
|
||||
|
||||
>::template result_<T>
|
||||
>::template result_< T,Tag >
|
||||
{
|
||||
};
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// preprocessed version of 'boost/mpl/quote.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/config/use_preprocessed.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
namespace boost {
|
||||
@@ -19,6 +19,7 @@ struct quote_impl< T,false >
|
||||
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote1
|
||||
{
|
||||
@@ -32,6 +33,7 @@ struct quote1
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote2
|
||||
{
|
||||
@@ -45,6 +47,7 @@ struct quote2
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote3
|
||||
{
|
||||
@@ -58,6 +61,7 @@ struct quote3
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote4
|
||||
{
|
||||
@@ -78,6 +82,7 @@ template<
|
||||
, typename P5
|
||||
>
|
||||
class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote5
|
||||
{
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// preprocessed version of 'boost/mpl/aux_/full_lambda.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/lambda_expr.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
namespace boost {
|
||||
@@ -6,8 +6,9 @@ namespace mpl {
|
||||
|
||||
template<
|
||||
typename T
|
||||
, typename Tag
|
||||
, typename Protect = false_
|
||||
|
||||
|
||||
>
|
||||
struct lambda_impl
|
||||
{
|
||||
@@ -17,10 +18,11 @@ struct lambda_impl
|
||||
|
||||
template<
|
||||
typename T
|
||||
|
||||
, typename Tag = void_
|
||||
|
||||
>
|
||||
struct lambda
|
||||
: lambda_impl< T,false_ >
|
||||
: lambda_impl< T,Tag,false_ >
|
||||
{
|
||||
};
|
||||
|
||||
@@ -43,8 +45,8 @@ struct lambda_or< false,false,false,false,false >
|
||||
|
||||
} // namespace aux
|
||||
|
||||
template< int N, typename Protect >
|
||||
struct lambda_impl< arg<N>,Protect >
|
||||
template< int N, typename Tag, typename Protect >
|
||||
struct lambda_impl< arg<N>,Tag,Protect >
|
||||
{
|
||||
typedef true_ is_le;
|
||||
typedef arg<N> type;
|
||||
@@ -52,11 +54,13 @@ struct lambda_impl< arg<N>,Protect >
|
||||
|
||||
template<
|
||||
typename F
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind0<F>
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -68,16 +72,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename T1
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1> >
|
||||
: lambda_impl< F<T1>,true_ >
|
||||
struct lambda< F<T1>,Tag >
|
||||
: lambda_impl< F<T1>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1 > class F
|
||||
, typename L1
|
||||
>
|
||||
@@ -90,24 +95,26 @@ struct le_result1
|
||||
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename Tag
|
||||
, typename L1
|
||||
>
|
||||
struct le_result1< true_,false_,F,L1 >
|
||||
struct le_result1< true_,Tag,false_,F,L1 >
|
||||
{
|
||||
typedef bind1<
|
||||
quote1<F>
|
||||
quote1< F,Tag >
|
||||
, typename L1::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename Tag
|
||||
, typename L1
|
||||
>
|
||||
struct le_result1< true_,true_,F,L1 >
|
||||
struct le_result1< true_,Tag,true_,F,L1 >
|
||||
{
|
||||
typedef protect< bind1<
|
||||
quote1<F>
|
||||
quote1< F,Tag >
|
||||
, typename L1::type
|
||||
> > type;
|
||||
};
|
||||
@@ -117,19 +124,21 @@ struct le_result1< true_,true_,F,L1 >
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename T1
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F<T1>, Protect
|
||||
struct lambda_impl<
|
||||
F<T1>, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value
|
||||
> is_le;
|
||||
|
||||
typedef typename aux::le_result1<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1
|
||||
@@ -138,11 +147,13 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind1< F,T1 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -155,16 +166,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename T1, typename T2
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2> >
|
||||
: lambda_impl< F<T1,T2>,true_ >
|
||||
struct lambda< F<T1,T2>,Tag >
|
||||
: lambda_impl< F<T1,T2>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2 > class F
|
||||
, typename L1, typename L2
|
||||
>
|
||||
@@ -177,24 +189,26 @@ struct le_result2
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2
|
||||
>
|
||||
struct le_result2< true_,false_,F,L1,L2 >
|
||||
struct le_result2< true_,Tag,false_,F,L1,L2 >
|
||||
{
|
||||
typedef bind2<
|
||||
quote2<F>
|
||||
quote2< F,Tag >
|
||||
, typename L1::type, typename L2::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2
|
||||
>
|
||||
struct le_result2< true_,true_,F,L1,L2 >
|
||||
struct le_result2< true_,Tag,true_,F,L1,L2 >
|
||||
{
|
||||
typedef protect< bind2<
|
||||
quote2<F>
|
||||
quote2< F,Tag >
|
||||
, typename L1::type, typename L2::type
|
||||
> > type;
|
||||
};
|
||||
@@ -204,14 +218,15 @@ struct le_result2< true_,true_,F,L1,L2 >
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename T1, typename T2
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2 >, Protect
|
||||
struct lambda_impl<
|
||||
F< T1,T2 >, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value
|
||||
@@ -219,6 +234,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result2<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2
|
||||
@@ -227,11 +243,13 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind2< F,T1,T2 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -244,16 +262,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3> >
|
||||
: lambda_impl< F<T1,T2,T3>,true_ >
|
||||
struct lambda< F<T1,T2,T3>,Tag >
|
||||
: lambda_impl< F<T1,T2,T3>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3 > class F
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
@@ -266,24 +285,26 @@ struct le_result3
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
struct le_result3< true_,false_,F,L1,L2,L3 >
|
||||
struct le_result3< true_,Tag,false_,F,L1,L2,L3 >
|
||||
{
|
||||
typedef bind3<
|
||||
quote3<F>
|
||||
quote3< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
struct le_result3< true_,true_,F,L1,L2,L3 >
|
||||
struct le_result3< true_,Tag,true_,F,L1,L2,L3 >
|
||||
{
|
||||
typedef protect< bind3<
|
||||
quote3<F>
|
||||
quote3< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
> > type;
|
||||
};
|
||||
@@ -293,15 +314,16 @@ struct le_result3< true_,true_,F,L1,L2,L3 >
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3 >, Protect
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3 >, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -309,6 +331,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result3<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3
|
||||
@@ -317,11 +340,13 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind3< F,T1,T2,T3 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -334,16 +359,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3,T4> >
|
||||
: lambda_impl< F<T1,T2,T3,T4>,true_ >
|
||||
struct lambda< F<T1,T2,T3,T4>,Tag >
|
||||
: lambda_impl< F<T1,T2,T3,T4>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
@@ -357,12 +383,13 @@ struct le_result4
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
struct le_result4< true_,false_,F,L1,L2,L3,L4 >
|
||||
struct le_result4< true_,Tag,false_,F,L1,L2,L3,L4 >
|
||||
{
|
||||
typedef bind4<
|
||||
quote4<F>
|
||||
quote4< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type
|
||||
> type;
|
||||
@@ -370,12 +397,13 @@ struct le_result4< true_,false_,F,L1,L2,L3,L4 >
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
struct le_result4< true_,true_,F,L1,L2,L3,L4 >
|
||||
struct le_result4< true_,Tag,true_,F,L1,L2,L3,L4 >
|
||||
{
|
||||
typedef protect< bind4<
|
||||
quote4<F>
|
||||
quote4< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type
|
||||
> > type;
|
||||
@@ -386,16 +414,17 @@ struct le_result4< true_,true_,F,L1,L2,L3,L4 >
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4 >, Protect
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4 >, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl<T4> l4;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
typedef lambda_impl< T4,Tag > l4;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -404,6 +433,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result4<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3, l4
|
||||
@@ -412,11 +442,13 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind4< F,T1,T2,T3,T4 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -433,16 +465,17 @@ template<
|
||||
>
|
||||
class F
|
||||
, typename T1, typename T2, typename T3, typename T4, typename T5
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3,T4,T5> >
|
||||
: lambda_impl< F<T1,T2,T3,T4,T5>,true_ >
|
||||
struct lambda< F<T1,T2,T3,T4,T5>,Tag >
|
||||
: lambda_impl< F<T1,T2,T3,T4,T5>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
|
||||
, typename L1, typename L2, typename L3, typename L4, typename L5
|
||||
>
|
||||
@@ -460,12 +493,13 @@ template<
|
||||
, typename P5
|
||||
>
|
||||
class F
|
||||
, typename Tag
|
||||
, 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_,Tag,false_,F,L1,L2,L3,L4,L5 >
|
||||
{
|
||||
typedef bind5<
|
||||
quote5<F>
|
||||
quote5< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type, typename L5::type
|
||||
> type;
|
||||
@@ -477,12 +511,13 @@ template<
|
||||
, typename P5
|
||||
>
|
||||
class F
|
||||
, typename Tag
|
||||
, 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_,Tag,true_,F,L1,L2,L3,L4,L5 >
|
||||
{
|
||||
typedef protect< bind5<
|
||||
quote5<F>
|
||||
quote5< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type, typename L5::type
|
||||
> > type;
|
||||
@@ -497,17 +532,18 @@ template<
|
||||
>
|
||||
class F
|
||||
, typename T1, typename T2, typename T3, typename T4, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4,T5 >, Protect
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4,T5 >, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl<T4> l4;
|
||||
typedef lambda_impl<T5> l5;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
typedef lambda_impl< T4,Tag > l4;
|
||||
typedef lambda_impl< T5,Tag > l5;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -516,6 +552,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result5<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3, l4, l5
|
||||
@@ -525,11 +562,13 @@ struct lambda_impl<
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind5< F,T1,T2,T3,T4,T5 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -540,23 +579,26 @@ struct lambda_impl<
|
||||
};
|
||||
|
||||
// special case for 'protect'
|
||||
template< typename T, typename Protect >
|
||||
struct lambda_impl< protect<T>,Protect >
|
||||
template< typename T, typename Tag, typename Protect >
|
||||
struct lambda_impl< protect<T>,Tag,Protect >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef protect<T> type;
|
||||
};
|
||||
|
||||
// specializations for main 'bind', 'bind1st' and 'bind2nd' forms
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind< F,T1,T2,T3,T4,T5 >
|
||||
, Protect
|
||||
|
||||
, Tag
|
||||
, Protect
|
||||
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -565,9 +607,10 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl< bind1st<F,T>,Protect >
|
||||
struct lambda_impl< bind1st<F,T>,Tag,Protect >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef bind1st< F,T > type;
|
||||
@@ -575,9 +618,10 @@ struct lambda_impl< bind1st<F,T>,Protect >
|
||||
|
||||
template<
|
||||
typename F, typename T
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl< bind2nd<F,T>,Protect >
|
||||
struct lambda_impl< bind2nd<F,T>,Tag,Protect >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef bind2nd< F,T > type;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// preprocessed version of 'boost/mpl/lambda_no_ctps.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/config/use_preprocessed.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
namespace boost {
|
||||
@@ -8,7 +8,7 @@ namespace aux {
|
||||
|
||||
template< nttp_int arity_, bool Protect > struct lambda_impl
|
||||
{
|
||||
template< typename T > struct result_
|
||||
template< typename T, typename Tag > struct result_
|
||||
{
|
||||
typedef T type;
|
||||
};
|
||||
@@ -16,142 +16,184 @@ template< nttp_int arity_, bool Protect > struct lambda_impl
|
||||
|
||||
template<> struct lambda_impl<1, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef bind1<
|
||||
f_
|
||||
, typename lambda< typename F::arg1, false >::type
|
||||
, arg1
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<1, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef mpl::protect< bind1<
|
||||
f_
|
||||
, typename lambda< typename F::arg1, false >::type
|
||||
, arg1
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<2, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
|
||||
|
||||
typedef bind2<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type
|
||||
, arg1, arg2
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<2, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
|
||||
|
||||
typedef mpl::protect< bind2<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type
|
||||
, arg1, arg2
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<3, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
|
||||
|
||||
typedef bind3<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type
|
||||
, arg1, arg2, arg3
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<3, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
|
||||
|
||||
typedef mpl::protect< bind3<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type
|
||||
, arg1, arg2, arg3
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<4, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
|
||||
|
||||
typedef bind4<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type
|
||||
, arg1, arg2, arg3, arg4
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<4, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
|
||||
|
||||
typedef mpl::protect< bind4<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type
|
||||
, arg1, arg2, arg3, arg4
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<5, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
typedef typename lambda< typename F::arg5, Tag, false >::type arg5;
|
||||
|
||||
|
||||
typedef bind5<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type
|
||||
, arg1, arg2, arg3, arg4, arg5
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<5, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
typedef typename lambda< typename F::arg5, Tag, false >::type arg5;
|
||||
|
||||
|
||||
typedef mpl::protect< bind5<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type
|
||||
, arg1, arg2, arg3, arg4, arg5
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
} // namespace aux
|
||||
|
||||
template< typename T, bool Protect = true >
|
||||
template<
|
||||
typename T
|
||||
, typename Tag = void_
|
||||
, bool Protect = true
|
||||
>
|
||||
struct lambda
|
||||
: aux::lambda_impl<
|
||||
::boost::mpl::aux::template_arity<T>::value
|
||||
|
||||
, bool_<Protect>::value
|
||||
|
||||
>::template result_<T>
|
||||
>::template result_< T,Tag >
|
||||
{
|
||||
};
|
||||
|
||||
|
@@ -1,3 +1,3 @@
|
||||
// preprocessed version of 'boost/mpl/quote.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/config/use_preprocessed.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// preprocessed version of 'boost/mpl/aux_/full_lambda.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/lambda_expr.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
namespace boost {
|
||||
@@ -6,8 +6,9 @@ namespace mpl {
|
||||
|
||||
template<
|
||||
typename T
|
||||
, typename Tag
|
||||
, typename Protect = false_
|
||||
|
||||
|
||||
>
|
||||
struct lambda_impl
|
||||
{
|
||||
@@ -17,10 +18,11 @@ struct lambda_impl
|
||||
|
||||
template<
|
||||
typename T
|
||||
|
||||
, typename Tag = void_
|
||||
|
||||
>
|
||||
struct lambda
|
||||
: lambda_impl< T,false_ >
|
||||
: lambda_impl< T,Tag,false_ >
|
||||
{
|
||||
};
|
||||
|
||||
@@ -43,8 +45,8 @@ struct lambda_or< false,false,false,false,false >
|
||||
|
||||
} // namespace aux
|
||||
|
||||
template< int N, typename Protect >
|
||||
struct lambda_impl< arg<N>,Protect >
|
||||
template< int N, typename Tag, typename Protect >
|
||||
struct lambda_impl< arg<N>,Tag,Protect >
|
||||
{
|
||||
typedef true_ is_le;
|
||||
typedef arg<N> type;
|
||||
@@ -52,11 +54,13 @@ struct lambda_impl< arg<N>,Protect >
|
||||
|
||||
template<
|
||||
typename F
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind0<F>
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -68,16 +72,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename T1
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1> >
|
||||
: lambda_impl< F<T1>,true_ >
|
||||
struct lambda< F<T1>,Tag >
|
||||
: lambda_impl< F<T1>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1 > class F
|
||||
, typename L1
|
||||
>
|
||||
@@ -90,24 +95,26 @@ struct le_result1
|
||||
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename Tag
|
||||
, typename L1
|
||||
>
|
||||
struct le_result1< true_,false_,F,L1 >
|
||||
struct le_result1< true_,Tag,false_,F,L1 >
|
||||
{
|
||||
typedef bind1<
|
||||
quote1<F>
|
||||
quote1< F,Tag >
|
||||
, typename L1::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename Tag
|
||||
, typename L1
|
||||
>
|
||||
struct le_result1< true_,true_,F,L1 >
|
||||
struct le_result1< true_,Tag,true_,F,L1 >
|
||||
{
|
||||
typedef protect< bind1<
|
||||
quote1<F>
|
||||
quote1< F,Tag >
|
||||
, typename L1::type
|
||||
> > type;
|
||||
};
|
||||
@@ -117,19 +124,21 @@ struct le_result1< true_,true_,F,L1 >
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename T1
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F<T1>, Protect
|
||||
struct lambda_impl<
|
||||
F<T1>, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value
|
||||
> is_le;
|
||||
|
||||
typedef typename aux::le_result1<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1
|
||||
@@ -138,11 +147,13 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind1< F,T1 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -155,16 +166,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename T1, typename T2
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2> >
|
||||
: lambda_impl< F<T1,T2>,true_ >
|
||||
struct lambda< F<T1,T2>,Tag >
|
||||
: lambda_impl< F<T1,T2>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2 > class F
|
||||
, typename L1, typename L2
|
||||
>
|
||||
@@ -177,24 +189,26 @@ struct le_result2
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2
|
||||
>
|
||||
struct le_result2< true_,false_,F,L1,L2 >
|
||||
struct le_result2< true_,Tag,false_,F,L1,L2 >
|
||||
{
|
||||
typedef bind2<
|
||||
quote2<F>
|
||||
quote2< F,Tag >
|
||||
, typename L1::type, typename L2::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2
|
||||
>
|
||||
struct le_result2< true_,true_,F,L1,L2 >
|
||||
struct le_result2< true_,Tag,true_,F,L1,L2 >
|
||||
{
|
||||
typedef protect< bind2<
|
||||
quote2<F>
|
||||
quote2< F,Tag >
|
||||
, typename L1::type, typename L2::type
|
||||
> > type;
|
||||
};
|
||||
@@ -204,14 +218,15 @@ struct le_result2< true_,true_,F,L1,L2 >
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename T1, typename T2
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2 >, Protect
|
||||
struct lambda_impl<
|
||||
F< T1,T2 >, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value
|
||||
@@ -219,6 +234,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result2<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2
|
||||
@@ -227,11 +243,13 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind2< F,T1,T2 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -244,16 +262,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3> >
|
||||
: lambda_impl< F<T1,T2,T3>,true_ >
|
||||
struct lambda< F<T1,T2,T3>,Tag >
|
||||
: lambda_impl< F<T1,T2,T3>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3 > class F
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
@@ -266,24 +285,26 @@ struct le_result3
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
struct le_result3< true_,false_,F,L1,L2,L3 >
|
||||
struct le_result3< true_,Tag,false_,F,L1,L2,L3 >
|
||||
{
|
||||
typedef bind3<
|
||||
quote3<F>
|
||||
quote3< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
struct le_result3< true_,true_,F,L1,L2,L3 >
|
||||
struct le_result3< true_,Tag,true_,F,L1,L2,L3 >
|
||||
{
|
||||
typedef protect< bind3<
|
||||
quote3<F>
|
||||
quote3< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
> > type;
|
||||
};
|
||||
@@ -293,15 +314,16 @@ struct le_result3< true_,true_,F,L1,L2,L3 >
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3 >, Protect
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3 >, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -309,6 +331,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result3<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3
|
||||
@@ -317,11 +340,13 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind3< F,T1,T2,T3 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -334,16 +359,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3,T4> >
|
||||
: lambda_impl< F<T1,T2,T3,T4>,true_ >
|
||||
struct lambda< F<T1,T2,T3,T4>,Tag >
|
||||
: lambda_impl< F<T1,T2,T3,T4>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
@@ -357,12 +383,13 @@ struct le_result4
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
struct le_result4< true_,false_,F,L1,L2,L3,L4 >
|
||||
struct le_result4< true_,Tag,false_,F,L1,L2,L3,L4 >
|
||||
{
|
||||
typedef bind4<
|
||||
quote4<F>
|
||||
quote4< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type
|
||||
> type;
|
||||
@@ -370,12 +397,13 @@ struct le_result4< true_,false_,F,L1,L2,L3,L4 >
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
struct le_result4< true_,true_,F,L1,L2,L3,L4 >
|
||||
struct le_result4< true_,Tag,true_,F,L1,L2,L3,L4 >
|
||||
{
|
||||
typedef protect< bind4<
|
||||
quote4<F>
|
||||
quote4< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type
|
||||
> > type;
|
||||
@@ -386,16 +414,17 @@ struct le_result4< true_,true_,F,L1,L2,L3,L4 >
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4 >, Protect
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4 >, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl<T4> l4;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
typedef lambda_impl< T4,Tag > l4;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -404,6 +433,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result4<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3, l4
|
||||
@@ -412,11 +442,13 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind4< F,T1,T2,T3,T4 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -433,16 +465,17 @@ template<
|
||||
>
|
||||
class F
|
||||
, typename T1, typename T2, typename T3, typename T4, typename T5
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3,T4,T5> >
|
||||
: lambda_impl< F<T1,T2,T3,T4,T5>,true_ >
|
||||
struct lambda< F<T1,T2,T3,T4,T5>,Tag >
|
||||
: lambda_impl< F<T1,T2,T3,T4,T5>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
|
||||
, typename L1, typename L2, typename L3, typename L4, typename L5
|
||||
>
|
||||
@@ -460,12 +493,13 @@ template<
|
||||
, typename P5
|
||||
>
|
||||
class F
|
||||
, typename Tag
|
||||
, 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_,Tag,false_,F,L1,L2,L3,L4,L5 >
|
||||
{
|
||||
typedef bind5<
|
||||
quote5<F>
|
||||
quote5< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type, typename L5::type
|
||||
> type;
|
||||
@@ -477,12 +511,13 @@ template<
|
||||
, typename P5
|
||||
>
|
||||
class F
|
||||
, typename Tag
|
||||
, 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_,Tag,true_,F,L1,L2,L3,L4,L5 >
|
||||
{
|
||||
typedef protect< bind5<
|
||||
quote5<F>
|
||||
quote5< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type, typename L5::type
|
||||
> > type;
|
||||
@@ -497,17 +532,18 @@ template<
|
||||
>
|
||||
class F
|
||||
, typename T1, typename T2, typename T3, typename T4, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4,T5 >, Protect
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4,T5 >, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl<T4> l4;
|
||||
typedef lambda_impl<T5> l5;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
typedef lambda_impl< T4,Tag > l4;
|
||||
typedef lambda_impl< T5,Tag > l5;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -516,6 +552,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result5<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3, l4, l5
|
||||
@@ -525,11 +562,13 @@ struct lambda_impl<
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind5< F,T1,T2,T3,T4,T5 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -540,23 +579,26 @@ struct lambda_impl<
|
||||
};
|
||||
|
||||
// special case for 'protect'
|
||||
template< typename T, typename Protect >
|
||||
struct lambda_impl< protect<T>,Protect >
|
||||
template< typename T, typename Tag, typename Protect >
|
||||
struct lambda_impl< protect<T>,Tag,Protect >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef protect<T> type;
|
||||
};
|
||||
|
||||
// specializations for main 'bind', 'bind1st' and 'bind2nd' forms
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind< F,T1,T2,T3,T4,T5 >
|
||||
, Protect
|
||||
|
||||
, Tag
|
||||
, Protect
|
||||
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -565,9 +607,10 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl< bind1st<F,T>,Protect >
|
||||
struct lambda_impl< bind1st<F,T>,Tag,Protect >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef bind1st< F,T > type;
|
||||
@@ -575,9 +618,10 @@ struct lambda_impl< bind1st<F,T>,Protect >
|
||||
|
||||
template<
|
||||
typename F, typename T
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl< bind2nd<F,T>,Protect >
|
||||
struct lambda_impl< bind2nd<F,T>,Tag,Protect >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef bind2nd< F,T > type;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// preprocessed version of 'boost/mpl/lambda_no_ctps.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/config/use_preprocessed.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
namespace boost {
|
||||
@@ -8,7 +8,7 @@ namespace aux {
|
||||
|
||||
template< int arity_, bool Protect > struct lambda_impl
|
||||
{
|
||||
template< typename T > struct result_
|
||||
template< typename T, typename Tag > struct result_
|
||||
{
|
||||
typedef T type;
|
||||
};
|
||||
@@ -16,142 +16,184 @@ template< int arity_, bool Protect > struct lambda_impl
|
||||
|
||||
template<> struct lambda_impl<1, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef bind1<
|
||||
f_
|
||||
, typename lambda< typename F::arg1, false >::type
|
||||
, arg1
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<1, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef mpl::protect< bind1<
|
||||
f_
|
||||
, typename lambda< typename F::arg1, false >::type
|
||||
, arg1
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<2, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
|
||||
|
||||
typedef bind2<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type
|
||||
, arg1, arg2
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<2, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
|
||||
|
||||
typedef mpl::protect< bind2<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type
|
||||
, arg1, arg2
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<3, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
|
||||
|
||||
typedef bind3<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type
|
||||
, arg1, arg2, arg3
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<3, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
|
||||
|
||||
typedef mpl::protect< bind3<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type
|
||||
, arg1, arg2, arg3
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<4, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
|
||||
|
||||
typedef bind4<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type
|
||||
, arg1, arg2, arg3, arg4
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<4, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
|
||||
|
||||
typedef mpl::protect< bind4<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type
|
||||
, arg1, arg2, arg3, arg4
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<5, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
typedef typename lambda< typename F::arg5, Tag, false >::type arg5;
|
||||
|
||||
|
||||
typedef bind5<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type
|
||||
, arg1, arg2, arg3, arg4, arg5
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<5, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
typedef typename lambda< typename F::arg5, Tag, false >::type arg5;
|
||||
|
||||
|
||||
typedef mpl::protect< bind5<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type
|
||||
, arg1, arg2, arg3, arg4, arg5
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
} // namespace aux
|
||||
|
||||
template< typename T, bool Protect = true >
|
||||
template<
|
||||
typename T
|
||||
, typename Tag = void_
|
||||
, bool Protect = true
|
||||
>
|
||||
struct lambda
|
||||
: aux::lambda_impl<
|
||||
::boost::mpl::aux::template_arity<T>::value
|
||||
|
||||
, Protect
|
||||
|
||||
>::template result_<T>
|
||||
>::template result_< T,Tag >
|
||||
{
|
||||
};
|
||||
|
||||
|
@@ -1,9 +1,8 @@
|
||||
// preprocessed version of 'boost/mpl/quote.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/config/use_preprocessed.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
namespace boost {
|
||||
namespace mpl {
|
||||
|
||||
template< bool > struct quote_impl
|
||||
{
|
||||
template< typename T > struct result_
|
||||
@@ -22,6 +21,7 @@ template<> struct quote_impl<false>
|
||||
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote1
|
||||
{
|
||||
@@ -36,6 +36,7 @@ struct quote1
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote2
|
||||
{
|
||||
@@ -50,6 +51,7 @@ struct quote2
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote3
|
||||
{
|
||||
@@ -64,6 +66,7 @@ struct quote3
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote4
|
||||
{
|
||||
@@ -85,6 +88,7 @@ template<
|
||||
, typename P5
|
||||
>
|
||||
class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote5
|
||||
{
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// preprocessed version of 'boost/mpl/aux_/full_lambda.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/lambda_expr.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
namespace boost {
|
||||
@@ -6,8 +6,9 @@ namespace mpl {
|
||||
|
||||
template<
|
||||
typename T
|
||||
, typename Tag
|
||||
, typename Protect = false_
|
||||
|
||||
|
||||
>
|
||||
struct lambda_impl
|
||||
{
|
||||
@@ -17,10 +18,11 @@ struct lambda_impl
|
||||
|
||||
template<
|
||||
typename T
|
||||
|
||||
, typename Tag = void_
|
||||
|
||||
>
|
||||
struct lambda
|
||||
: lambda_impl< T,false_ >
|
||||
: lambda_impl< T,Tag,false_ >
|
||||
{
|
||||
};
|
||||
|
||||
@@ -43,8 +45,8 @@ struct lambda_or< false,false,false,false,false >
|
||||
|
||||
} // namespace aux
|
||||
|
||||
template< int N, typename Protect >
|
||||
struct lambda_impl< arg<N>,Protect >
|
||||
template< int N, typename Tag, typename Protect >
|
||||
struct lambda_impl< arg<N>,Tag,Protect >
|
||||
{
|
||||
typedef true_ is_le;
|
||||
typedef arg<N> type;
|
||||
@@ -52,11 +54,13 @@ struct lambda_impl< arg<N>,Protect >
|
||||
|
||||
template<
|
||||
typename F
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind0<F>
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -68,16 +72,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename T1
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1> >
|
||||
: lambda_impl< F<T1>,true_ >
|
||||
struct lambda< F<T1>,Tag >
|
||||
: lambda_impl< F<T1>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1 > class F
|
||||
, typename L1
|
||||
>
|
||||
@@ -90,24 +95,26 @@ struct le_result1
|
||||
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename Tag
|
||||
, typename L1
|
||||
>
|
||||
struct le_result1< true_,false_,F,L1 >
|
||||
struct le_result1< true_,Tag,false_,F,L1 >
|
||||
{
|
||||
typedef bind1<
|
||||
quote1<F>
|
||||
quote1< F,Tag >
|
||||
, typename L1::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename Tag
|
||||
, typename L1
|
||||
>
|
||||
struct le_result1< true_,true_,F,L1 >
|
||||
struct le_result1< true_,Tag,true_,F,L1 >
|
||||
{
|
||||
typedef protect< bind1<
|
||||
quote1<F>
|
||||
quote1< F,Tag >
|
||||
, typename L1::type
|
||||
> > type;
|
||||
};
|
||||
@@ -117,19 +124,21 @@ struct le_result1< true_,true_,F,L1 >
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename T1
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F<T1>, Protect
|
||||
struct lambda_impl<
|
||||
F<T1>, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value
|
||||
> is_le;
|
||||
|
||||
typedef typename aux::le_result1<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1
|
||||
@@ -138,11 +147,13 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind1< F,T1 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -155,16 +166,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename T1, typename T2
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2> >
|
||||
: lambda_impl< F<T1,T2>,true_ >
|
||||
struct lambda< F<T1,T2>,Tag >
|
||||
: lambda_impl< F<T1,T2>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2 > class F
|
||||
, typename L1, typename L2
|
||||
>
|
||||
@@ -177,24 +189,26 @@ struct le_result2
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2
|
||||
>
|
||||
struct le_result2< true_,false_,F,L1,L2 >
|
||||
struct le_result2< true_,Tag,false_,F,L1,L2 >
|
||||
{
|
||||
typedef bind2<
|
||||
quote2<F>
|
||||
quote2< F,Tag >
|
||||
, typename L1::type, typename L2::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2
|
||||
>
|
||||
struct le_result2< true_,true_,F,L1,L2 >
|
||||
struct le_result2< true_,Tag,true_,F,L1,L2 >
|
||||
{
|
||||
typedef protect< bind2<
|
||||
quote2<F>
|
||||
quote2< F,Tag >
|
||||
, typename L1::type, typename L2::type
|
||||
> > type;
|
||||
};
|
||||
@@ -204,14 +218,15 @@ struct le_result2< true_,true_,F,L1,L2 >
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename T1, typename T2
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2 >, Protect
|
||||
struct lambda_impl<
|
||||
F< T1,T2 >, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value
|
||||
@@ -219,6 +234,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result2<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2
|
||||
@@ -227,11 +243,13 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind2< F,T1,T2 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -244,16 +262,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3> >
|
||||
: lambda_impl< F<T1,T2,T3>,true_ >
|
||||
struct lambda< F<T1,T2,T3>,Tag >
|
||||
: lambda_impl< F<T1,T2,T3>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3 > class F
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
@@ -266,24 +285,26 @@ struct le_result3
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
struct le_result3< true_,false_,F,L1,L2,L3 >
|
||||
struct le_result3< true_,Tag,false_,F,L1,L2,L3 >
|
||||
{
|
||||
typedef bind3<
|
||||
quote3<F>
|
||||
quote3< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
struct le_result3< true_,true_,F,L1,L2,L3 >
|
||||
struct le_result3< true_,Tag,true_,F,L1,L2,L3 >
|
||||
{
|
||||
typedef protect< bind3<
|
||||
quote3<F>
|
||||
quote3< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
> > type;
|
||||
};
|
||||
@@ -293,15 +314,16 @@ struct le_result3< true_,true_,F,L1,L2,L3 >
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3 >, Protect
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3 >, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -309,6 +331,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result3<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3
|
||||
@@ -317,11 +340,13 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind3< F,T1,T2,T3 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -334,16 +359,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3,T4> >
|
||||
: lambda_impl< F<T1,T2,T3,T4>,true_ >
|
||||
struct lambda< F<T1,T2,T3,T4>,Tag >
|
||||
: lambda_impl< F<T1,T2,T3,T4>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
@@ -357,12 +383,13 @@ struct le_result4
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
struct le_result4< true_,false_,F,L1,L2,L3,L4 >
|
||||
struct le_result4< true_,Tag,false_,F,L1,L2,L3,L4 >
|
||||
{
|
||||
typedef bind4<
|
||||
quote4<F>
|
||||
quote4< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type
|
||||
> type;
|
||||
@@ -370,12 +397,13 @@ struct le_result4< true_,false_,F,L1,L2,L3,L4 >
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
struct le_result4< true_,true_,F,L1,L2,L3,L4 >
|
||||
struct le_result4< true_,Tag,true_,F,L1,L2,L3,L4 >
|
||||
{
|
||||
typedef protect< bind4<
|
||||
quote4<F>
|
||||
quote4< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type
|
||||
> > type;
|
||||
@@ -386,16 +414,17 @@ struct le_result4< true_,true_,F,L1,L2,L3,L4 >
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4 >, Protect
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4 >, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl<T4> l4;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
typedef lambda_impl< T4,Tag > l4;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -404,6 +433,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result4<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3, l4
|
||||
@@ -412,11 +442,13 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind4< F,T1,T2,T3,T4 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -433,16 +465,17 @@ template<
|
||||
>
|
||||
class F
|
||||
, typename T1, typename T2, typename T3, typename T4, typename T5
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3,T4,T5> >
|
||||
: lambda_impl< F<T1,T2,T3,T4,T5>,true_ >
|
||||
struct lambda< F<T1,T2,T3,T4,T5>,Tag >
|
||||
: lambda_impl< F<T1,T2,T3,T4,T5>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
|
||||
, typename L1, typename L2, typename L3, typename L4, typename L5
|
||||
>
|
||||
@@ -460,12 +493,13 @@ template<
|
||||
, typename P5
|
||||
>
|
||||
class F
|
||||
, typename Tag
|
||||
, 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_,Tag,false_,F,L1,L2,L3,L4,L5 >
|
||||
{
|
||||
typedef bind5<
|
||||
quote5<F>
|
||||
quote5< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type, typename L5::type
|
||||
> type;
|
||||
@@ -477,12 +511,13 @@ template<
|
||||
, typename P5
|
||||
>
|
||||
class F
|
||||
, typename Tag
|
||||
, 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_,Tag,true_,F,L1,L2,L3,L4,L5 >
|
||||
{
|
||||
typedef protect< bind5<
|
||||
quote5<F>
|
||||
quote5< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type, typename L5::type
|
||||
> > type;
|
||||
@@ -497,17 +532,18 @@ template<
|
||||
>
|
||||
class F
|
||||
, typename T1, typename T2, typename T3, typename T4, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4,T5 >, Protect
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4,T5 >, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl<T4> l4;
|
||||
typedef lambda_impl<T5> l5;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
typedef lambda_impl< T4,Tag > l4;
|
||||
typedef lambda_impl< T5,Tag > l5;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -516,6 +552,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result5<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3, l4, l5
|
||||
@@ -525,11 +562,13 @@ struct lambda_impl<
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind5< F,T1,T2,T3,T4,T5 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -540,23 +579,26 @@ struct lambda_impl<
|
||||
};
|
||||
|
||||
// special case for 'protect'
|
||||
template< typename T, typename Protect >
|
||||
struct lambda_impl< protect<T>,Protect >
|
||||
template< typename T, typename Tag, typename Protect >
|
||||
struct lambda_impl< protect<T>,Tag,Protect >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef protect<T> type;
|
||||
};
|
||||
|
||||
// specializations for main 'bind', 'bind1st' and 'bind2nd' forms
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind< F,T1,T2,T3,T4,T5 >
|
||||
, Protect
|
||||
|
||||
, Tag
|
||||
, Protect
|
||||
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -565,9 +607,10 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl< bind1st<F,T>,Protect >
|
||||
struct lambda_impl< bind1st<F,T>,Tag,Protect >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef bind1st< F,T > type;
|
||||
@@ -575,9 +618,10 @@ struct lambda_impl< bind1st<F,T>,Protect >
|
||||
|
||||
template<
|
||||
typename F, typename T
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl< bind2nd<F,T>,Protect >
|
||||
struct lambda_impl< bind2nd<F,T>,Tag,Protect >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef bind2nd< F,T > type;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// preprocessed version of 'boost/mpl/lambda_no_ctps.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/config/use_preprocessed.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
namespace boost {
|
||||
@@ -8,7 +8,7 @@ namespace aux {
|
||||
|
||||
template< int arity_, bool Protect > struct lambda_impl
|
||||
{
|
||||
template< typename T > struct result_
|
||||
template< typename T, typename Tag > struct result_
|
||||
{
|
||||
typedef T type;
|
||||
};
|
||||
@@ -16,142 +16,184 @@ template< int arity_, bool Protect > struct lambda_impl
|
||||
|
||||
template<> struct lambda_impl<1, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef bind1<
|
||||
f_
|
||||
, typename lambda< typename F::arg1, false >::type
|
||||
, arg1
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<1, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef mpl::protect< bind1<
|
||||
f_
|
||||
, typename lambda< typename F::arg1, false >::type
|
||||
, arg1
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<2, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
|
||||
|
||||
typedef bind2<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type
|
||||
, arg1, arg2
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<2, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
|
||||
|
||||
typedef mpl::protect< bind2<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type
|
||||
, arg1, arg2
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<3, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
|
||||
|
||||
typedef bind3<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type
|
||||
, arg1, arg2, arg3
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<3, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
|
||||
|
||||
typedef mpl::protect< bind3<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type
|
||||
, arg1, arg2, arg3
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<4, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
|
||||
|
||||
typedef bind4<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type
|
||||
, arg1, arg2, arg3, arg4
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<4, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
|
||||
|
||||
typedef mpl::protect< bind4<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type
|
||||
, arg1, arg2, arg3, arg4
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<5, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
typedef typename lambda< typename F::arg5, Tag, false >::type arg5;
|
||||
|
||||
|
||||
typedef bind5<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type
|
||||
, arg1, arg2, arg3, arg4, arg5
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<5, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
typedef typename lambda< typename F::arg5, Tag, false >::type arg5;
|
||||
|
||||
|
||||
typedef mpl::protect< bind5<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type
|
||||
, arg1, arg2, arg3, arg4, arg5
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
} // namespace aux
|
||||
|
||||
template< typename T, bool Protect = true >
|
||||
template<
|
||||
typename T
|
||||
, typename Tag = void_
|
||||
, bool Protect = true
|
||||
>
|
||||
struct lambda
|
||||
: aux::lambda_impl<
|
||||
::boost::mpl::aux::template_arity<T>::value
|
||||
|
||||
, Protect
|
||||
|
||||
>::template result_<T>
|
||||
>::template result_< T,Tag >
|
||||
{
|
||||
};
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// preprocessed version of 'boost/mpl/quote.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/config/use_preprocessed.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
namespace boost {
|
||||
@@ -19,6 +19,7 @@ struct quote_impl< T,false >
|
||||
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote1
|
||||
{
|
||||
@@ -32,6 +33,7 @@ struct quote1
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote2
|
||||
{
|
||||
@@ -45,6 +47,7 @@ struct quote2
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote3
|
||||
{
|
||||
@@ -58,6 +61,7 @@ struct quote3
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote4
|
||||
{
|
||||
@@ -78,6 +82,7 @@ template<
|
||||
, typename P5
|
||||
>
|
||||
class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote5
|
||||
{
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// preprocessed version of 'boost/mpl/aux_/full_lambda.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/lambda_expr.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
namespace boost {
|
||||
@@ -6,8 +6,9 @@ namespace mpl {
|
||||
|
||||
template<
|
||||
typename T
|
||||
, typename Tag
|
||||
, typename Protect = false_
|
||||
|
||||
|
||||
>
|
||||
struct lambda_impl
|
||||
{
|
||||
@@ -17,10 +18,11 @@ struct lambda_impl
|
||||
|
||||
template<
|
||||
typename T
|
||||
|
||||
, typename Tag = void_
|
||||
|
||||
>
|
||||
struct lambda
|
||||
: lambda_impl< T,false_ >
|
||||
: lambda_impl< T,Tag,false_ >
|
||||
{
|
||||
};
|
||||
|
||||
@@ -43,8 +45,8 @@ struct lambda_or< false,false,false,false,false >
|
||||
|
||||
} // namespace aux
|
||||
|
||||
template< int N, typename Protect >
|
||||
struct lambda_impl< arg<N>,Protect >
|
||||
template< int N, typename Tag, typename Protect >
|
||||
struct lambda_impl< arg<N>,Tag,Protect >
|
||||
{
|
||||
typedef true_ is_le;
|
||||
typedef arg<N> type;
|
||||
@@ -52,11 +54,13 @@ struct lambda_impl< arg<N>,Protect >
|
||||
|
||||
template<
|
||||
typename F
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind0<F>
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -68,16 +72,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename T1
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1> >
|
||||
: lambda_impl< F<T1>,true_ >
|
||||
struct lambda< F<T1>,Tag >
|
||||
: lambda_impl< F<T1>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1 > class F
|
||||
, typename L1
|
||||
>
|
||||
@@ -90,24 +95,26 @@ struct le_result1
|
||||
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename Tag
|
||||
, typename L1
|
||||
>
|
||||
struct le_result1< true_,false_,F,L1 >
|
||||
struct le_result1< true_,Tag,false_,F,L1 >
|
||||
{
|
||||
typedef bind1<
|
||||
quote1<F>
|
||||
quote1< F,Tag >
|
||||
, typename L1::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename Tag
|
||||
, typename L1
|
||||
>
|
||||
struct le_result1< true_,true_,F,L1 >
|
||||
struct le_result1< true_,Tag,true_,F,L1 >
|
||||
{
|
||||
typedef protect< bind1<
|
||||
quote1<F>
|
||||
quote1< F,Tag >
|
||||
, typename L1::type
|
||||
> > type;
|
||||
};
|
||||
@@ -117,19 +124,21 @@ struct le_result1< true_,true_,F,L1 >
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename T1
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F<T1>, Protect
|
||||
struct lambda_impl<
|
||||
F<T1>, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value
|
||||
> is_le;
|
||||
|
||||
typedef typename aux::le_result1<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1
|
||||
@@ -138,11 +147,13 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind1< F,T1 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -155,16 +166,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename T1, typename T2
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2> >
|
||||
: lambda_impl< F<T1,T2>,true_ >
|
||||
struct lambda< F<T1,T2>,Tag >
|
||||
: lambda_impl< F<T1,T2>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2 > class F
|
||||
, typename L1, typename L2
|
||||
>
|
||||
@@ -177,24 +189,26 @@ struct le_result2
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2
|
||||
>
|
||||
struct le_result2< true_,false_,F,L1,L2 >
|
||||
struct le_result2< true_,Tag,false_,F,L1,L2 >
|
||||
{
|
||||
typedef bind2<
|
||||
quote2<F>
|
||||
quote2< F,Tag >
|
||||
, typename L1::type, typename L2::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2
|
||||
>
|
||||
struct le_result2< true_,true_,F,L1,L2 >
|
||||
struct le_result2< true_,Tag,true_,F,L1,L2 >
|
||||
{
|
||||
typedef protect< bind2<
|
||||
quote2<F>
|
||||
quote2< F,Tag >
|
||||
, typename L1::type, typename L2::type
|
||||
> > type;
|
||||
};
|
||||
@@ -204,14 +218,15 @@ struct le_result2< true_,true_,F,L1,L2 >
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename T1, typename T2
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2 >, Protect
|
||||
struct lambda_impl<
|
||||
F< T1,T2 >, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value
|
||||
@@ -219,6 +234,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result2<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2
|
||||
@@ -227,11 +243,13 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind2< F,T1,T2 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -244,16 +262,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3> >
|
||||
: lambda_impl< F<T1,T2,T3>,true_ >
|
||||
struct lambda< F<T1,T2,T3>,Tag >
|
||||
: lambda_impl< F<T1,T2,T3>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3 > class F
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
@@ -266,24 +285,26 @@ struct le_result3
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
struct le_result3< true_,false_,F,L1,L2,L3 >
|
||||
struct le_result3< true_,Tag,false_,F,L1,L2,L3 >
|
||||
{
|
||||
typedef bind3<
|
||||
quote3<F>
|
||||
quote3< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
struct le_result3< true_,true_,F,L1,L2,L3 >
|
||||
struct le_result3< true_,Tag,true_,F,L1,L2,L3 >
|
||||
{
|
||||
typedef protect< bind3<
|
||||
quote3<F>
|
||||
quote3< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
> > type;
|
||||
};
|
||||
@@ -293,15 +314,16 @@ struct le_result3< true_,true_,F,L1,L2,L3 >
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3 >, Protect
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3 >, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -309,6 +331,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result3<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3
|
||||
@@ -317,11 +340,13 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind3< F,T1,T2,T3 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -334,16 +359,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3,T4> >
|
||||
: lambda_impl< F<T1,T2,T3,T4>,true_ >
|
||||
struct lambda< F<T1,T2,T3,T4>,Tag >
|
||||
: lambda_impl< F<T1,T2,T3,T4>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
@@ -357,12 +383,13 @@ struct le_result4
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
struct le_result4< true_,false_,F,L1,L2,L3,L4 >
|
||||
struct le_result4< true_,Tag,false_,F,L1,L2,L3,L4 >
|
||||
{
|
||||
typedef bind4<
|
||||
quote4<F>
|
||||
quote4< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type
|
||||
> type;
|
||||
@@ -370,12 +397,13 @@ struct le_result4< true_,false_,F,L1,L2,L3,L4 >
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
struct le_result4< true_,true_,F,L1,L2,L3,L4 >
|
||||
struct le_result4< true_,Tag,true_,F,L1,L2,L3,L4 >
|
||||
{
|
||||
typedef protect< bind4<
|
||||
quote4<F>
|
||||
quote4< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type
|
||||
> > type;
|
||||
@@ -386,16 +414,17 @@ struct le_result4< true_,true_,F,L1,L2,L3,L4 >
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4 >, Protect
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4 >, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl<T4> l4;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
typedef lambda_impl< T4,Tag > l4;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -404,6 +433,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result4<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3, l4
|
||||
@@ -412,11 +442,13 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind4< F,T1,T2,T3,T4 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -433,16 +465,17 @@ template<
|
||||
>
|
||||
class F
|
||||
, typename T1, typename T2, typename T3, typename T4, typename T5
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3,T4,T5> >
|
||||
: lambda_impl< F<T1,T2,T3,T4,T5>,true_ >
|
||||
struct lambda< F<T1,T2,T3,T4,T5>,Tag >
|
||||
: lambda_impl< F<T1,T2,T3,T4,T5>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
|
||||
, typename L1, typename L2, typename L3, typename L4, typename L5
|
||||
>
|
||||
@@ -460,12 +493,13 @@ template<
|
||||
, typename P5
|
||||
>
|
||||
class F
|
||||
, typename Tag
|
||||
, 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_,Tag,false_,F,L1,L2,L3,L4,L5 >
|
||||
{
|
||||
typedef bind5<
|
||||
quote5<F>
|
||||
quote5< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type, typename L5::type
|
||||
> type;
|
||||
@@ -477,12 +511,13 @@ template<
|
||||
, typename P5
|
||||
>
|
||||
class F
|
||||
, typename Tag
|
||||
, 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_,Tag,true_,F,L1,L2,L3,L4,L5 >
|
||||
{
|
||||
typedef protect< bind5<
|
||||
quote5<F>
|
||||
quote5< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type, typename L5::type
|
||||
> > type;
|
||||
@@ -497,17 +532,18 @@ template<
|
||||
>
|
||||
class F
|
||||
, typename T1, typename T2, typename T3, typename T4, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4,T5 >, Protect
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4,T5 >, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl<T4> l4;
|
||||
typedef lambda_impl<T5> l5;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
typedef lambda_impl< T4,Tag > l4;
|
||||
typedef lambda_impl< T5,Tag > l5;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -516,6 +552,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result5<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3, l4, l5
|
||||
@@ -525,11 +562,13 @@ struct lambda_impl<
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind5< F,T1,T2,T3,T4,T5 >
|
||||
, Protect
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -540,23 +579,26 @@ struct lambda_impl<
|
||||
};
|
||||
|
||||
// special case for 'protect'
|
||||
template< typename T, typename Protect >
|
||||
struct lambda_impl< protect<T>,Protect >
|
||||
template< typename T, typename Tag, typename Protect >
|
||||
struct lambda_impl< protect<T>,Tag,Protect >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef protect<T> type;
|
||||
};
|
||||
|
||||
// specializations for main 'bind', 'bind1st' and 'bind2nd' forms
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind< F,T1,T2,T3,T4,T5 >
|
||||
, Protect
|
||||
|
||||
, Tag
|
||||
, Protect
|
||||
|
||||
>
|
||||
{
|
||||
typedef false_ is_le;
|
||||
@@ -565,9 +607,10 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl< bind1st<F,T>,Protect >
|
||||
struct lambda_impl< bind1st<F,T>,Tag,Protect >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef bind1st< F,T > type;
|
||||
@@ -575,9 +618,10 @@ struct lambda_impl< bind1st<F,T>,Protect >
|
||||
|
||||
template<
|
||||
typename F, typename T
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl< bind2nd<F,T>,Protect >
|
||||
struct lambda_impl< bind2nd<F,T>,Tag,Protect >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef bind2nd< F,T > type;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// preprocessed version of 'boost/mpl/lambda_no_ctps.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/config/use_preprocessed.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
namespace boost {
|
||||
@@ -8,7 +8,7 @@ namespace aux {
|
||||
|
||||
template< int arity_, bool Protect > struct lambda_impl
|
||||
{
|
||||
template< typename T > struct result_
|
||||
template< typename T, typename Tag > struct result_
|
||||
{
|
||||
typedef T type;
|
||||
};
|
||||
@@ -16,142 +16,184 @@ template< int arity_, bool Protect > struct lambda_impl
|
||||
|
||||
template<> struct lambda_impl<1, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef bind1<
|
||||
f_
|
||||
, typename lambda< typename F::arg1, false >::type
|
||||
, arg1
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<1, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef mpl::protect< bind1<
|
||||
f_
|
||||
, typename lambda< typename F::arg1, false >::type
|
||||
, arg1
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<2, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
|
||||
|
||||
typedef bind2<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type
|
||||
, arg1, arg2
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<2, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
|
||||
|
||||
typedef mpl::protect< bind2<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type
|
||||
, arg1, arg2
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<3, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
|
||||
|
||||
typedef bind3<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type
|
||||
, arg1, arg2, arg3
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<3, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
|
||||
|
||||
typedef mpl::protect< bind3<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type
|
||||
, arg1, arg2, arg3
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<4, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
|
||||
|
||||
typedef bind4<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type
|
||||
, arg1, arg2, arg3, arg4
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<4, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
|
||||
|
||||
typedef mpl::protect< bind4<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type
|
||||
, arg1, arg2, arg3, arg4
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<5, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
typedef typename lambda< typename F::arg5, Tag, false >::type arg5;
|
||||
|
||||
|
||||
typedef bind5<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type
|
||||
, arg1, arg2, arg3, arg4, arg5
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<5, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
typedef typename lambda< typename F::arg5, Tag, false >::type arg5;
|
||||
|
||||
|
||||
typedef mpl::protect< bind5<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type
|
||||
, arg1, arg2, arg3, arg4, arg5
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
} // namespace aux
|
||||
|
||||
template< typename T, bool Protect = true >
|
||||
template<
|
||||
typename T
|
||||
, typename Tag = void_
|
||||
, bool Protect = true
|
||||
>
|
||||
struct lambda
|
||||
: aux::lambda_impl<
|
||||
::boost::mpl::aux::template_arity<T>::value
|
||||
|
||||
, Protect
|
||||
|
||||
>::template result_<T>
|
||||
>::template result_< T,Tag >
|
||||
{
|
||||
};
|
||||
|
||||
|
@@ -1,9 +1,8 @@
|
||||
// preprocessed version of 'boost/mpl/quote.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/config/use_preprocessed.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
namespace boost {
|
||||
namespace mpl {
|
||||
|
||||
template< bool > struct quote_impl
|
||||
{
|
||||
template< typename T > struct result_
|
||||
@@ -22,6 +21,7 @@ template<> struct quote_impl<false>
|
||||
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote1
|
||||
{
|
||||
@@ -36,6 +36,7 @@ struct quote1
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote2
|
||||
{
|
||||
@@ -50,6 +51,7 @@ struct quote2
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote3
|
||||
{
|
||||
@@ -64,6 +66,7 @@ struct quote3
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote4
|
||||
{
|
||||
@@ -85,6 +88,7 @@ template<
|
||||
, typename P5
|
||||
>
|
||||
class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote5
|
||||
{
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// preprocessed version of 'boost/mpl/aux_/full_lambda.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/lambda_expr.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
namespace boost {
|
||||
@@ -6,6 +6,7 @@ namespace mpl {
|
||||
|
||||
template<
|
||||
typename T
|
||||
, typename Tag
|
||||
, typename Protect = false_
|
||||
|
||||
>
|
||||
@@ -17,10 +18,11 @@ struct lambda_impl
|
||||
|
||||
template<
|
||||
typename T
|
||||
, typename Tag = void_
|
||||
|
||||
>
|
||||
struct lambda
|
||||
: lambda_impl< T,false_ >
|
||||
: lambda_impl< T,Tag,false_ >
|
||||
{
|
||||
};
|
||||
|
||||
@@ -43,8 +45,8 @@ struct lambda_or< false,false,false,false,false >
|
||||
|
||||
} // namespace aux
|
||||
|
||||
template< int N, typename Protect >
|
||||
struct lambda_impl< arg<N>,Protect >
|
||||
template< int N, typename Tag, typename Protect >
|
||||
struct lambda_impl< arg<N>,Tag,Protect >
|
||||
{
|
||||
typedef true_ is_le;
|
||||
typedef arg<N> type;
|
||||
@@ -52,10 +54,12 @@ struct lambda_impl< arg<N>,Protect >
|
||||
|
||||
template<
|
||||
typename F
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind0<F>
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
@@ -68,16 +72,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename T1
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1> >
|
||||
: lambda_impl< F<T1>,true_ >
|
||||
struct lambda< F<T1>,Tag >
|
||||
: lambda_impl< F<T1>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1 > class F
|
||||
, typename L1
|
||||
>
|
||||
@@ -90,24 +95,26 @@ struct le_result1
|
||||
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename Tag
|
||||
, typename L1
|
||||
>
|
||||
struct le_result1< true_,false_,F,L1 >
|
||||
struct le_result1< true_,Tag,false_,F,L1 >
|
||||
{
|
||||
typedef bind1<
|
||||
quote1<F>
|
||||
quote1< F,Tag >
|
||||
, typename L1::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename Tag
|
||||
, typename L1
|
||||
>
|
||||
struct le_result1< true_,true_,F,L1 >
|
||||
struct le_result1< true_,Tag,true_,F,L1 >
|
||||
{
|
||||
typedef protect< bind1<
|
||||
quote1<F>
|
||||
quote1< F,Tag >
|
||||
, typename L1::type
|
||||
> > type;
|
||||
};
|
||||
@@ -117,19 +124,21 @@ struct le_result1< true_,true_,F,L1 >
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename T1
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F<T1>, Protect
|
||||
F<T1>, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value
|
||||
> is_le;
|
||||
|
||||
typedef typename aux::le_result1<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1
|
||||
@@ -138,10 +147,12 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind1< F,T1 >
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
@@ -155,16 +166,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename T1, typename T2
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2> >
|
||||
: lambda_impl< F<T1,T2>,true_ >
|
||||
struct lambda< F<T1,T2>,Tag >
|
||||
: lambda_impl< F<T1,T2>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2 > class F
|
||||
, typename L1, typename L2
|
||||
>
|
||||
@@ -177,24 +189,26 @@ struct le_result2
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2
|
||||
>
|
||||
struct le_result2< true_,false_,F,L1,L2 >
|
||||
struct le_result2< true_,Tag,false_,F,L1,L2 >
|
||||
{
|
||||
typedef bind2<
|
||||
quote2<F>
|
||||
quote2< F,Tag >
|
||||
, typename L1::type, typename L2::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2
|
||||
>
|
||||
struct le_result2< true_,true_,F,L1,L2 >
|
||||
struct le_result2< true_,Tag,true_,F,L1,L2 >
|
||||
{
|
||||
typedef protect< bind2<
|
||||
quote2<F>
|
||||
quote2< F,Tag >
|
||||
, typename L1::type, typename L2::type
|
||||
> > type;
|
||||
};
|
||||
@@ -204,14 +218,15 @@ struct le_result2< true_,true_,F,L1,L2 >
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename T1, typename T2
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2 >, Protect
|
||||
F< T1,T2 >, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value
|
||||
@@ -219,6 +234,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result2<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2
|
||||
@@ -227,10 +243,12 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind2< F,T1,T2 >
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
@@ -244,16 +262,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3> >
|
||||
: lambda_impl< F<T1,T2,T3>,true_ >
|
||||
struct lambda< F<T1,T2,T3>,Tag >
|
||||
: lambda_impl< F<T1,T2,T3>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3 > class F
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
@@ -266,24 +285,26 @@ struct le_result3
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
struct le_result3< true_,false_,F,L1,L2,L3 >
|
||||
struct le_result3< true_,Tag,false_,F,L1,L2,L3 >
|
||||
{
|
||||
typedef bind3<
|
||||
quote3<F>
|
||||
quote3< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
> type;
|
||||
};
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3
|
||||
>
|
||||
struct le_result3< true_,true_,F,L1,L2,L3 >
|
||||
struct le_result3< true_,Tag,true_,F,L1,L2,L3 >
|
||||
{
|
||||
typedef protect< bind3<
|
||||
quote3<F>
|
||||
quote3< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
> > type;
|
||||
};
|
||||
@@ -293,15 +314,16 @@ struct le_result3< true_,true_,F,L1,L2,L3 >
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3 >, Protect
|
||||
F< T1,T2,T3 >, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -309,6 +331,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result3<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3
|
||||
@@ -317,10 +340,12 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind3< F,T1,T2,T3 >
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
@@ -334,16 +359,17 @@ struct lambda_impl<
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3,T4> >
|
||||
: lambda_impl< F<T1,T2,T3,T4>,true_ >
|
||||
struct lambda< F<T1,T2,T3,T4>,Tag >
|
||||
: lambda_impl< F<T1,T2,T3,T4>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
@@ -357,12 +383,13 @@ struct le_result4
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
struct le_result4< true_,false_,F,L1,L2,L3,L4 >
|
||||
struct le_result4< true_,Tag,false_,F,L1,L2,L3,L4 >
|
||||
{
|
||||
typedef bind4<
|
||||
quote4<F>
|
||||
quote4< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type
|
||||
> type;
|
||||
@@ -370,12 +397,13 @@ struct le_result4< true_,false_,F,L1,L2,L3,L4 >
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename Tag
|
||||
, typename L1, typename L2, typename L3, typename L4
|
||||
>
|
||||
struct le_result4< true_,true_,F,L1,L2,L3,L4 >
|
||||
struct le_result4< true_,Tag,true_,F,L1,L2,L3,L4 >
|
||||
{
|
||||
typedef protect< bind4<
|
||||
quote4<F>
|
||||
quote4< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type
|
||||
> > type;
|
||||
@@ -386,16 +414,17 @@ struct le_result4< true_,true_,F,L1,L2,L3,L4 >
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4 >, Protect
|
||||
F< T1,T2,T3,T4 >, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl<T4> l4;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
typedef lambda_impl< T4,Tag > l4;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -404,6 +433,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result4<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3, l4
|
||||
@@ -412,10 +442,12 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind4< F,T1,T2,T3,T4 >
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
@@ -433,16 +465,17 @@ template<
|
||||
>
|
||||
class F
|
||||
, typename T1, typename T2, typename T3, typename T4, typename T5
|
||||
, typename Tag
|
||||
>
|
||||
struct lambda< F<T1,T2,T3,T4,T5> >
|
||||
: lambda_impl< F<T1,T2,T3,T4,T5>,true_ >
|
||||
struct lambda< F<T1,T2,T3,T4,T5>,Tag >
|
||||
: lambda_impl< F<T1,T2,T3,T4,T5>,Tag,true_ >
|
||||
{
|
||||
};
|
||||
|
||||
namespace aux {
|
||||
|
||||
template<
|
||||
typename IsLE, typename Protect
|
||||
typename IsLE, typename Tag, typename Protect
|
||||
, template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
|
||||
, typename L1, typename L2, typename L3, typename L4, typename L5
|
||||
>
|
||||
@@ -460,12 +493,13 @@ template<
|
||||
, typename P5
|
||||
>
|
||||
class F
|
||||
, typename Tag
|
||||
, 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_,Tag,false_,F,L1,L2,L3,L4,L5 >
|
||||
{
|
||||
typedef bind5<
|
||||
quote5<F>
|
||||
quote5< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type, typename L5::type
|
||||
> type;
|
||||
@@ -477,12 +511,13 @@ template<
|
||||
, typename P5
|
||||
>
|
||||
class F
|
||||
, typename Tag
|
||||
, 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_,Tag,true_,F,L1,L2,L3,L4,L5 >
|
||||
{
|
||||
typedef protect< bind5<
|
||||
quote5<F>
|
||||
quote5< F,Tag >
|
||||
, typename L1::type, typename L2::type, typename L3::type
|
||||
, typename L4::type, typename L5::type
|
||||
> > type;
|
||||
@@ -497,17 +532,18 @@ template<
|
||||
>
|
||||
class F
|
||||
, typename T1, typename T2, typename T3, typename T4, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
F< T1,T2,T3,T4,T5 >, Protect
|
||||
F< T1,T2,T3,T4,T5 >, Tag, Protect
|
||||
>
|
||||
{
|
||||
typedef lambda_impl<T1> l1;
|
||||
typedef lambda_impl<T2> l2;
|
||||
typedef lambda_impl<T3> l3;
|
||||
typedef lambda_impl<T4> l4;
|
||||
typedef lambda_impl<T5> l5;
|
||||
typedef lambda_impl< T1,Tag > l1;
|
||||
typedef lambda_impl< T2,Tag > l2;
|
||||
typedef lambda_impl< T3,Tag > l3;
|
||||
typedef lambda_impl< T4,Tag > l4;
|
||||
typedef lambda_impl< T5,Tag > l5;
|
||||
|
||||
typedef aux::lambda_or<
|
||||
l1::is_le::value, l2::is_le::value, l3::is_le::value
|
||||
@@ -516,6 +552,7 @@ struct lambda_impl<
|
||||
|
||||
typedef typename aux::le_result5<
|
||||
typename is_le::type
|
||||
, Tag
|
||||
, Protect
|
||||
, F
|
||||
, l1, l2, l3, l4, l5
|
||||
@@ -525,10 +562,12 @@ struct lambda_impl<
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind5< F,T1,T2,T3,T4,T5 >
|
||||
, Tag
|
||||
, Protect
|
||||
>
|
||||
{
|
||||
@@ -540,8 +579,8 @@ struct lambda_impl<
|
||||
};
|
||||
|
||||
// special case for 'protect'
|
||||
template< typename T, typename Protect >
|
||||
struct lambda_impl< protect<T>,Protect >
|
||||
template< typename T, typename Tag, typename Protect >
|
||||
struct lambda_impl< protect<T>,Tag,Protect >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef protect<T> type;
|
||||
@@ -552,10 +591,12 @@ struct lambda_impl< protect<T>,Protect >
|
||||
template<
|
||||
typename F, typename T1, typename T2, typename T3, typename T4
|
||||
, typename T5
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl<
|
||||
bind< F,T1,T2,T3,T4,T5 >
|
||||
, Tag
|
||||
, Protect
|
||||
|
||||
>
|
||||
@@ -566,9 +607,10 @@ struct lambda_impl<
|
||||
|
||||
template<
|
||||
typename F, typename T
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl< bind1st<F,T>,Protect >
|
||||
struct lambda_impl< bind1st<F,T>,Tag,Protect >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef bind1st< F,T > type;
|
||||
@@ -576,9 +618,10 @@ struct lambda_impl< bind1st<F,T>,Protect >
|
||||
|
||||
template<
|
||||
typename F, typename T
|
||||
, typename Tag
|
||||
, typename Protect
|
||||
>
|
||||
struct lambda_impl< bind2nd<F,T>,Protect >
|
||||
struct lambda_impl< bind2nd<F,T>,Tag,Protect >
|
||||
{
|
||||
typedef false_ is_le;
|
||||
typedef bind2nd< F,T > type;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// preprocessed version of 'boost/mpl/lambda_no_ctps.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/config/use_preprocessed.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
namespace boost {
|
||||
@@ -8,7 +8,7 @@ namespace aux {
|
||||
|
||||
template< int arity_, bool Protect > struct lambda_impl
|
||||
{
|
||||
template< typename T > struct result_
|
||||
template< typename T, typename Tag > struct result_
|
||||
{
|
||||
typedef T type;
|
||||
};
|
||||
@@ -16,142 +16,184 @@ template< int arity_, bool Protect > struct lambda_impl
|
||||
|
||||
template<> struct lambda_impl<1, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef bind1<
|
||||
f_
|
||||
, typename lambda< typename F::arg1, false >::type
|
||||
, arg1
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<1, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef mpl::protect< bind1<
|
||||
f_
|
||||
, typename lambda< typename F::arg1, false >::type
|
||||
, arg1
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<2, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
|
||||
|
||||
typedef bind2<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type
|
||||
, arg1, arg2
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<2, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
|
||||
|
||||
typedef mpl::protect< bind2<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type
|
||||
, arg1, arg2
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<3, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
|
||||
|
||||
typedef bind3<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type
|
||||
, arg1, arg2, arg3
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<3, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
|
||||
|
||||
typedef mpl::protect< bind3<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type
|
||||
, arg1, arg2, arg3
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<4, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
|
||||
|
||||
typedef bind4<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type
|
||||
, arg1, arg2, arg3, arg4
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<4, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
|
||||
|
||||
typedef mpl::protect< bind4<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type
|
||||
, arg1, arg2, arg3, arg4
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<5, false>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
typedef typename lambda< typename F::arg5, Tag, false >::type arg5;
|
||||
|
||||
|
||||
typedef bind5<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type
|
||||
, arg1, arg2, arg3, arg4, arg5
|
||||
> type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct lambda_impl<5, true>
|
||||
{
|
||||
template< typename F > struct result_
|
||||
template< typename F, typename Tag > struct result_
|
||||
{
|
||||
typedef typename F::rebind f_;
|
||||
typedef typename lambda< typename F::arg1, Tag, false >::type arg1;
|
||||
typedef typename lambda< typename F::arg2, Tag, false >::type arg2;
|
||||
typedef typename lambda< typename F::arg3, Tag, false >::type arg3;
|
||||
typedef typename lambda< typename F::arg4, Tag, false >::type arg4;
|
||||
typedef typename lambda< typename F::arg5, Tag, false >::type arg5;
|
||||
|
||||
|
||||
typedef mpl::protect< bind5<
|
||||
f_
|
||||
|
||||
,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type
|
||||
, arg1, arg2, arg3, arg4, arg5
|
||||
> > type;
|
||||
};
|
||||
};
|
||||
|
||||
} // namespace aux
|
||||
|
||||
template< typename T, bool Protect = true >
|
||||
template<
|
||||
typename T
|
||||
, typename Tag = void_
|
||||
, bool Protect = true
|
||||
>
|
||||
struct lambda
|
||||
: aux::lambda_impl<
|
||||
::boost::mpl::aux::template_arity<T>::value
|
||||
|
||||
, Protect
|
||||
|
||||
>::template result_<T>
|
||||
>::template result_< T,Tag >
|
||||
{
|
||||
};
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// preprocessed version of 'boost/mpl/quote.hpp' header
|
||||
// preprocessed version of 'boost/mpl/aux_/config/use_preprocessed.hpp' header
|
||||
// see the original for copyright information
|
||||
|
||||
namespace boost {
|
||||
@@ -19,6 +19,7 @@ struct quote_impl< T,false >
|
||||
|
||||
template<
|
||||
template< typename P1 > class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote1
|
||||
{
|
||||
@@ -32,6 +33,7 @@ struct quote1
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2 > class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote2
|
||||
{
|
||||
@@ -45,6 +47,7 @@ struct quote2
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3 > class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote3
|
||||
{
|
||||
@@ -58,6 +61,7 @@ struct quote3
|
||||
|
||||
template<
|
||||
template< typename P1, typename P2, typename P3, typename P4 > class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote4
|
||||
{
|
||||
@@ -78,6 +82,7 @@ template<
|
||||
, typename P5
|
||||
>
|
||||
class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct quote5
|
||||
{
|
||||
|
@@ -78,6 +78,7 @@ struct name< BOOST_MPL_AUX_VOID_SPEC_PARAMS(i) > \
|
||||
template<> \
|
||||
struct lambda< \
|
||||
name< BOOST_MPL_AUX_VOID_SPEC_PARAMS(i) > \
|
||||
, void_ \
|
||||
, true \
|
||||
> \
|
||||
{ \
|
||||
@@ -89,6 +90,7 @@ struct lambda< \
|
||||
template<> \
|
||||
struct lambda< \
|
||||
name< BOOST_MPL_AUX_VOID_SPEC_PARAMS(i) > \
|
||||
, void_ \
|
||||
BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(int_<-1>) \
|
||||
> \
|
||||
{ \
|
||||
|
@@ -1,9 +1,11 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// boost mpl/labmda_fwd.hpp header file
|
||||
// See http://www.boost.org for updates, documentation, and revision history.
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) 2001-02
|
||||
|
||||
#ifndef BOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
|
||||
#define BOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
|
||||
|
||||
// + file: boost/mpl/labmda_fwd.hpp
|
||||
// + last modified: 02/aug/03
|
||||
|
||||
// Copyright (c) 2001-03
|
||||
// Aleksey Gurtovoy
|
||||
//
|
||||
// Permission to use, copy, modify, distribute and sell this software
|
||||
@@ -13,9 +15,8 @@
|
||||
// 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_LAMBDA_FWD_HPP_INCLUDED
|
||||
#define BOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
|
||||
//
|
||||
// See http://www.boost.org/libs/mpl for documentation.
|
||||
|
||||
#include "boost/mpl/aux_/lambda_arity_param.hpp"
|
||||
#include "boost/mpl/aux_/config/lambda.hpp"
|
||||
@@ -24,10 +25,23 @@ namespace boost {
|
||||
namespace mpl {
|
||||
|
||||
#if !defined(BOOST_MPL_NO_FULL_LAMBDA_SUPPORT)
|
||||
template< typename T BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(typename Arity) >
|
||||
|
||||
template<
|
||||
typename T
|
||||
, typename Tag
|
||||
BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(typename Arity)
|
||||
>
|
||||
struct lambda;
|
||||
|
||||
#else
|
||||
template< typename T, bool Protect > struct lambda;
|
||||
|
||||
template<
|
||||
typename T
|
||||
, typename Tag
|
||||
, bool Protect
|
||||
>
|
||||
struct lambda;
|
||||
|
||||
#endif
|
||||
|
||||
} // namespace mpl
|
||||
|
@@ -1,9 +1,15 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// boost mpl/quote.hpp header file
|
||||
// See http://www.boost.org for updates, documentation, and revision history.
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) 2000-02
|
||||
|
||||
#if !defined(BOOST_PP_IS_ITERATING)
|
||||
|
||||
///// header body
|
||||
|
||||
#ifndef BOOST_MPL_QUOTE_HPP_INCLUDED
|
||||
#define BOOST_MPL_QUOTE_HPP_INCLUDED
|
||||
|
||||
// + file: boost/mpl/quote.hpp
|
||||
// + last modified: 02/aug/03
|
||||
|
||||
// Copyright (c) 2000-03
|
||||
// Aleksey Gurtovoy
|
||||
//
|
||||
// Permission to use, copy, modify, distribute and sell this software
|
||||
@@ -13,15 +19,11 @@
|
||||
// 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.
|
||||
|
||||
#if !defined(BOOST_PP_IS_ITERATING)
|
||||
|
||||
///// header body
|
||||
|
||||
#ifndef BOOST_MPL_QUOTE_HPP_INCLUDED
|
||||
#define BOOST_MPL_QUOTE_HPP_INCLUDED
|
||||
//
|
||||
// See http://www.boost.org/libs/mpl for documentation.
|
||||
|
||||
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
|
||||
# include "boost/mpl/void.hpp"
|
||||
# include "boost/mpl/aux_/has_type.hpp"
|
||||
#endif
|
||||
|
||||
@@ -39,6 +41,7 @@
|
||||
# include "boost/mpl/aux_/preprocessor/params.hpp"
|
||||
# include "boost/mpl/aux_/config/ttp.hpp"
|
||||
# include "boost/mpl/aux_/config/ctps.hpp"
|
||||
# include "boost/mpl/aux_/config/workaround.hpp"
|
||||
|
||||
# include "boost/preprocessor/iterate.hpp"
|
||||
# include "boost/preprocessor/cat.hpp"
|
||||
@@ -52,7 +55,7 @@ namespace mpl {
|
||||
|
||||
template< typename T, bool has_type_ = aux::has_type<T>::value >
|
||||
struct quote_impl
|
||||
#if !defined(__BORLANDC__) && (__BORLANDC__ <= 0x561 || !defined(BOOST_STRICT_CONFIG))
|
||||
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561))
|
||||
: T
|
||||
{
|
||||
#else
|
||||
@@ -106,6 +109,7 @@ template<> struct quote_impl<false>
|
||||
|
||||
template<
|
||||
template< BOOST_MPL_PP_PARAMS(i, typename P) > class F
|
||||
, typename Tag = void_
|
||||
>
|
||||
struct BOOST_PP_CAT(quote,i)
|
||||
{
|
||||
|
Reference in New Issue
Block a user