~ubuntu-branches/debian/sid/boost1.49/sid

« back to all changes in this revision

Viewing changes to boost/mpl/aux_/preprocessed/msvc70/bind.hpp

  • Committer: Package Import Robot
  • Author(s): Steve M. Robbins
  • Date: 2012-02-26 00:31:44 UTC
  • Revision ID: package-import@ubuntu.com-20120226003144-eaytp12cbf6ubpms
Tags: upstream-1.49.0
ImportĀ upstreamĀ versionĀ 1.49.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
// Copyright Peter Dimov 2001
 
3
// Copyright Aleksey Gurtovoy 2001-2004
 
4
//
 
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)
 
8
//
 
9
 
 
10
// Preprocessed version of "boost/mpl/bind.hpp" header
 
11
// -- DO NOT modify by hand!
 
12
 
 
13
namespace boost { namespace mpl {
 
14
 
 
15
namespace aux {
 
16
template< bool >
 
17
struct resolve_arg_impl
 
18
{
 
19
    template<
 
20
          typename T, typename U1, typename U2, typename U3
 
21
        , typename U4, typename U5
 
22
        >
 
23
    struct result_
 
24
    {
 
25
        typedef T type;
 
26
    };
 
27
};
 
28
 
 
29
template<>
 
30
struct resolve_arg_impl<true>
 
31
{
 
32
    template<
 
33
          typename T, typename U1, typename U2, typename U3
 
34
        , typename U4, typename U5
 
35
        >
 
36
    struct result_
 
37
    {
 
38
        typedef typename apply_wrap5<
 
39
              T
 
40
            , U1, U2, U3, U4, U5
 
41
            >::type type;
 
42
    };
 
43
};
 
44
 
 
45
template< typename T > struct is_bind_template;
 
46
 
 
47
template<
 
48
      typename T, typename U1, typename U2, typename U3, typename U4
 
49
    , typename U5
 
50
    >
 
51
struct resolve_bind_arg
 
52
    : resolve_arg_impl< is_bind_template<T>::value >
 
53
            ::template result_< T,U1,U2,U3,U4,U5 >
 
54
{
 
55
};
 
56
 
 
57
template< typename T >
 
58
struct replace_unnamed_arg_impl
 
59
{
 
60
    template< typename Arg > struct result_
 
61
    {
 
62
        typedef Arg next;
 
63
        typedef T type;
 
64
    };
 
65
};
 
66
 
 
67
template<>
 
68
struct replace_unnamed_arg_impl< arg< -1 > >
 
69
{
 
70
    template< typename Arg > struct result_
 
71
    {
 
72
        typedef typename next<Arg>::type next;
 
73
        typedef Arg type;
 
74
    };
 
75
};
 
76
 
 
77
template< typename T, typename Arg >
 
78
struct replace_unnamed_arg
 
79
    : replace_unnamed_arg_impl<T>::template result_<Arg>
 
80
{
 
81
};
 
82
 
 
83
template< int arity_ > struct bind_chooser;
 
84
 
 
85
aux::no_tag is_bind_helper(...);
 
86
template< typename T > aux::no_tag is_bind_helper(protect<T>*);
 
87
 
 
88
template< int N >
 
89
aux::yes_tag is_bind_helper(arg<N>*);
 
90
 
 
91
template< bool is_ref_  = true >
 
92
struct is_bind_template_impl
 
93
{
 
94
    template< typename T > struct result_
 
95
    {
 
96
        BOOST_STATIC_CONSTANT(bool, value  = false);
 
97
    };
 
98
};
 
99
 
 
100
template<>
 
101
struct is_bind_template_impl<false>
 
102
{
 
103
    template< typename T > struct result_
 
104
    {
 
105
        BOOST_STATIC_CONSTANT(bool, value =
 
106
              sizeof(aux::is_bind_helper(static_cast<T*>(0)))
 
107
                == sizeof(aux::yes_tag)
 
108
            );
 
109
    };
 
110
};
 
111
 
 
112
template< typename T > struct is_bind_template
 
113
    : is_bind_template_impl< ::boost::detail::is_reference_impl<T>::value >
 
114
        ::template result_<T>
 
115
{
 
116
};
 
117
 
 
118
} // namespace aux
 
119
 
 
120
template<
 
121
      typename F
 
122
    >
 
123
struct bind0
 
124
{
 
125
    template<
 
126
          typename U1 = na, typename U2 = na, typename U3 = na
 
127
        , typename U4 = na, typename U5 = na
 
128
        >
 
129
    struct apply
 
130
    {
 
131
     private:
 
132
        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
 
133
        typedef typename r0::type a0;
 
134
        typedef typename r0::next n1;
 
135
        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
 
136
        ///
 
137
     public:
 
138
        typedef typename apply_wrap0<
 
139
              f_
 
140
            >::type type;
 
141
 
 
142
    };
 
143
};
 
144
 
 
145
namespace aux {
 
146
 
 
147
template<
 
148
      typename F
 
149
    >
 
150
aux::yes_tag
 
151
is_bind_helper(bind0<F>*);
 
152
 
 
153
} // namespace aux
 
154
 
 
155
BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
 
156
BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
157
 
 
158
template<
 
159
      typename F, typename T1
 
160
    >
 
161
struct bind1
 
162
{
 
163
    template<
 
164
          typename U1 = na, typename U2 = na, typename U3 = na
 
165
        , typename U4 = na, typename U5 = na
 
166
        >
 
167
    struct apply
 
168
    {
 
169
     private:
 
170
        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
 
171
        typedef typename r0::type a0;
 
172
        typedef typename r0::next n1;
 
173
        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
 
174
        ///
 
175
        typedef aux::replace_unnamed_arg< T1,n1 > r1;
 
176
        typedef typename r1::type a1;
 
177
        typedef typename r1::next n2;
 
178
        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
 
179
        ///
 
180
     public:
 
181
        typedef typename apply_wrap1<
 
182
              f_
 
183
            , typename t1::type
 
184
            >::type type;
 
185
 
 
186
    };
 
187
};
 
188
 
 
189
namespace aux {
 
190
 
 
191
template<
 
192
      typename F, typename T1
 
193
    >
 
194
aux::yes_tag
 
195
is_bind_helper(bind1< F,T1 >*);
 
196
 
 
197
} // namespace aux
 
198
 
 
199
BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
 
200
BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
201
 
 
202
template<
 
203
      typename F, typename T1, typename T2
 
204
    >
 
205
struct bind2
 
206
{
 
207
    template<
 
208
          typename U1 = na, typename U2 = na, typename U3 = na
 
209
        , typename U4 = na, typename U5 = na
 
210
        >
 
211
    struct apply
 
212
    {
 
213
     private:
 
214
        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
 
215
        typedef typename r0::type a0;
 
216
        typedef typename r0::next n1;
 
217
        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
 
218
        ///
 
219
        typedef aux::replace_unnamed_arg< T1,n1 > r1;
 
220
        typedef typename r1::type a1;
 
221
        typedef typename r1::next n2;
 
222
        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
 
223
        ///
 
224
        typedef aux::replace_unnamed_arg< T2,n2 > r2;
 
225
        typedef typename r2::type a2;
 
226
        typedef typename r2::next n3;
 
227
        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
 
228
        ///
 
229
     public:
 
230
        typedef typename apply_wrap2<
 
231
              f_
 
232
            , typename t1::type, typename t2::type
 
233
            >::type type;
 
234
 
 
235
    };
 
236
};
 
237
 
 
238
namespace aux {
 
239
 
 
240
template<
 
241
      typename F, typename T1, typename T2
 
242
    >
 
243
aux::yes_tag
 
244
is_bind_helper(bind2< F,T1,T2 >*);
 
245
 
 
246
} // namespace aux
 
247
 
 
248
BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
 
249
BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
250
 
 
251
template<
 
252
      typename F, typename T1, typename T2, typename T3
 
253
    >
 
254
struct bind3
 
255
{
 
256
    template<
 
257
          typename U1 = na, typename U2 = na, typename U3 = na
 
258
        , typename U4 = na, typename U5 = na
 
259
        >
 
260
    struct apply
 
261
    {
 
262
     private:
 
263
        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
 
264
        typedef typename r0::type a0;
 
265
        typedef typename r0::next n1;
 
266
        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
 
267
        ///
 
268
        typedef aux::replace_unnamed_arg< T1,n1 > r1;
 
269
        typedef typename r1::type a1;
 
270
        typedef typename r1::next n2;
 
271
        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
 
272
        ///
 
273
        typedef aux::replace_unnamed_arg< T2,n2 > r2;
 
274
        typedef typename r2::type a2;
 
275
        typedef typename r2::next n3;
 
276
        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
 
277
        ///
 
278
        typedef aux::replace_unnamed_arg< T3,n3 > r3;
 
279
        typedef typename r3::type a3;
 
280
        typedef typename r3::next n4;
 
281
        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
 
282
        ///
 
283
     public:
 
284
        typedef typename apply_wrap3<
 
285
              f_
 
286
            , typename t1::type, typename t2::type, typename t3::type
 
287
            >::type type;
 
288
 
 
289
    };
 
290
};
 
291
 
 
292
namespace aux {
 
293
 
 
294
template<
 
295
      typename F, typename T1, typename T2, typename T3
 
296
    >
 
297
aux::yes_tag
 
298
is_bind_helper(bind3< F,T1,T2,T3 >*);
 
299
 
 
300
} // namespace aux
 
301
 
 
302
BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
 
303
BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
304
 
 
305
template<
 
306
      typename F, typename T1, typename T2, typename T3, typename T4
 
307
    >
 
308
struct bind4
 
309
{
 
310
    template<
 
311
          typename U1 = na, typename U2 = na, typename U3 = na
 
312
        , typename U4 = na, typename U5 = na
 
313
        >
 
314
    struct apply
 
315
    {
 
316
     private:
 
317
        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
 
318
        typedef typename r0::type a0;
 
319
        typedef typename r0::next n1;
 
320
        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
 
321
        ///
 
322
        typedef aux::replace_unnamed_arg< T1,n1 > r1;
 
323
        typedef typename r1::type a1;
 
324
        typedef typename r1::next n2;
 
325
        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
 
326
        ///
 
327
        typedef aux::replace_unnamed_arg< T2,n2 > r2;
 
328
        typedef typename r2::type a2;
 
329
        typedef typename r2::next n3;
 
330
        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
 
331
        ///
 
332
        typedef aux::replace_unnamed_arg< T3,n3 > r3;
 
333
        typedef typename r3::type a3;
 
334
        typedef typename r3::next n4;
 
335
        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
 
336
        ///
 
337
        typedef aux::replace_unnamed_arg< T4,n4 > r4;
 
338
        typedef typename r4::type a4;
 
339
        typedef typename r4::next n5;
 
340
        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
 
341
        ///
 
342
     public:
 
343
        typedef typename apply_wrap4<
 
344
              f_
 
345
            , typename t1::type, typename t2::type, typename t3::type
 
346
            , typename t4::type
 
347
            >::type type;
 
348
 
 
349
    };
 
350
};
 
351
 
 
352
namespace aux {
 
353
 
 
354
template<
 
355
      typename F, typename T1, typename T2, typename T3, typename T4
 
356
    >
 
357
aux::yes_tag
 
358
is_bind_helper(bind4< F,T1,T2,T3,T4 >*);
 
359
 
 
360
} // namespace aux
 
361
 
 
362
BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
 
363
BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
364
 
 
365
template<
 
366
      typename F, typename T1, typename T2, typename T3, typename T4
 
367
    , typename T5
 
368
    >
 
369
struct bind5
 
370
{
 
371
    template<
 
372
          typename U1 = na, typename U2 = na, typename U3 = na
 
373
        , typename U4 = na, typename U5 = na
 
374
        >
 
375
    struct apply
 
376
    {
 
377
     private:
 
378
        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
 
379
        typedef typename r0::type a0;
 
380
        typedef typename r0::next n1;
 
381
        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
 
382
        ///
 
383
        typedef aux::replace_unnamed_arg< T1,n1 > r1;
 
384
        typedef typename r1::type a1;
 
385
        typedef typename r1::next n2;
 
386
        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
 
387
        ///
 
388
        typedef aux::replace_unnamed_arg< T2,n2 > r2;
 
389
        typedef typename r2::type a2;
 
390
        typedef typename r2::next n3;
 
391
        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
 
392
        ///
 
393
        typedef aux::replace_unnamed_arg< T3,n3 > r3;
 
394
        typedef typename r3::type a3;
 
395
        typedef typename r3::next n4;
 
396
        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
 
397
        ///
 
398
        typedef aux::replace_unnamed_arg< T4,n4 > r4;
 
399
        typedef typename r4::type a4;
 
400
        typedef typename r4::next n5;
 
401
        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
 
402
        ///
 
403
        typedef aux::replace_unnamed_arg< T5,n5 > r5;
 
404
        typedef typename r5::type a5;
 
405
        typedef typename r5::next n6;
 
406
        typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
 
407
        ///
 
408
     public:
 
409
        typedef typename apply_wrap5<
 
410
              f_
 
411
            , typename t1::type, typename t2::type, typename t3::type
 
412
            , typename t4::type, typename t5::type
 
413
            >::type type;
 
414
 
 
415
    };
 
416
};
 
417
 
 
418
namespace aux {
 
419
 
 
420
template<
 
421
      typename F, typename T1, typename T2, typename T3, typename T4
 
422
    , typename T5
 
423
    >
 
424
aux::yes_tag
 
425
is_bind_helper(bind5< F,T1,T2,T3,T4,T5 >*);
 
426
 
 
427
} // namespace aux
 
428
 
 
429
BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
 
430
BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 
431
}}
 
432