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
;
48 typename F
, int dummy_
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
)
89 typename F
, int dummy_
91 struct bind
< F
,na
,na
,na
,na
,na
>
97 typename F
, typename T1
, int dummy_
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
, int dummy_
142 struct bind
< F
,T1
,na
,na
,na
,na
>
148 typename F
, typename T1
, typename T2
, int dummy_
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
, int dummy_
194 struct bind
< F
,T1
,T2
,na
,na
,na
>
200 typename F
, typename T1
, typename T2
, typename T3
, int dummy_
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
, int dummy_
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
259 typename U1
= na
, typename U2
= na
, typename U3
= na
260 , typename U4
= na
, typename U5
= na
265 typedef typename
aux::resolve_bind_arg
< F
,U1
,U2
,U3
,U4
,U5
>::type f_
;
266 typedef aux::resolve_bind_arg
< T1
,U1
,U2
,U3
,U4
,U5
> t1
;
267 typedef aux::resolve_bind_arg
< T2
,U1
,U2
,U3
,U4
,U5
> t2
;
268 typedef aux::resolve_bind_arg
< T3
,U1
,U2
,U3
,U4
,U5
> t3
;
269 typedef aux::resolve_bind_arg
< T4
,U1
,U2
,U3
,U4
,U5
> t4
;
272 typedef typename apply_wrap4
<
274 , typename
t1::type
, typename
t2::type
, typename
t3::type
284 typename F
, typename T1
, typename T2
, typename T3
, typename T4
285 , typename U1
, typename U2
, typename U3
, typename U4
, typename U5
287 struct resolve_bind_arg
<
288 bind4
< F
,T1
,T2
,T3
,T4
>, U1
, U2
, U3
, U4
, U5
291 typedef bind4
< F
,T1
,T2
,T3
,T4
> f_
;
292 typedef typename apply_wrap5
< f_
,U1
,U2
,U3
,U4
,U5
>::type type
;
297 BOOST_MPL_AUX_ARITY_SPEC(5, bind4
)
298 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4
)
301 typename F
, typename T1
, typename T2
, typename T3
, typename T4
304 struct bind
< F
,T1
,T2
,T3
,T4
,na
>
305 : bind4
< F
,T1
,T2
,T3
,T4
>
310 typename F
, typename T1
, typename T2
, typename T3
, typename T4
311 , typename T5
, int dummy_
316 typename U1
= na
, typename U2
= na
, typename U3
= na
317 , typename U4
= na
, typename U5
= na
322 typedef typename
aux::resolve_bind_arg
< F
,U1
,U2
,U3
,U4
,U5
>::type f_
;
323 typedef aux::resolve_bind_arg
< T1
,U1
,U2
,U3
,U4
,U5
> t1
;
324 typedef aux::resolve_bind_arg
< T2
,U1
,U2
,U3
,U4
,U5
> t2
;
325 typedef aux::resolve_bind_arg
< T3
,U1
,U2
,U3
,U4
,U5
> t3
;
326 typedef aux::resolve_bind_arg
< T4
,U1
,U2
,U3
,U4
,U5
> t4
;
327 typedef aux::resolve_bind_arg
< T5
,U1
,U2
,U3
,U4
,U5
> t5
;
330 typedef typename apply_wrap5
<
332 , typename
t1::type
, typename
t2::type
, typename
t3::type
333 , typename
t4::type
, typename
t5::type
342 typename F
, typename T1
, typename T2
, typename T3
, typename T4
343 , typename T5
, typename U1
, typename U2
, typename U3
, typename U4
346 struct resolve_bind_arg
<
347 bind5
< F
,T1
,T2
,T3
,T4
,T5
>, U1
, U2
, U3
, U4
, U5
350 typedef bind5
< F
,T1
,T2
,T3
,T4
,T5
> f_
;
351 typedef typename apply_wrap5
< f_
,U1
,U2
,U3
,U4
,U5
>::type type
;
356 BOOST_MPL_AUX_ARITY_SPEC(6, bind5
)
357 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5
)
359 /// primary template (not a specialization!)
362 typename F
, typename T1
, typename T2
, typename T3
, typename T4
363 , typename T5
, int dummy_
366 : bind5
< F
,T1
,T2
,T3
,T4
,T5
>
370 /// if_/eval_if specializations
371 template< template< typename T1
, typename T2
, typename T3
> class F
, typename Tag
>
374 template< typename T1
, typename T2
, typename T3
> struct if_
;
377 typename Tag
, typename T1
, typename T2
, typename T3
385 typename U1
= na
, typename U2
= na
, typename U3
= na
386 , typename U4
= na
, typename U5
= na
391 typedef mpl::arg
<1> n1
;
392 typedef aux::resolve_bind_arg
< T1
,U1
,U2
,U3
,U4
,U5
> t1
;
393 typedef aux::resolve_bind_arg
< T2
,U1
,U2
,U3
,U4
,U5
> t2
;
394 typedef aux::resolve_bind_arg
< T3
,U1
,U2
,U3
,U4
,U5
> t3
;
395 typedef typename if_
<
401 typedef typename
f_::type type
;