2 // Copyright Aleksey Gurtovoy 2000-2004
4 // Distributed under the Boost Software License, Version 1.0.
5 // (See accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt)
9 // Preprocessed version of "boost/mpl/aux_/lambda_no_ctps.hpp" header
10 // -- DO NOT modify by hand!
12 namespace boost { namespace mpl {
17 bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
26 struct lambda_or< false,false,false,false,false >
31 template< typename Arity > struct lambda_impl
33 template< typename T, typename Tag, typename Protect > struct result_
36 typedef is_placeholder<T> is_le;
40 template<> struct lambda_impl< int_<1> >
42 template< typename F, typename Tag, typename Protect > struct result_
44 typedef lambda< typename F::arg1, Tag, false_ > l1;
45 typedef typename l1::is_le is_le1;
46 typedef aux::lambda_or<
47 BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
57 , if_< Protect, mpl::protect<bind_>, bind_ >
61 typedef typename type_::type type;
65 template<> struct lambda_impl< int_<2> >
67 template< typename F, typename Tag, typename Protect > struct result_
69 typedef lambda< typename F::arg1, Tag, false_ > l1;
70 typedef lambda< typename F::arg2, Tag, false_ > l2;
72 typedef typename l1::is_le is_le1;
73 typedef typename l2::is_le is_le2;
76 typedef aux::lambda_or<
77 BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
82 , typename l1::type, typename l2::type
87 , if_< Protect, mpl::protect<bind_>, bind_ >
91 typedef typename type_::type type;
95 template<> struct lambda_impl< int_<3> >
97 template< typename F, typename Tag, typename Protect > struct result_
99 typedef lambda< typename F::arg1, Tag, false_ > l1;
100 typedef lambda< typename F::arg2, Tag, false_ > l2;
101 typedef lambda< typename F::arg3, Tag, false_ > l3;
103 typedef typename l1::is_le is_le1;
104 typedef typename l2::is_le is_le2;
105 typedef typename l3::is_le is_le3;
108 typedef aux::lambda_or<
109 BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
114 , typename l1::type, typename l2::type, typename l3::type
117 typedef typename if_<
119 , if_< Protect, mpl::protect<bind_>, bind_ >
123 typedef typename type_::type type;
127 template<> struct lambda_impl< int_<4> >
129 template< typename F, typename Tag, typename Protect > struct result_
131 typedef lambda< typename F::arg1, Tag, false_ > l1;
132 typedef lambda< typename F::arg2, Tag, false_ > l2;
133 typedef lambda< typename F::arg3, Tag, false_ > l3;
134 typedef lambda< typename F::arg4, Tag, false_ > l4;
136 typedef typename l1::is_le is_le1;
137 typedef typename l2::is_le is_le2;
138 typedef typename l3::is_le is_le3;
139 typedef typename l4::is_le is_le4;
142 typedef aux::lambda_or<
143 BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
148 , typename l1::type, typename l2::type, typename l3::type
152 typedef typename if_<
154 , if_< Protect, mpl::protect<bind_>, bind_ >
158 typedef typename type_::type type;
162 template<> struct lambda_impl< int_<5> >
164 template< typename F, typename Tag, typename Protect > struct result_
166 typedef lambda< typename F::arg1, Tag, false_ > l1;
167 typedef lambda< typename F::arg2, Tag, false_ > l2;
168 typedef lambda< typename F::arg3, Tag, false_ > l3;
169 typedef lambda< typename F::arg4, Tag, false_ > l4;
170 typedef lambda< typename F::arg5, Tag, false_ > l5;
172 typedef typename l1::is_le is_le1;
173 typedef typename l2::is_le is_le2;
174 typedef typename l3::is_le is_le3;
175 typedef typename l4::is_le is_le4;
176 typedef typename l5::is_le is_le5;
179 typedef aux::lambda_or<
180 BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
185 , typename l1::type, typename l2::type, typename l3::type
186 , typename l4::type, typename l5::type
189 typedef typename if_<
191 , if_< Protect, mpl::protect<bind_>, bind_ >
195 typedef typename type_::type type;
208 /// Metafunction forwarding confuses MSVC 6.x
209 typedef typename aux::template_arity<T>::type arity_;
210 typedef typename aux::lambda_impl<arity_>
211 ::template result_< T,Tag,Protect > l_;
213 typedef typename l_::type type;
214 typedef typename l_::is_le is_le;
215 BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
218 BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
223 struct is_lambda_expression