2 // Copyright Peter Dimov 2001
3 // Copyright Aleksey Gurtovoy 2001-2004
5 // Distributed under the Boost Software License, Version 1.0.
6 // (See accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt)
10 // Preprocessed version of "boost/mpl/aux_/basic_bind.hpp" header
11 // -- DO NOT modify by hand!
13 namespace boost
{ namespace mpl
{
18 typename T
, typename U1
, typename U2
, typename U3
, typename U4
21 struct resolve_bind_arg
27 int N
, typename U1
, typename U2
, typename U3
, typename U4
, typename U5
29 struct resolve_bind_arg
< arg
<N
>, U1
, U2
, U3
, U4
, U5
>
31 typedef typename apply_wrap5
<mpl::arg
<N
>, U1
, U2
, U3
, U4
, U5
>::type type
;
35 typename F
, typename T1
, typename T2
, typename T3
, typename T4
36 , typename T5
, typename U1
, typename U2
, typename U3
, typename U4
39 struct resolve_bind_arg
< bind
< F
,T1
,T2
,T3
,T4
,T5
>, U1
, U2
, U3
, U4
, U5
>
41 typedef bind
< F
,T1
,T2
,T3
,T4
,T5
> f_
;
42 typedef typename apply_wrap5
< f_
,U1
,U2
,U3
,U4
,U5
>::type type
;
53 typename U1
= na
, typename U2
= na
, typename U3
= na
54 , typename U4
= na
, typename U5
= na
59 typedef typename
aux::resolve_bind_arg
< F
,U1
,U2
,U3
,U4
,U5
>::type f_
;
62 typedef typename apply_wrap0
<
72 typename F
, typename U1
, typename U2
, typename U3
, typename U4
75 struct resolve_bind_arg
<
76 bind0
<F
>, U1
, U2
, U3
, U4
, U5
80 typedef typename apply_wrap5
< f_
,U1
,U2
,U3
,U4
,U5
>::type type
;
85 BOOST_MPL_AUX_ARITY_SPEC(1, bind0
)
86 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0
)
91 struct bind
< F
,na
,na
,na
,na
,na
>
97 typename F
, typename T1
102 typename U1
= na
, typename U2
= na
, typename U3
= na
103 , typename U4
= na
, typename U5
= na
108 typedef typename
aux::resolve_bind_arg
< F
,U1
,U2
,U3
,U4
,U5
>::type f_
;
109 typedef aux::resolve_bind_arg
< T1
,U1
,U2
,U3
,U4
,U5
> t1
;
112 typedef typename apply_wrap1
<
123 typename F
, typename T1
, typename U1
, typename U2
, typename U3
124 , typename U4
, typename U5
126 struct resolve_bind_arg
<
127 bind1
< F
,T1
>, U1
, U2
, U3
, U4
, U5
130 typedef bind1
< F
,T1
> f_
;
131 typedef typename apply_wrap5
< f_
,U1
,U2
,U3
,U4
,U5
>::type type
;
136 BOOST_MPL_AUX_ARITY_SPEC(2, bind1
)
137 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1
)
140 typename F
, typename T1
142 struct bind
< F
,T1
,na
,na
,na
,na
>
148 typename F
, typename T1
, typename T2
153 typename U1
= na
, typename U2
= na
, typename U3
= na
154 , typename U4
= na
, typename U5
= na
159 typedef typename
aux::resolve_bind_arg
< F
,U1
,U2
,U3
,U4
,U5
>::type f_
;
160 typedef aux::resolve_bind_arg
< T1
,U1
,U2
,U3
,U4
,U5
> t1
;
161 typedef aux::resolve_bind_arg
< T2
,U1
,U2
,U3
,U4
,U5
> t2
;
164 typedef typename apply_wrap2
<
166 , typename
t1::type
, typename
t2::type
175 typename F
, typename T1
, typename T2
, typename U1
, typename U2
176 , typename U3
, typename U4
, typename U5
178 struct resolve_bind_arg
<
179 bind2
< F
,T1
,T2
>, U1
, U2
, U3
, U4
, U5
182 typedef bind2
< F
,T1
,T2
> f_
;
183 typedef typename apply_wrap5
< f_
,U1
,U2
,U3
,U4
,U5
>::type type
;
188 BOOST_MPL_AUX_ARITY_SPEC(3, bind2
)
189 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2
)
192 typename F
, typename T1
, typename T2
194 struct bind
< F
,T1
,T2
,na
,na
,na
>
200 typename F
, typename T1
, typename T2
, typename T3
205 typename U1
= na
, typename U2
= na
, typename U3
= na
206 , typename U4
= na
, typename U5
= na
211 typedef typename
aux::resolve_bind_arg
< F
,U1
,U2
,U3
,U4
,U5
>::type f_
;
212 typedef aux::resolve_bind_arg
< T1
,U1
,U2
,U3
,U4
,U5
> t1
;
213 typedef aux::resolve_bind_arg
< T2
,U1
,U2
,U3
,U4
,U5
> t2
;
214 typedef aux::resolve_bind_arg
< T3
,U1
,U2
,U3
,U4
,U5
> t3
;
217 typedef typename apply_wrap3
<
219 , typename
t1::type
, typename
t2::type
, typename
t3::type
228 typename F
, typename T1
, typename T2
, typename T3
, typename U1
229 , typename U2
, typename U3
, typename U4
, typename U5
231 struct resolve_bind_arg
<
232 bind3
< F
,T1
,T2
,T3
>, U1
, U2
, U3
, U4
, U5
235 typedef bind3
< F
,T1
,T2
,T3
> f_
;
236 typedef typename apply_wrap5
< f_
,U1
,U2
,U3
,U4
,U5
>::type type
;
241 BOOST_MPL_AUX_ARITY_SPEC(4, bind3
)
242 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3
)
245 typename F
, typename T1
, typename T2
, typename T3
247 struct bind
< F
,T1
,T2
,T3
,na
,na
>
248 : bind3
< F
,T1
,T2
,T3
>
253 typename F
, typename T1
, typename T2
, typename T3
, typename T4
258 typename U1
= na
, typename U2
= na
, typename U3
= na
259 , typename U4
= na
, typename U5
= na
264 typedef typename
aux::resolve_bind_arg
< F
,U1
,U2
,U3
,U4
,U5
>::type f_
;
265 typedef aux::resolve_bind_arg
< T1
,U1
,U2
,U3
,U4
,U5
> t1
;
266 typedef aux::resolve_bind_arg
< T2
,U1
,U2
,U3
,U4
,U5
> t2
;
267 typedef aux::resolve_bind_arg
< T3
,U1
,U2
,U3
,U4
,U5
> t3
;
268 typedef aux::resolve_bind_arg
< T4
,U1
,U2
,U3
,U4
,U5
> t4
;
271 typedef typename apply_wrap4
<
273 , typename
t1::type
, typename
t2::type
, typename
t3::type
283 typename F
, typename T1
, typename T2
, typename T3
, typename T4
284 , typename U1
, typename U2
, typename U3
, typename U4
, typename U5
286 struct resolve_bind_arg
<
287 bind4
< F
,T1
,T2
,T3
,T4
>, U1
, U2
, U3
, U4
, U5
290 typedef bind4
< F
,T1
,T2
,T3
,T4
> f_
;
291 typedef typename apply_wrap5
< f_
,U1
,U2
,U3
,U4
,U5
>::type type
;
296 BOOST_MPL_AUX_ARITY_SPEC(5, bind4
)
297 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4
)
300 typename F
, typename T1
, typename T2
, typename T3
, typename T4
302 struct bind
< F
,T1
,T2
,T3
,T4
,na
>
303 : bind4
< F
,T1
,T2
,T3
,T4
>
308 typename F
, typename T1
, typename T2
, typename T3
, typename T4
314 typename U1
= na
, typename U2
= na
, typename U3
= na
315 , typename U4
= na
, typename U5
= na
320 typedef typename
aux::resolve_bind_arg
< F
,U1
,U2
,U3
,U4
,U5
>::type f_
;
321 typedef aux::resolve_bind_arg
< T1
,U1
,U2
,U3
,U4
,U5
> t1
;
322 typedef aux::resolve_bind_arg
< T2
,U1
,U2
,U3
,U4
,U5
> t2
;
323 typedef aux::resolve_bind_arg
< T3
,U1
,U2
,U3
,U4
,U5
> t3
;
324 typedef aux::resolve_bind_arg
< T4
,U1
,U2
,U3
,U4
,U5
> t4
;
325 typedef aux::resolve_bind_arg
< T5
,U1
,U2
,U3
,U4
,U5
> t5
;
328 typedef typename apply_wrap5
<
330 , typename
t1::type
, typename
t2::type
, typename
t3::type
331 , typename
t4::type
, typename
t5::type
340 typename F
, typename T1
, typename T2
, typename T3
, typename T4
341 , typename T5
, typename U1
, typename U2
, typename U3
, typename U4
344 struct resolve_bind_arg
<
345 bind5
< F
,T1
,T2
,T3
,T4
,T5
>, U1
, U2
, U3
, U4
, U5
348 typedef bind5
< F
,T1
,T2
,T3
,T4
,T5
> f_
;
349 typedef typename apply_wrap5
< f_
,U1
,U2
,U3
,U4
,U5
>::type type
;
354 BOOST_MPL_AUX_ARITY_SPEC(6, bind5
)
355 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5
)
357 /// primary template (not a specialization!)
360 typename F
, typename T1
, typename T2
, typename T3
, typename T4
364 : bind5
< F
,T1
,T2
,T3
,T4
,T5
>
368 /// if_/eval_if specializations
369 template< template< typename T1
, typename T2
, typename T3
> class F
, typename Tag
>
372 template< typename T1
, typename T2
, typename T3
> struct if_
;
375 typename Tag
, typename T1
, typename T2
, typename T3
383 typename U1
= na
, typename U2
= na
, typename U3
= na
384 , typename U4
= na
, typename U5
= na
389 typedef mpl::arg
<1> n1
;
390 typedef aux::resolve_bind_arg
< T1
,U1
,U2
,U3
,U4
,U5
> t1
;
391 typedef aux::resolve_bind_arg
< T2
,U1
,U2
,U3
,U4
,U5
> t2
;
392 typedef aux::resolve_bind_arg
< T3
,U1
,U2
,U3
,U4
,U5
> t3
;
393 typedef typename if_
<
399 typedef typename
f_::type type
;
404 template< typename T1
, typename T2
, typename T3
> class F
, typename Tag
408 template< typename T1
, typename T2
, typename T3
> struct eval_if
;
411 typename Tag
, typename T1
, typename T2
, typename T3
414 quote3
< eval_if
,Tag
>
419 typename U1
= na
, typename U2
= na
, typename U3
= na
420 , typename U4
= na
, typename U5
= na
425 typedef mpl::arg
<1> n1
;
426 typedef aux::resolve_bind_arg
< T1
,U1
,U2
,U3
,U4
,U5
> t1
;
427 typedef aux::resolve_bind_arg
< T2
,U1
,U2
,U3
,U4
,U5
> t2
;
428 typedef aux::resolve_bind_arg
< T3
,U1
,U2
,U3
,U4
,U5
> t3
;
429 typedef typename eval_if
<
435 typedef typename
f_::type type
;