2 // Copyright Aleksey Gurtovoy 2001-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_/full_lambda.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 >
48 struct is_lambda_expression
53 template< int N
, typename Tag
>
54 struct lambda
< arg
<N
>,Tag
, int_
< -1 > >
57 typedef mpl::arg
<N
> result_
; // qualified for the sake of MIPSpro 7.41
58 typedef mpl::protect
<result_
> type
;
82 typename IsLE
, typename Tag
83 , template< typename P1
> class F
97 , template< typename P1
> class F
100 struct le_result1
< true_
,Tag
,F
,L1
>
104 , typename
L1::result_
107 typedef mpl::protect
<result_
> type
;
113 template< typename P1
> class F
123 typedef lambda
< T1
,Tag
> l1
;
124 typedef typename
l1::is_le is_le1
;
125 typedef typename
aux::lambda_or
<
129 typedef aux::le_result1
<
133 typedef typename
le_result_::result_ result_
;
134 typedef typename
le_result_::type type
;
138 typename F
, typename T1
147 typedef false_ is_le
;
153 typedef result_ type
;
159 typename IsLE
, typename Tag
160 , template< typename P1
, typename P2
> class F
161 , typename L1
, typename L2
166 typename
L1::type
, typename
L2::type
169 typedef result_ type
;
174 , template< typename P1
, typename P2
> class F
175 , typename L1
, typename L2
177 struct le_result2
< true_
,Tag
,F
,L1
,L2
>
181 , typename
L1::result_
, typename
L2::result_
184 typedef mpl::protect
<result_
> type
;
190 template< typename P1
, typename P2
> class F
191 , typename T1
, typename T2
200 typedef lambda
< T1
,Tag
> l1
;
201 typedef lambda
< T2
,Tag
> l2
;
203 typedef typename
l1::is_le is_le1
;
204 typedef typename
l2::is_le is_le2
;
207 typedef typename
aux::lambda_or
<
208 is_le1::value
, is_le2::value
211 typedef aux::le_result2
<
212 is_le
, Tag
, F
, l1
, l2
215 typedef typename
le_result_::result_ result_
;
216 typedef typename
le_result_::type type
;
220 typename F
, typename T1
, typename T2
229 typedef false_ is_le
;
235 typedef result_ type
;
241 typename IsLE
, typename Tag
242 , template< typename P1
, typename P2
, typename P3
> class F
243 , typename L1
, typename L2
, typename L3
248 typename
L1::type
, typename
L2::type
, typename
L3::type
251 typedef result_ type
;
256 , template< typename P1
, typename P2
, typename P3
> class F
257 , typename L1
, typename L2
, typename L3
259 struct le_result3
< true_
,Tag
,F
,L1
,L2
,L3
>
263 , typename
L1::result_
, typename
L2::result_
, typename
L3::result_
266 typedef mpl::protect
<result_
> type
;
272 template< typename P1
, typename P2
, typename P3
> class F
273 , typename T1
, typename T2
, typename T3
282 typedef lambda
< T1
,Tag
> l1
;
283 typedef lambda
< T2
,Tag
> l2
;
284 typedef lambda
< T3
,Tag
> l3
;
286 typedef typename
l1::is_le is_le1
;
287 typedef typename
l2::is_le is_le2
;
288 typedef typename
l3::is_le is_le3
;
291 typedef typename
aux::lambda_or
<
292 is_le1::value
, is_le2::value
, is_le3::value
295 typedef aux::le_result3
<
296 is_le
, Tag
, F
, l1
, l2
, l3
299 typedef typename
le_result_::result_ result_
;
300 typedef typename
le_result_::type type
;
304 typename F
, typename T1
, typename T2
, typename T3
313 typedef false_ is_le
;
319 typedef result_ type
;
325 typename IsLE
, typename Tag
326 , template< typename P1
, typename P2
, typename P3
, typename P4
> class F
327 , typename L1
, typename L2
, typename L3
, typename L4
332 typename
L1::type
, typename
L2::type
, typename
L3::type
336 typedef result_ type
;
341 , template< typename P1
, typename P2
, typename P3
, typename P4
> class F
342 , typename L1
, typename L2
, typename L3
, typename L4
344 struct le_result4
< true_
,Tag
,F
,L1
,L2
,L3
,L4
>
348 , typename
L1::result_
, typename
L2::result_
, typename
L3::result_
349 , typename
L4::result_
352 typedef mpl::protect
<result_
> type
;
358 template< typename P1
, typename P2
, typename P3
, typename P4
> class F
359 , typename T1
, typename T2
, typename T3
, typename T4
368 typedef lambda
< T1
,Tag
> l1
;
369 typedef lambda
< T2
,Tag
> l2
;
370 typedef lambda
< T3
,Tag
> l3
;
371 typedef lambda
< T4
,Tag
> l4
;
373 typedef typename
l1::is_le is_le1
;
374 typedef typename
l2::is_le is_le2
;
375 typedef typename
l3::is_le is_le3
;
376 typedef typename
l4::is_le is_le4
;
379 typedef typename
aux::lambda_or
<
380 is_le1::value
, is_le2::value
, is_le3::value
, is_le4::value
383 typedef aux::le_result4
<
384 is_le
, Tag
, F
, l1
, l2
, l3
, l4
387 typedef typename
le_result_::result_ result_
;
388 typedef typename
le_result_::type type
;
392 typename F
, typename T1
, typename T2
, typename T3
, typename T4
396 bind4
< F
,T1
,T2
,T3
,T4
>
401 typedef false_ is_le
;
407 typedef result_ type
;
413 typename IsLE
, typename Tag
414 , template< typename P1
, typename P2
, typename P3
, typename P4
, typename P5
> class F
415 , typename L1
, typename L2
, typename L3
, typename L4
, typename L5
420 typename
L1::type
, typename
L2::type
, typename
L3::type
421 , typename
L4::type
, typename
L5::type
424 typedef result_ type
;
429 , template< typename P1
, typename P2
, typename P3
, typename P4
, typename P5
> class F
430 , typename L1
, typename L2
, typename L3
, typename L4
, typename L5
432 struct le_result5
< true_
,Tag
,F
,L1
,L2
,L3
,L4
,L5
>
436 , typename
L1::result_
, typename
L2::result_
, typename
L3::result_
437 , typename
L4::result_
, typename
L5::result_
440 typedef mpl::protect
<result_
> type
;
447 typename P1
, typename P2
, typename P3
, typename P4
451 , typename T1
, typename T2
, typename T3
, typename T4
, typename T5
460 typedef lambda
< T1
,Tag
> l1
;
461 typedef lambda
< T2
,Tag
> l2
;
462 typedef lambda
< T3
,Tag
> l3
;
463 typedef lambda
< T4
,Tag
> l4
;
464 typedef lambda
< T5
,Tag
> l5
;
466 typedef typename
l1::is_le is_le1
;
467 typedef typename
l2::is_le is_le2
;
468 typedef typename
l3::is_le is_le3
;
469 typedef typename
l4::is_le is_le4
;
470 typedef typename
l5::is_le is_le5
;
473 typedef typename
aux::lambda_or
<
474 is_le1::value
, is_le2::value
, is_le3::value
, is_le4::value
478 typedef aux::le_result5
<
479 is_le
, Tag
, F
, l1
, l2
, l3
, l4
, l5
482 typedef typename
le_result_::result_ result_
;
483 typedef typename
le_result_::type type
;
487 typename F
, typename T1
, typename T2
, typename T3
, typename T4
492 bind5
< F
,T1
,T2
,T3
,T4
,T5
>
497 typedef false_ is_le
;
503 typedef result_ type
;
506 /// special case for 'protect'
507 template< typename T
, typename Tag
>
508 struct lambda
< mpl::protect
<T
>,Tag
, int_
<1> >
510 typedef false_ is_le
;
511 typedef mpl::protect
<T
> result_
;
512 typedef result_ type
;
515 /// specializations for the main 'bind' form
518 typename F
, typename T1
, typename T2
, typename T3
, typename T4
523 bind
< F
,T1
,T2
,T3
,T4
,T5
>
528 typedef false_ is_le
;
529 typedef bind
< F
,T1
,T2
,T3
,T4
,T5
> result_
;
530 typedef result_ type
;
540 lambda
< F
,Tag1
,Arity
>
545 typedef lambda
< F
,Tag2
> l1
;
546 typedef lambda
< Tag1
,Tag2
> l2
;
547 typedef typename
l1::is_le is_le
;
548 typedef bind1
< quote1
<aux::template_arity
>, typename
l1::result_
> arity_
;
549 typedef lambda
< typename if_
< is_le
,arity_
,Arity
>::type
, Tag2
> l3
;
550 typedef aux::le_result3
<is_le
, Tag2
, mpl::lambda
, l1
, l2
, l3
> le_result_
;
551 typedef typename
le_result_::result_ result_
;
552 typedef typename
le_result_::type type
;
555 BOOST_MPL_AUX_NA_SPEC2(2, 3, lambda
)