diff options
Diffstat (limited to 'contrib/src/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp')
-rw-r--r-- | contrib/src/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp | 1108 |
1 files changed, 554 insertions, 554 deletions
diff --git a/contrib/src/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp b/contrib/src/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp index 78cb47c..bf81873 100644 --- a/contrib/src/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp +++ b/contrib/src/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp @@ -1,554 +1,554 @@ -
-// Copyright Aleksey Gurtovoy 2001-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-
-// Preprocessed version of "boost/mpl/aux_/full_lambda.hpp" header
-// -- DO NOT modify by hand!
-
-namespace boost { namespace mpl {
-
-namespace aux {
-
-template<
- bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
- , bool C5 = false
- >
-struct lambda_or
- : true_
-{
-};
-
-template<>
-struct lambda_or< false,false,false,false,false >
- : false_
-{
-};
-
-} // namespace aux
-
-template<
- typename T
- , typename Tag
-
- >
-struct lambda
-{
- typedef false_ is_le;
- typedef T result_;
- typedef T type;
-};
-
-template<
- typename T
- >
-struct is_lambda_expression
- : lambda<T>::is_le
-{
-};
-
-template< int N, typename Tag >
-struct lambda< arg<N>, Tag >
-{
- typedef true_ is_le;
- typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
- typedef mpl::protect<result_> type;
-};
-
-template<
- typename F
- , typename Tag
- >
-struct lambda<
- bind0<F>
- , Tag
-
- >
-{
- typedef false_ is_le;
- typedef bind0<
- F
- > result_;
-
- typedef result_ type;
-};
-
-namespace aux {
-
-template<
- typename IsLE, typename Tag
- , template< typename P1 > class F
- , typename L1
- >
-struct le_result1
-{
- typedef F<
- typename L1::type
- > result_;
-
- typedef result_ type;
-};
-
-template<
- typename Tag
- , template< typename P1 > class F
- , typename L1
- >
-struct le_result1< true_,Tag,F,L1 >
-{
- typedef bind1<
- quote1< F,Tag >
- , typename L1::result_
- > result_;
-
- typedef mpl::protect<result_> type;
-};
-
-} // namespace aux
-
-template<
- template< typename P1 > class F
- , typename T1
- , typename Tag
- >
-struct lambda<
- F<T1>
- , Tag
-
- >
-{
- typedef lambda< T1,Tag > l1;
- typedef typename l1::is_le is_le1;
- typedef typename aux::lambda_or<
- is_le1::value
- >::type is_le;
-
- typedef aux::le_result1<
- is_le, Tag, F, l1
- > le_result_;
-
- typedef typename le_result_::result_ result_;
- typedef typename le_result_::type type;
-};
-
-template<
- typename F, typename T1
- , typename Tag
- >
-struct lambda<
- bind1< F,T1 >
- , Tag
-
- >
-{
- typedef false_ is_le;
- typedef bind1<
- F
- , T1
- > result_;
-
- typedef result_ type;
-};
-
-namespace aux {
-
-template<
- typename IsLE, typename Tag
- , template< typename P1, typename P2 > class F
- , typename L1, typename L2
- >
-struct le_result2
-{
- typedef F<
- typename L1::type, typename L2::type
- > result_;
-
- typedef result_ type;
-};
-
-template<
- typename Tag
- , template< typename P1, typename P2 > class F
- , typename L1, typename L2
- >
-struct le_result2< true_,Tag,F,L1,L2 >
-{
- typedef bind2<
- quote2< F,Tag >
- , typename L1::result_, typename L2::result_
- > result_;
-
- typedef mpl::protect<result_> type;
-};
-
-} // namespace aux
-
-template<
- template< typename P1, typename P2 > class F
- , typename T1, typename T2
- , typename Tag
- >
-struct lambda<
- F< T1,T2 >
- , Tag
-
- >
-{
- typedef lambda< T1,Tag > l1;
- typedef lambda< T2,Tag > l2;
-
- typedef typename l1::is_le is_le1;
- typedef typename l2::is_le is_le2;
-
-
- typedef typename aux::lambda_or<
- is_le1::value, is_le2::value
- >::type is_le;
-
- typedef aux::le_result2<
- is_le, Tag, F, l1, l2
- > le_result_;
-
- typedef typename le_result_::result_ result_;
- typedef typename le_result_::type type;
-};
-
-template<
- typename F, typename T1, typename T2
- , typename Tag
- >
-struct lambda<
- bind2< F,T1,T2 >
- , Tag
-
- >
-{
- typedef false_ is_le;
- typedef bind2<
- F
- , T1, T2
- > result_;
-
- typedef result_ type;
-};
-
-namespace aux {
-
-template<
- typename IsLE, typename Tag
- , template< typename P1, typename P2, typename P3 > class F
- , typename L1, typename L2, typename L3
- >
-struct le_result3
-{
- typedef F<
- typename L1::type, typename L2::type, typename L3::type
- > result_;
-
- typedef result_ type;
-};
-
-template<
- typename Tag
- , template< typename P1, typename P2, typename P3 > class F
- , typename L1, typename L2, typename L3
- >
-struct le_result3< true_,Tag,F,L1,L2,L3 >
-{
- typedef bind3<
- quote3< F,Tag >
- , typename L1::result_, typename L2::result_, typename L3::result_
- > result_;
-
- typedef mpl::protect<result_> type;
-};
-
-} // namespace aux
-
-template<
- template< typename P1, typename P2, typename P3 > class F
- , typename T1, typename T2, typename T3
- , typename Tag
- >
-struct lambda<
- F< T1,T2,T3 >
- , Tag
-
- >
-{
- typedef lambda< T1,Tag > l1;
- typedef lambda< T2,Tag > l2;
- typedef lambda< T3,Tag > l3;
-
- typedef typename l1::is_le is_le1;
- typedef typename l2::is_le is_le2;
- typedef typename l3::is_le is_le3;
-
-
- typedef typename aux::lambda_or<
- is_le1::value, is_le2::value, is_le3::value
- >::type is_le;
-
- typedef aux::le_result3<
- is_le, Tag, F, l1, l2, l3
- > le_result_;
-
- typedef typename le_result_::result_ result_;
- typedef typename le_result_::type type;
-};
-
-template<
- typename F, typename T1, typename T2, typename T3
- , typename Tag
- >
-struct lambda<
- bind3< F,T1,T2,T3 >
- , Tag
-
- >
-{
- typedef false_ is_le;
- typedef bind3<
- F
- , T1, T2, T3
- > result_;
-
- typedef result_ type;
-};
-
-namespace aux {
-
-template<
- typename IsLE, typename Tag
- , template< typename P1, typename P2, typename P3, typename P4 > class F
- , typename L1, typename L2, typename L3, typename L4
- >
-struct le_result4
-{
- typedef F<
- typename L1::type, typename L2::type, typename L3::type
- , typename L4::type
- > result_;
-
- typedef result_ type;
-};
-
-template<
- typename Tag
- , template< typename P1, typename P2, typename P3, typename P4 > class F
- , typename L1, typename L2, typename L3, typename L4
- >
-struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
-{
- typedef bind4<
- quote4< F,Tag >
- , typename L1::result_, typename L2::result_, typename L3::result_
- , typename L4::result_
- > result_;
-
- typedef mpl::protect<result_> type;
-};
-
-} // namespace aux
-
-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 >
- , Tag
-
- >
-{
- typedef lambda< T1,Tag > l1;
- typedef lambda< T2,Tag > l2;
- typedef lambda< T3,Tag > l3;
- typedef lambda< T4,Tag > l4;
-
- typedef typename l1::is_le is_le1;
- typedef typename l2::is_le is_le2;
- typedef typename l3::is_le is_le3;
- typedef typename l4::is_le is_le4;
-
-
- typedef typename aux::lambda_or<
- is_le1::value, is_le2::value, is_le3::value, is_le4::value
- >::type is_le;
-
- typedef aux::le_result4<
- is_le, Tag, F, l1, l2, l3, l4
- > le_result_;
-
- typedef typename le_result_::result_ result_;
- typedef typename le_result_::type type;
-};
-
-template<
- typename F, typename T1, typename T2, typename T3, typename T4
- , typename Tag
- >
-struct lambda<
- bind4< F,T1,T2,T3,T4 >
- , Tag
-
- >
-{
- typedef false_ is_le;
- typedef bind4<
- F
- , T1, T2, T3, T4
- > result_;
-
- typedef result_ type;
-};
-
-namespace aux {
-
-template<
- typename IsLE, typename Tag
- , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
- , typename L1, typename L2, typename L3, typename L4, typename L5
- >
-struct le_result5
-{
- typedef F<
- typename L1::type, typename L2::type, typename L3::type
- , typename L4::type, typename L5::type
- > result_;
-
- typedef result_ type;
-};
-
-template<
- typename Tag
- , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
- , typename L1, typename L2, typename L3, typename L4, typename L5
- >
-struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
-{
- typedef bind5<
- quote5< F,Tag >
- , typename L1::result_, typename L2::result_, typename L3::result_
- , typename L4::result_, typename L5::result_
- > result_;
-
- typedef mpl::protect<result_> type;
-};
-
-} // namespace aux
-
-template<
- template<
- typename P1, typename P2, typename P3, typename P4
- , typename P5
- >
- class F
- , typename T1, typename T2, typename T3, typename T4, typename T5
- , typename Tag
- >
-struct lambda<
- F< T1,T2,T3,T4,T5 >
- , Tag
-
- >
-{
- typedef lambda< T1,Tag > l1;
- typedef lambda< T2,Tag > l2;
- typedef lambda< T3,Tag > l3;
- typedef lambda< T4,Tag > l4;
- typedef lambda< T5,Tag > l5;
-
- typedef typename l1::is_le is_le1;
- typedef typename l2::is_le is_le2;
- typedef typename l3::is_le is_le3;
- typedef typename l4::is_le is_le4;
- typedef typename l5::is_le is_le5;
-
-
- typedef typename aux::lambda_or<
- is_le1::value, is_le2::value, is_le3::value, is_le4::value
- , is_le5::value
- >::type is_le;
-
- typedef aux::le_result5<
- is_le, Tag, F, l1, l2, l3, l4, l5
- > le_result_;
-
- typedef typename le_result_::result_ result_;
- typedef typename le_result_::type type;
-};
-
-template<
- typename F, typename T1, typename T2, typename T3, typename T4
- , typename T5
- , typename Tag
- >
-struct lambda<
- bind5< F,T1,T2,T3,T4,T5 >
- , Tag
-
- >
-{
- typedef false_ is_le;
- typedef bind5<
- F
- , T1, T2, T3, T4, T5
- > result_;
-
- typedef result_ type;
-};
-
-/// special case for 'protect'
-template< typename T, typename Tag >
-struct lambda< mpl::protect<T>, Tag >
-{
- typedef false_ is_le;
- typedef mpl::protect<T> result_;
- typedef result_ type;
-};
-
-/// specializations for the main 'bind' form
-
-template<
- typename F, typename T1, typename T2, typename T3, typename T4
- , typename T5
- , typename Tag
- >
-struct lambda<
- bind< F,T1,T2,T3,T4,T5 >
- , Tag
-
- >
-{
- typedef false_ is_le;
- typedef bind< F,T1,T2,T3,T4,T5 > result_;
- typedef result_ type;
-};
-
-/// workaround for MWCW 8.3+/EDG < 303, leads to ambiguity on Digital Mars
-
-template<
- typename F, typename Tag1, typename Tag2
- >
-struct lambda<
- lambda< F,Tag1 >
- , Tag2
- >
-{
- typedef lambda< F,Tag2 > l1;
- typedef lambda< Tag1,Tag2 > l2;
- typedef typename l1::is_le is_le;
- typedef aux::le_result2<is_le, Tag2, mpl::lambda, l1, l2> le_result_;
- typedef typename le_result_::result_ result_;
- typedef typename le_result_::type type;
-};
-
-BOOST_MPL_AUX_NA_SPEC(2, lambda)
-
-}}
-
+ +// Copyright Aleksey Gurtovoy 2001-2004 +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// + +// Preprocessed version of "boost/mpl/aux_/full_lambda.hpp" header +// -- DO NOT modify by hand! + +namespace boost { namespace mpl { + +namespace aux { + +template< + bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false + , bool C5 = false + > +struct lambda_or + : true_ +{ +}; + +template<> +struct lambda_or< false,false,false,false,false > + : false_ +{ +}; + +} // namespace aux + +template< + typename T + , typename Tag + + > +struct lambda +{ + typedef false_ is_le; + typedef T result_; + typedef T type; +}; + +template< + typename T + > +struct is_lambda_expression + : lambda<T>::is_le +{ +}; + +template< int N, typename Tag > +struct lambda< arg<N>, Tag > +{ + typedef true_ is_le; + typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41 + typedef mpl::protect<result_> type; +}; + +template< + typename F + , typename Tag + > +struct lambda< + bind0<F> + , Tag + + > +{ + typedef false_ is_le; + typedef bind0< + F + > result_; + + typedef result_ type; +}; + +namespace aux { + +template< + typename IsLE, typename Tag + , template< typename P1 > class F + , typename L1 + > +struct le_result1 +{ + typedef F< + typename L1::type + > result_; + + typedef result_ type; +}; + +template< + typename Tag + , template< typename P1 > class F + , typename L1 + > +struct le_result1< true_,Tag,F,L1 > +{ + typedef bind1< + quote1< F,Tag > + , typename L1::result_ + > result_; + + typedef mpl::protect<result_> type; +}; + +} // namespace aux + +template< + template< typename P1 > class F + , typename T1 + , typename Tag + > +struct lambda< + F<T1> + , Tag + + > +{ + typedef lambda< T1,Tag > l1; + typedef typename l1::is_le is_le1; + typedef typename aux::lambda_or< + is_le1::value + >::type is_le; + + typedef aux::le_result1< + is_le, Tag, F, l1 + > le_result_; + + typedef typename le_result_::result_ result_; + typedef typename le_result_::type type; +}; + +template< + typename F, typename T1 + , typename Tag + > +struct lambda< + bind1< F,T1 > + , Tag + + > +{ + typedef false_ is_le; + typedef bind1< + F + , T1 + > result_; + + typedef result_ type; +}; + +namespace aux { + +template< + typename IsLE, typename Tag + , template< typename P1, typename P2 > class F + , typename L1, typename L2 + > +struct le_result2 +{ + typedef F< + typename L1::type, typename L2::type + > result_; + + typedef result_ type; +}; + +template< + typename Tag + , template< typename P1, typename P2 > class F + , typename L1, typename L2 + > +struct le_result2< true_,Tag,F,L1,L2 > +{ + typedef bind2< + quote2< F,Tag > + , typename L1::result_, typename L2::result_ + > result_; + + typedef mpl::protect<result_> type; +}; + +} // namespace aux + +template< + template< typename P1, typename P2 > class F + , typename T1, typename T2 + , typename Tag + > +struct lambda< + F< T1,T2 > + , Tag + + > +{ + typedef lambda< T1,Tag > l1; + typedef lambda< T2,Tag > l2; + + typedef typename l1::is_le is_le1; + typedef typename l2::is_le is_le2; + + + typedef typename aux::lambda_or< + is_le1::value, is_le2::value + >::type is_le; + + typedef aux::le_result2< + is_le, Tag, F, l1, l2 + > le_result_; + + typedef typename le_result_::result_ result_; + typedef typename le_result_::type type; +}; + +template< + typename F, typename T1, typename T2 + , typename Tag + > +struct lambda< + bind2< F,T1,T2 > + , Tag + + > +{ + typedef false_ is_le; + typedef bind2< + F + , T1, T2 + > result_; + + typedef result_ type; +}; + +namespace aux { + +template< + typename IsLE, typename Tag + , template< typename P1, typename P2, typename P3 > class F + , typename L1, typename L2, typename L3 + > +struct le_result3 +{ + typedef F< + typename L1::type, typename L2::type, typename L3::type + > result_; + + typedef result_ type; +}; + +template< + typename Tag + , template< typename P1, typename P2, typename P3 > class F + , typename L1, typename L2, typename L3 + > +struct le_result3< true_,Tag,F,L1,L2,L3 > +{ + typedef bind3< + quote3< F,Tag > + , typename L1::result_, typename L2::result_, typename L3::result_ + > result_; + + typedef mpl::protect<result_> type; +}; + +} // namespace aux + +template< + template< typename P1, typename P2, typename P3 > class F + , typename T1, typename T2, typename T3 + , typename Tag + > +struct lambda< + F< T1,T2,T3 > + , Tag + + > +{ + typedef lambda< T1,Tag > l1; + typedef lambda< T2,Tag > l2; + typedef lambda< T3,Tag > l3; + + typedef typename l1::is_le is_le1; + typedef typename l2::is_le is_le2; + typedef typename l3::is_le is_le3; + + + typedef typename aux::lambda_or< + is_le1::value, is_le2::value, is_le3::value + >::type is_le; + + typedef aux::le_result3< + is_le, Tag, F, l1, l2, l3 + > le_result_; + + typedef typename le_result_::result_ result_; + typedef typename le_result_::type type; +}; + +template< + typename F, typename T1, typename T2, typename T3 + , typename Tag + > +struct lambda< + bind3< F,T1,T2,T3 > + , Tag + + > +{ + typedef false_ is_le; + typedef bind3< + F + , T1, T2, T3 + > result_; + + typedef result_ type; +}; + +namespace aux { + +template< + typename IsLE, typename Tag + , template< typename P1, typename P2, typename P3, typename P4 > class F + , typename L1, typename L2, typename L3, typename L4 + > +struct le_result4 +{ + typedef F< + typename L1::type, typename L2::type, typename L3::type + , typename L4::type + > result_; + + typedef result_ type; +}; + +template< + typename Tag + , template< typename P1, typename P2, typename P3, typename P4 > class F + , typename L1, typename L2, typename L3, typename L4 + > +struct le_result4< true_,Tag,F,L1,L2,L3,L4 > +{ + typedef bind4< + quote4< F,Tag > + , typename L1::result_, typename L2::result_, typename L3::result_ + , typename L4::result_ + > result_; + + typedef mpl::protect<result_> type; +}; + +} // namespace aux + +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 > + , Tag + + > +{ + typedef lambda< T1,Tag > l1; + typedef lambda< T2,Tag > l2; + typedef lambda< T3,Tag > l3; + typedef lambda< T4,Tag > l4; + + typedef typename l1::is_le is_le1; + typedef typename l2::is_le is_le2; + typedef typename l3::is_le is_le3; + typedef typename l4::is_le is_le4; + + + typedef typename aux::lambda_or< + is_le1::value, is_le2::value, is_le3::value, is_le4::value + >::type is_le; + + typedef aux::le_result4< + is_le, Tag, F, l1, l2, l3, l4 + > le_result_; + + typedef typename le_result_::result_ result_; + typedef typename le_result_::type type; +}; + +template< + typename F, typename T1, typename T2, typename T3, typename T4 + , typename Tag + > +struct lambda< + bind4< F,T1,T2,T3,T4 > + , Tag + + > +{ + typedef false_ is_le; + typedef bind4< + F + , T1, T2, T3, T4 + > result_; + + typedef result_ type; +}; + +namespace aux { + +template< + typename IsLE, typename Tag + , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F + , typename L1, typename L2, typename L3, typename L4, typename L5 + > +struct le_result5 +{ + typedef F< + typename L1::type, typename L2::type, typename L3::type + , typename L4::type, typename L5::type + > result_; + + typedef result_ type; +}; + +template< + typename Tag + , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F + , typename L1, typename L2, typename L3, typename L4, typename L5 + > +struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 > +{ + typedef bind5< + quote5< F,Tag > + , typename L1::result_, typename L2::result_, typename L3::result_ + , typename L4::result_, typename L5::result_ + > result_; + + typedef mpl::protect<result_> type; +}; + +} // namespace aux + +template< + template< + typename P1, typename P2, typename P3, typename P4 + , typename P5 + > + class F + , typename T1, typename T2, typename T3, typename T4, typename T5 + , typename Tag + > +struct lambda< + F< T1,T2,T3,T4,T5 > + , Tag + + > +{ + typedef lambda< T1,Tag > l1; + typedef lambda< T2,Tag > l2; + typedef lambda< T3,Tag > l3; + typedef lambda< T4,Tag > l4; + typedef lambda< T5,Tag > l5; + + typedef typename l1::is_le is_le1; + typedef typename l2::is_le is_le2; + typedef typename l3::is_le is_le3; + typedef typename l4::is_le is_le4; + typedef typename l5::is_le is_le5; + + + typedef typename aux::lambda_or< + is_le1::value, is_le2::value, is_le3::value, is_le4::value + , is_le5::value + >::type is_le; + + typedef aux::le_result5< + is_le, Tag, F, l1, l2, l3, l4, l5 + > le_result_; + + typedef typename le_result_::result_ result_; + typedef typename le_result_::type type; +}; + +template< + typename F, typename T1, typename T2, typename T3, typename T4 + , typename T5 + , typename Tag + > +struct lambda< + bind5< F,T1,T2,T3,T4,T5 > + , Tag + + > +{ + typedef false_ is_le; + typedef bind5< + F + , T1, T2, T3, T4, T5 + > result_; + + typedef result_ type; +}; + +/// special case for 'protect' +template< typename T, typename Tag > +struct lambda< mpl::protect<T>, Tag > +{ + typedef false_ is_le; + typedef mpl::protect<T> result_; + typedef result_ type; +}; + +/// specializations for the main 'bind' form + +template< + typename F, typename T1, typename T2, typename T3, typename T4 + , typename T5 + , typename Tag + > +struct lambda< + bind< F,T1,T2,T3,T4,T5 > + , Tag + + > +{ + typedef false_ is_le; + typedef bind< F,T1,T2,T3,T4,T5 > result_; + typedef result_ type; +}; + +/// workaround for MWCW 8.3+/EDG < 303, leads to ambiguity on Digital Mars + +template< + typename F, typename Tag1, typename Tag2 + > +struct lambda< + lambda< F,Tag1 > + , Tag2 + > +{ + typedef lambda< F,Tag2 > l1; + typedef lambda< Tag1,Tag2 > l2; + typedef typename l1::is_le is_le; + typedef aux::le_result2<is_le, Tag2, mpl::lambda, l1, l2> le_result_; + typedef typename le_result_::result_ result_; + typedef typename le_result_::type type; +}; + +BOOST_MPL_AUX_NA_SPEC(2, lambda) + +}} + |