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;