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