bind/bind.hpp
Go to the documentation of this file.
1 #ifndef BOOST_BIND_BIND_HPP_INCLUDED
2 #define BOOST_BIND_BIND_HPP_INCLUDED
3 
4 // MS compatible compilers support #pragma once
5 
6 #if defined(_MSC_VER) && (_MSC_VER >= 1020)
7 # pragma once
8 #endif
9 
10 //
11 // bind.hpp - binds function objects to arguments
12 //
13 // Copyright (c) 2001-2004 Peter Dimov and Multi Media Ltd.
14 // Copyright (c) 2001 David Abrahams
15 // Copyright (c) 2005 Peter Dimov
16 //
17 // Distributed under the Boost Software License, Version 1.0. (See
18 // accompanying file LICENSE_1_0.txt or copy at
19 // http://www.boost.org/LICENSE_1_0.txt)
20 //
21 // See http://www.boost.org/libs/bind/bind.html for documentation.
22 //
23 
24 #include <boost/config.hpp>
25 #include <boost/ref.hpp>
26 #include <boost/mem_fn.hpp>
27 #include <boost/type.hpp>
28 #include <boost/is_placeholder.hpp>
29 #include <boost/bind/arg.hpp>
31 #include <boost/visit_each.hpp>
32 #include <boost/core/enable_if.hpp>
33 #include <boost/core/is_same.hpp>
34 
35 #if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
36 #include <utility> // std::forward
37 #endif
38 
39 // Borland-specific bug, visit_each() silently fails to produce code
40 
41 #if defined(__BORLANDC__)
42 # define BOOST_BIND_VISIT_EACH boost::visit_each
43 #else
44 # define BOOST_BIND_VISIT_EACH visit_each
45 #endif
46 
47 #include <boost/bind/storage.hpp>
48 
49 #ifdef BOOST_MSVC
50 # pragma warning(push)
51 # pragma warning(disable: 4512) // assignment operator could not be generated
52 #endif
53 
54 namespace boost
55 {
56 
57 template<class T> class weak_ptr;
58 
59 namespace _bi // implementation details
60 {
61 
62 // result_traits
63 
64 template<class R, class F> struct result_traits
65 {
66  typedef R type;
67 };
68 
69 #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
70 
71 struct unspecified {};
72 
73 template<class F> struct result_traits<unspecified, F>
74 {
75  typedef typename F::result_type type;
76 };
77 
78 template<class F> struct result_traits< unspecified, reference_wrapper<F> >
79 {
80  typedef typename F::result_type type;
81 };
82 
83 #endif
84 
85 // ref_compare
86 
87 template<class T> bool ref_compare( T const & a, T const & b, long )
88 {
89  return a == b;
90 }
91 
92 template<int I> bool ref_compare( arg<I> const &, arg<I> const &, int )
93 {
94  return true;
95 }
96 
97 template<int I> bool ref_compare( arg<I> (*) (), arg<I> (*) (), int )
98 {
99  return true;
100 }
101 
102 template<class T> bool ref_compare( reference_wrapper<T> const & a, reference_wrapper<T> const & b, int )
103 {
104  return a.get_pointer() == b.get_pointer();
105 }
106 
107 // bind_t forward declaration for listN
108 
109 template<class R, class F, class L> class bind_t;
110 
111 template<class R, class F, class L> bool ref_compare( bind_t<R, F, L> const & a, bind_t<R, F, L> const & b, int )
112 {
113  return a.compare( b );
114 }
115 
116 // value
117 
118 template<class T> class value
119 {
120 public:
121 
122  value(T const & t): t_(t) {}
123 
124  T & get() { return t_; }
125  T const & get() const { return t_; }
126 
127  bool operator==(value const & rhs) const
128  {
129  return t_ == rhs.t_;
130  }
131 
132 private:
133 
134  T t_;
135 };
136 
137 // ref_compare for weak_ptr
138 
139 template<class T> bool ref_compare( value< weak_ptr<T> > const & a, value< weak_ptr<T> > const & b, int )
140 {
141  return !(a.get() < b.get()) && !(b.get() < a.get());
142 }
143 
144 // type
145 
146 template<class T> class type {};
147 
148 // unwrap
149 
150 template<class F> struct unwrapper
151 {
152  static inline F & unwrap( F & f, long )
153  {
154  return f;
155  }
156 
157  template<class F2> static inline F2 & unwrap( reference_wrapper<F2> rf, int )
158  {
159  return rf.get();
160  }
161 
162  template<class R, class T> static inline _mfi::dm<R, T> unwrap( R T::* pm, int )
163  {
164  return _mfi::dm<R, T>( pm );
165  }
166 };
167 
168 // listN
169 
170 class list0
171 {
172 public:
173 
174  list0() {}
175 
176  template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
177 
178  template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
179 
180  template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
181 
182  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
183 
184  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
185 
186  template<class R, class F, class A> R operator()(type<R>, F & f, A &, long)
187  {
188  return unwrapper<F>::unwrap(f, 0)();
189  }
190 
191  template<class R, class F, class A> R operator()(type<R>, F const & f, A &, long) const
192  {
193  return unwrapper<F const>::unwrap(f, 0)();
194  }
195 
196  template<class F, class A> void operator()(type<void>, F & f, A &, int)
197  {
198  unwrapper<F>::unwrap(f, 0)();
199  }
200 
201  template<class F, class A> void operator()(type<void>, F const & f, A &, int) const
202  {
204  }
205 
206  template<class V> void accept(V &) const
207  {
208  }
209 
210  bool operator==(list0 const &) const
211  {
212  return true;
213  }
214 };
215 
216 #ifdef BOOST_MSVC
217 // MSVC is bright enough to realise that the parameter rhs
218 // in operator==may be unused for some template argument types:
219 #pragma warning(push)
220 #pragma warning(disable:4100)
221 #endif
222 
223 template< class A1 > class list1: private storage1< A1 >
224 {
225 private:
226 
228 
229 public:
230 
231  explicit list1( A1 a1 ): base_type( a1 ) {}
232 
234 
235  A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
236 
237  template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
238 
239  template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
240 
241  template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
242 
243  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
244 
245  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
246 
247  template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
248  {
249  return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_]);
250  }
251 
252  template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
253  {
255  }
256 
257  template<class F, class A> void operator()(type<void>, F & f, A & a, int)
258  {
260  }
261 
262  template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
263  {
265  }
266 
267  template<class V> void accept(V & v) const
268  {
270  }
271 
272  bool operator==(list1 const & rhs) const
273  {
274  return ref_compare(base_type::a1_, rhs.a1_, 0);
275  }
276 };
277 
278 struct logical_and;
279 struct logical_or;
280 
281 template< class A1, class A2 > class list2: private storage2< A1, A2 >
282 {
283 private:
284 
286 
287 public:
288 
289  list2( A1 a1, A2 a2 ): base_type( a1, a2 ) {}
290 
293 
294  A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
295  A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
296 
297  template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
298 
299  template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
300 
301  template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
302 
303  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
304 
305  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
306 
307  template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
308  {
310  }
311 
312  template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
313  {
315  }
316 
317  template<class F, class A> void operator()(type<void>, F & f, A & a, int)
318  {
320  }
321 
322  template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
323  {
325  }
326 
327  template<class A> bool operator()( type<bool>, logical_and & /*f*/, A & a, int )
328  {
329  return a[ base_type::a1_ ] && a[ base_type::a2_ ];
330  }
331 
332  template<class A> bool operator()( type<bool>, logical_and const & /*f*/, A & a, int ) const
333  {
334  return a[ base_type::a1_ ] && a[ base_type::a2_ ];
335  }
336 
337  template<class A> bool operator()( type<bool>, logical_or & /*f*/, A & a, int )
338  {
339  return a[ base_type::a1_ ] || a[ base_type::a2_ ];
340  }
341 
342  template<class A> bool operator()( type<bool>, logical_or const & /*f*/, A & a, int ) const
343  {
344  return a[ base_type::a1_ ] || a[ base_type::a2_ ];
345  }
346 
347  template<class V> void accept(V & v) const
348  {
350  }
351 
352  bool operator==(list2 const & rhs) const
353  {
354  return ref_compare(base_type::a1_, rhs.a1_, 0) && ref_compare(base_type::a2_, rhs.a2_, 0);
355  }
356 };
357 
358 template< class A1, class A2, class A3 > class list3: private storage3< A1, A2, A3 >
359 {
360 private:
361 
363 
364 public:
365 
366  list3( A1 a1, A2 a2, A3 a3 ): base_type( a1, a2, a3 ) {}
367 
371 
372  A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
373  A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
374  A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
375 
376  template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
377 
378  template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
379 
380  template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
381 
382  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
383 
384  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
385 
386  template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
387  {
389  }
390 
391  template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
392  {
394  }
395 
396  template<class F, class A> void operator()(type<void>, F & f, A & a, int)
397  {
399  }
400 
401  template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
402  {
404  }
405 
406  template<class V> void accept(V & v) const
407  {
409  }
410 
411  bool operator==(list3 const & rhs) const
412  {
413  return
414 
415  ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
416  ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
417  ref_compare( base_type::a3_, rhs.a3_, 0 );
418  }
419 };
420 
421 template< class A1, class A2, class A3, class A4 > class list4: private storage4< A1, A2, A3, A4 >
422 {
423 private:
424 
426 
427 public:
428 
429  list4( A1 a1, A2 a2, A3 a3, A4 a4 ): base_type( a1, a2, a3, a4 ) {}
430 
435 
436  A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
437  A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
438  A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
439  A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
440 
441  template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
442 
443  template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
444 
445  template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
446 
447  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
448 
449  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
450 
451  template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
452  {
454  }
455 
456  template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
457  {
459  }
460 
461  template<class F, class A> void operator()(type<void>, F & f, A & a, int)
462  {
464  }
465 
466  template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
467  {
469  }
470 
471  template<class V> void accept(V & v) const
472  {
474  }
475 
476  bool operator==(list4 const & rhs) const
477  {
478  return
479 
480  ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
481  ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
482  ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
483  ref_compare( base_type::a4_, rhs.a4_, 0 );
484  }
485 };
486 
487 template< class A1, class A2, class A3, class A4, class A5 > class list5: private storage5< A1, A2, A3, A4, A5 >
488 {
489 private:
490 
492 
493 public:
494 
495  list5( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5 ): base_type( a1, a2, a3, a4, a5 ) {}
496 
502 
503  A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
504  A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
505  A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
506  A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
507  A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; }
508 
509  template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
510 
511  template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
512 
513  template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
514 
515  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
516 
517  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
518 
519  template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
520  {
522  }
523 
524  template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
525  {
527  }
528 
529  template<class F, class A> void operator()(type<void>, F & f, A & a, int)
530  {
532  }
533 
534  template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
535  {
537  }
538 
539  template<class V> void accept(V & v) const
540  {
542  }
543 
544  bool operator==(list5 const & rhs) const
545  {
546  return
547 
548  ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
549  ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
550  ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
551  ref_compare( base_type::a4_, rhs.a4_, 0 ) &&
552  ref_compare( base_type::a5_, rhs.a5_, 0 );
553  }
554 };
555 
556 template<class A1, class A2, class A3, class A4, class A5, class A6> class list6: private storage6< A1, A2, A3, A4, A5, A6 >
557 {
558 private:
559 
561 
562 public:
563 
564  list6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6 ): base_type( a1, a2, a3, a4, a5, a6 ) {}
565 
572 
573  A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
574  A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
575  A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
576  A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
577  A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; }
578  A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; }
579 
580  template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
581 
582  template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
583 
584  template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
585 
586  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
587 
588  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
589 
590  template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
591  {
593  }
594 
595  template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
596  {
598  }
599 
600  template<class F, class A> void operator()(type<void>, F & f, A & a, int)
601  {
603  }
604 
605  template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
606  {
608  }
609 
610  template<class V> void accept(V & v) const
611  {
613  }
614 
615  bool operator==(list6 const & rhs) const
616  {
617  return
618 
619  ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
620  ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
621  ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
622  ref_compare( base_type::a4_, rhs.a4_, 0 ) &&
623  ref_compare( base_type::a5_, rhs.a5_, 0 ) &&
624  ref_compare( base_type::a6_, rhs.a6_, 0 );
625  }
626 };
627 
628 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> class list7: private storage7< A1, A2, A3, A4, A5, A6, A7 >
629 {
630 private:
631 
633 
634 public:
635 
636  list7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7 ): base_type( a1, a2, a3, a4, a5, a6, a7 ) {}
637 
645 
646  A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
647  A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
648  A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
649  A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
650  A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; }
651  A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; }
652  A7 operator[] (boost::arg<7> (*) ()) const { return base_type::a7_; }
653 
654  template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
655 
656  template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
657 
658  template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
659 
660  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
661 
662  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
663 
664  template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
665  {
667  }
668 
669  template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
670  {
672  }
673 
674  template<class F, class A> void operator()(type<void>, F & f, A & a, int)
675  {
677  }
678 
679  template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
680  {
682  }
683 
684  template<class V> void accept(V & v) const
685  {
687  }
688 
689  bool operator==(list7 const & rhs) const
690  {
691  return
692 
693  ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
694  ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
695  ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
696  ref_compare( base_type::a4_, rhs.a4_, 0 ) &&
697  ref_compare( base_type::a5_, rhs.a5_, 0 ) &&
698  ref_compare( base_type::a6_, rhs.a6_, 0 ) &&
699  ref_compare( base_type::a7_, rhs.a7_, 0 );
700  }
701 };
702 
703 template< class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 > class list8: private storage8< A1, A2, A3, A4, A5, A6, A7, A8 >
704 {
705 private:
706 
708 
709 public:
710 
711  list8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8 ): base_type( a1, a2, a3, a4, a5, a6, a7, a8 ) {}
712 
721 
722  A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
723  A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
724  A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
725  A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
726  A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; }
727  A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; }
728  A7 operator[] (boost::arg<7> (*) ()) const { return base_type::a7_; }
729  A8 operator[] (boost::arg<8> (*) ()) const { return base_type::a8_; }
730 
731  template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
732 
733  template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
734 
735  template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
736 
737  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
738 
739  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
740 
741  template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
742  {
744  }
745 
746  template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
747  {
749  }
750 
751  template<class F, class A> void operator()(type<void>, F & f, A & a, int)
752  {
754  }
755 
756  template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
757  {
759  }
760 
761  template<class V> void accept(V & v) const
762  {
764  }
765 
766  bool operator==(list8 const & rhs) const
767  {
768  return
769 
770  ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
771  ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
772  ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
773  ref_compare( base_type::a4_, rhs.a4_, 0 ) &&
774  ref_compare( base_type::a5_, rhs.a5_, 0 ) &&
775  ref_compare( base_type::a6_, rhs.a6_, 0 ) &&
776  ref_compare( base_type::a7_, rhs.a7_, 0 ) &&
777  ref_compare( base_type::a8_, rhs.a8_, 0 );
778  }
779 };
780 
781 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> class list9: private storage9< A1, A2, A3, A4, A5, A6, A7, A8, A9 >
782 {
783 private:
784 
786 
787 public:
788 
789  list9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9 ): base_type( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) {}
790 
800 
801  A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
802  A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
803  A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
804  A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
805  A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; }
806  A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; }
807  A7 operator[] (boost::arg<7> (*) ()) const { return base_type::a7_; }
808  A8 operator[] (boost::arg<8> (*) ()) const { return base_type::a8_; }
809  A9 operator[] (boost::arg<9> (*) ()) const { return base_type::a9_; }
810 
811  template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
812 
813  template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
814 
815  template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
816 
817  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
818 
819  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
820 
821  template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
822  {
824  }
825 
826  template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
827  {
829  }
830 
831  template<class F, class A> void operator()(type<void>, F & f, A & a, int)
832  {
834  }
835 
836  template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
837  {
839  }
840 
841  template<class V> void accept(V & v) const
842  {
844  }
845 
846  bool operator==(list9 const & rhs) const
847  {
848  return
849 
850  ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
851  ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
852  ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
853  ref_compare( base_type::a4_, rhs.a4_, 0 ) &&
854  ref_compare( base_type::a5_, rhs.a5_, 0 ) &&
855  ref_compare( base_type::a6_, rhs.a6_, 0 ) &&
856  ref_compare( base_type::a7_, rhs.a7_, 0 ) &&
857  ref_compare( base_type::a8_, rhs.a8_, 0 ) &&
858  ref_compare( base_type::a9_, rhs.a9_, 0 );
859  }
860 };
861 
862 #ifdef BOOST_MSVC
863 #pragma warning(pop)
864 #endif
865 
866 // bind_t
867 
868 #if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
869 
870 template< class A1 > class rrlist1
871 {
872 private:
873 
874  A1 & a1_; // not A1&& because of msvc-10.0
875 
876 public:
877 
878  explicit rrlist1( A1 & a1 ): a1_( a1 ) {}
879 
880  A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); } // not static_cast because of g++ 4.9
881 
882  A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); }
883 
884  template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
885 
886  template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
887 
888  template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
889 
890  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
891  {
892  rrlist1<A1&> a( a1_ );
893  return b.eval( a );
894  }
895 
896  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
897  {
898  rrlist1<A1&> a( a1_ );
899  return b.eval( a );
900  }
901 };
902 
903 template< class A1, class A2 > class rrlist2
904 {
905 private:
906 
907  A1 & a1_;
908  A2 & a2_;
909 
910 public:
911 
912  rrlist2( A1 & a1, A2 & a2 ): a1_( a1 ), a2_( a2 ) {}
913 
914  A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); }
915  A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); }
916 
917  A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); }
918  A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); }
919 
920  template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
921 
922  template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
923 
924  template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
925 
926  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
927  {
928  rrlist2<A1&, A2&> a( a1_, a2_ );
929  return b.eval( a );
930  }
931 
932  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
933  {
934  rrlist2<A1&, A2&> a( a1_, a2_ );
935  return b.eval( a );
936  }
937 };
938 
939 template< class A1, class A2, class A3 > class rrlist3
940 {
941 private:
942 
943  A1 & a1_;
944  A2 & a2_;
945  A3 & a3_;
946 
947 public:
948 
949  rrlist3( A1 & a1, A2 & a2, A3 & a3 ): a1_( a1 ), a2_( a2 ), a3_( a3 ) {}
950 
951  A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); }
952  A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); }
953  A3 && operator[] (boost::arg<3>) const { return std::forward<A3>( a3_ ); }
954 
955  A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); }
956  A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); }
957  A3 && operator[] (boost::arg<3> (*) ()) const { return std::forward<A3>( a3_ ); }
958 
959  template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
960 
961  template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
962 
963  template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
964 
965  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
966  {
968  return b.eval( a );
969  }
970 
971  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
972  {
974  return b.eval( a );
975  }
976 };
977 
978 template< class A1, class A2, class A3, class A4 > class rrlist4
979 {
980 private:
981 
982  A1 & a1_;
983  A2 & a2_;
984  A3 & a3_;
985  A4 & a4_;
986 
987 public:
988 
989  rrlist4( A1 & a1, A2 & a2, A3 & a3, A4 & a4 ): a1_( a1 ), a2_( a2 ), a3_( a3 ), a4_( a4 ) {}
990 
991  A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); }
992  A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); }
993  A3 && operator[] (boost::arg<3>) const { return std::forward<A3>( a3_ ); }
994  A4 && operator[] (boost::arg<4>) const { return std::forward<A4>( a4_ ); }
995 
996  A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); }
997  A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); }
998  A3 && operator[] (boost::arg<3> (*) ()) const { return std::forward<A3>( a3_ ); }
999  A4 && operator[] (boost::arg<4> (*) ()) const { return std::forward<A4>( a4_ ); }
1000 
1001  template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
1002 
1003  template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
1004 
1005  template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
1006 
1007  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
1008  {
1010  return b.eval( a );
1011  }
1012 
1013  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
1014  {
1016  return b.eval( a );
1017  }
1018 };
1019 
1020 template< class A1, class A2, class A3, class A4, class A5 > class rrlist5
1021 {
1022 private:
1023 
1024  A1 & a1_;
1025  A2 & a2_;
1026  A3 & a3_;
1027  A4 & a4_;
1028  A5 & a5_;
1029 
1030 public:
1031 
1032  rrlist5( A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5 ): a1_( a1 ), a2_( a2 ), a3_( a3 ), a4_( a4 ), a5_( a5 ) {}
1033 
1034  A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); }
1035  A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); }
1036  A3 && operator[] (boost::arg<3>) const { return std::forward<A3>( a3_ ); }
1037  A4 && operator[] (boost::arg<4>) const { return std::forward<A4>( a4_ ); }
1038  A5 && operator[] (boost::arg<5>) const { return std::forward<A5>( a5_ ); }
1039 
1040  A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); }
1041  A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); }
1042  A3 && operator[] (boost::arg<3> (*) ()) const { return std::forward<A3>( a3_ ); }
1043  A4 && operator[] (boost::arg<4> (*) ()) const { return std::forward<A4>( a4_ ); }
1044  A5 && operator[] (boost::arg<5> (*) ()) const { return std::forward<A5>( a5_ ); }
1045 
1046  template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
1047 
1048  template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
1049 
1050  template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
1051 
1052  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
1053  {
1055  return b.eval( a );
1056  }
1057 
1058  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
1059  {
1061  return b.eval( a );
1062  }
1063 };
1064 
1065 template< class A1, class A2, class A3, class A4, class A5, class A6 > class rrlist6
1066 {
1067 private:
1068 
1069  A1 & a1_;
1070  A2 & a2_;
1071  A3 & a3_;
1072  A4 & a4_;
1073  A5 & a5_;
1074  A6 & a6_;
1075 
1076 public:
1077 
1078  rrlist6( A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6 ): a1_( a1 ), a2_( a2 ), a3_( a3 ), a4_( a4 ), a5_( a5 ), a6_( a6 ) {}
1079 
1080  A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); }
1081  A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); }
1082  A3 && operator[] (boost::arg<3>) const { return std::forward<A3>( a3_ ); }
1083  A4 && operator[] (boost::arg<4>) const { return std::forward<A4>( a4_ ); }
1084  A5 && operator[] (boost::arg<5>) const { return std::forward<A5>( a5_ ); }
1085  A6 && operator[] (boost::arg<6>) const { return std::forward<A6>( a6_ ); }
1086 
1087  A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); }
1088  A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); }
1089  A3 && operator[] (boost::arg<3> (*) ()) const { return std::forward<A3>( a3_ ); }
1090  A4 && operator[] (boost::arg<4> (*) ()) const { return std::forward<A4>( a4_ ); }
1091  A5 && operator[] (boost::arg<5> (*) ()) const { return std::forward<A5>( a5_ ); }
1092  A6 && operator[] (boost::arg<6> (*) ()) const { return std::forward<A6>( a6_ ); }
1093 
1094  template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
1095 
1096  template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
1097 
1098  template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
1099 
1100  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
1101  {
1103  return b.eval( a );
1104  }
1105 
1106  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
1107  {
1109  return b.eval( a );
1110  }
1111 };
1112 
1113 template< class A1, class A2, class A3, class A4, class A5, class A6, class A7 > class rrlist7
1114 {
1115 private:
1116 
1117  A1 & a1_;
1118  A2 & a2_;
1119  A3 & a3_;
1120  A4 & a4_;
1121  A5 & a5_;
1122  A6 & a6_;
1123  A7 & a7_;
1124 
1125 public:
1126 
1127  rrlist7( A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7 ): a1_( a1 ), a2_( a2 ), a3_( a3 ), a4_( a4 ), a5_( a5 ), a6_( a6 ), a7_( a7 ) {}
1128 
1129  A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); }
1130  A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); }
1131  A3 && operator[] (boost::arg<3>) const { return std::forward<A3>( a3_ ); }
1132  A4 && operator[] (boost::arg<4>) const { return std::forward<A4>( a4_ ); }
1133  A5 && operator[] (boost::arg<5>) const { return std::forward<A5>( a5_ ); }
1134  A6 && operator[] (boost::arg<6>) const { return std::forward<A6>( a6_ ); }
1135  A7 && operator[] (boost::arg<7>) const { return std::forward<A7>( a7_ ); }
1136 
1137  A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); }
1138  A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); }
1139  A3 && operator[] (boost::arg<3> (*) ()) const { return std::forward<A3>( a3_ ); }
1140  A4 && operator[] (boost::arg<4> (*) ()) const { return std::forward<A4>( a4_ ); }
1141  A5 && operator[] (boost::arg<5> (*) ()) const { return std::forward<A5>( a5_ ); }
1142  A6 && operator[] (boost::arg<6> (*) ()) const { return std::forward<A6>( a6_ ); }
1143  A7 && operator[] (boost::arg<7> (*) ()) const { return std::forward<A7>( a7_ ); }
1144 
1145  template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
1146 
1147  template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
1148 
1149  template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
1150 
1151  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
1152  {
1154  return b.eval( a );
1155  }
1156 
1157  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
1158  {
1160  return b.eval( a );
1161  }
1162 };
1163 
1164 template< class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 > class rrlist8
1165 {
1166 private:
1167 
1168  A1 & a1_;
1169  A2 & a2_;
1170  A3 & a3_;
1171  A4 & a4_;
1172  A5 & a5_;
1173  A6 & a6_;
1174  A7 & a7_;
1175  A8 & a8_;
1176 
1177 public:
1178 
1179  rrlist8( A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8 ): a1_( a1 ), a2_( a2 ), a3_( a3 ), a4_( a4 ), a5_( a5 ), a6_( a6 ), a7_( a7 ), a8_( a8 ) {}
1180 
1181  A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); }
1182  A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); }
1183  A3 && operator[] (boost::arg<3>) const { return std::forward<A3>( a3_ ); }
1184  A4 && operator[] (boost::arg<4>) const { return std::forward<A4>( a4_ ); }
1185  A5 && operator[] (boost::arg<5>) const { return std::forward<A5>( a5_ ); }
1186  A6 && operator[] (boost::arg<6>) const { return std::forward<A6>( a6_ ); }
1187  A7 && operator[] (boost::arg<7>) const { return std::forward<A7>( a7_ ); }
1188  A8 && operator[] (boost::arg<8>) const { return std::forward<A8>( a8_ ); }
1189 
1190  A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); }
1191  A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); }
1192  A3 && operator[] (boost::arg<3> (*) ()) const { return std::forward<A3>( a3_ ); }
1193  A4 && operator[] (boost::arg<4> (*) ()) const { return std::forward<A4>( a4_ ); }
1194  A5 && operator[] (boost::arg<5> (*) ()) const { return std::forward<A5>( a5_ ); }
1195  A6 && operator[] (boost::arg<6> (*) ()) const { return std::forward<A6>( a6_ ); }
1196  A7 && operator[] (boost::arg<7> (*) ()) const { return std::forward<A7>( a7_ ); }
1197  A8 && operator[] (boost::arg<8> (*) ()) const { return std::forward<A8>( a8_ ); }
1198 
1199  template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
1200 
1201  template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
1202 
1203  template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
1204 
1205  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
1206  {
1208  return b.eval( a );
1209  }
1210 
1211  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
1212  {
1214  return b.eval( a );
1215  }
1216 };
1217 
1218 template< class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9 > class rrlist9
1219 {
1220 private:
1221 
1222  A1 & a1_;
1223  A2 & a2_;
1224  A3 & a3_;
1225  A4 & a4_;
1226  A5 & a5_;
1227  A6 & a6_;
1228  A7 & a7_;
1229  A8 & a8_;
1230  A9 & a9_;
1231 
1232 public:
1233 
1234  rrlist9( A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9 ): a1_( a1 ), a2_( a2 ), a3_( a3 ), a4_( a4 ), a5_( a5 ), a6_( a6 ), a7_( a7 ), a8_( a8 ), a9_( a9 ) {}
1235 
1236  A1 && operator[] (boost::arg<1>) const { return std::forward<A1>( a1_ ); }
1237  A2 && operator[] (boost::arg<2>) const { return std::forward<A2>( a2_ ); }
1238  A3 && operator[] (boost::arg<3>) const { return std::forward<A3>( a3_ ); }
1239  A4 && operator[] (boost::arg<4>) const { return std::forward<A4>( a4_ ); }
1240  A5 && operator[] (boost::arg<5>) const { return std::forward<A5>( a5_ ); }
1241  A6 && operator[] (boost::arg<6>) const { return std::forward<A6>( a6_ ); }
1242  A7 && operator[] (boost::arg<7>) const { return std::forward<A7>( a7_ ); }
1243  A8 && operator[] (boost::arg<8>) const { return std::forward<A8>( a8_ ); }
1244  A9 && operator[] (boost::arg<9>) const { return std::forward<A9>( a9_ ); }
1245 
1246  A1 && operator[] (boost::arg<1> (*) ()) const { return std::forward<A1>( a1_ ); }
1247  A2 && operator[] (boost::arg<2> (*) ()) const { return std::forward<A2>( a2_ ); }
1248  A3 && operator[] (boost::arg<3> (*) ()) const { return std::forward<A3>( a3_ ); }
1249  A4 && operator[] (boost::arg<4> (*) ()) const { return std::forward<A4>( a4_ ); }
1250  A5 && operator[] (boost::arg<5> (*) ()) const { return std::forward<A5>( a5_ ); }
1251  A6 && operator[] (boost::arg<6> (*) ()) const { return std::forward<A6>( a6_ ); }
1252  A7 && operator[] (boost::arg<7> (*) ()) const { return std::forward<A7>( a7_ ); }
1253  A8 && operator[] (boost::arg<8> (*) ()) const { return std::forward<A8>( a8_ ); }
1254  A9 && operator[] (boost::arg<9> (*) ()) const { return std::forward<A9>( a9_ ); }
1255 
1256  template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
1257 
1258  template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
1259 
1260  template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
1261 
1262  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
1263  {
1265  return b.eval( a );
1266  }
1267 
1268  template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
1269  {
1271  return b.eval( a );
1272  }
1273 };
1274 
1275 template<class R, class F, class L> class bind_t
1276 {
1277 private:
1278 
1279  F f_;
1280  L l_;
1281 
1282 public:
1283 
1286 
1287  bind_t( F f, L const & l ): f_( f ), l_( l ) {}
1288 
1289  //
1290 
1292  {
1293  list0 a;
1294  return l_( type<result_type>(), f_, a, 0 );
1295  }
1296 
1298  {
1299  list0 a;
1300  return l_( type<result_type>(), f_, a, 0 );
1301  }
1302 
1303  template<class A1> result_type operator()( A1 && a1 )
1304  {
1305  rrlist1< A1 > a( a1 );
1306  return l_( type<result_type>(), f_, a, 0 );
1307  }
1308 
1309  template<class A1> result_type operator()( A1 && a1 ) const
1310  {
1311  rrlist1< A1 > a( a1 );
1312  return l_(type<result_type>(), f_, a, 0);
1313  }
1314 
1315  template<class A1, class A2> result_type operator()( A1 && a1, A2 && a2 )
1316  {
1317  rrlist2< A1, A2 > a( a1, a2 );
1318  return l_( type<result_type>(), f_, a, 0 );
1319  }
1320 
1321  template<class A1, class A2> result_type operator()( A1 && a1, A2 && a2 ) const
1322  {
1323  rrlist2< A1, A2 > a( a1, a2 );
1324  return l_( type<result_type>(), f_, a, 0 );
1325  }
1326 
1327  template<class A1, class A2, class A3> result_type operator()( A1 && a1, A2 && a2, A3 && a3 )
1328  {
1329  rrlist3< A1, A2, A3 > a( a1, a2, a3 );
1330  return l_( type<result_type>(), f_, a, 0 );
1331  }
1332 
1333  template<class A1, class A2, class A3> result_type operator()( A1 && a1, A2 && a2, A3 && a3 ) const
1334  {
1335  rrlist3< A1, A2, A3 > a( a1, a2, a3 );
1336  return l_( type<result_type>(), f_, a, 0 );
1337  }
1338 
1339  template<class A1, class A2, class A3, class A4> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4 )
1340  {
1341  rrlist4< A1, A2, A3, A4 > a( a1, a2, a3, a4 );
1342  return l_( type<result_type>(), f_, a, 0 );
1343  }
1344 
1345  template<class A1, class A2, class A3, class A4> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4 ) const
1346  {
1347  rrlist4< A1, A2, A3, A4 > a( a1, a2, a3, a4 );
1348  return l_( type<result_type>(), f_, a, 0 );
1349  }
1350 
1351  template<class A1, class A2, class A3, class A4, class A5> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5 )
1352  {
1353  rrlist5< A1, A2, A3, A4, A5 > a( a1, a2, a3, a4, a5 );
1354  return l_( type<result_type>(), f_, a, 0 );
1355  }
1356 
1357  template<class A1, class A2, class A3, class A4, class A5> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5 ) const
1358  {
1359  rrlist5< A1, A2, A3, A4, A5 > a( a1, a2, a3, a4, a5 );
1360  return l_( type<result_type>(), f_, a, 0 );
1361  }
1362 
1363  template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6 )
1364  {
1365  rrlist6< A1, A2, A3, A4, A5, A6 > a( a1, a2, a3, a4, a5, a6 );
1366  return l_( type<result_type>(), f_, a, 0 );
1367  }
1368 
1369  template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6 ) const
1370  {
1371  rrlist6< A1, A2, A3, A4, A5, A6 > a( a1, a2, a3, a4, a5, a6 );
1372  return l_( type<result_type>(), f_, a, 0 );
1373  }
1374 
1375  template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6, A7 && a7 )
1376  {
1377  rrlist7< A1, A2, A3, A4, A5, A6, A7 > a( a1, a2, a3, a4, a5, a6, a7 );
1378  return l_( type<result_type>(), f_, a, 0 );
1379  }
1380 
1381  template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6, A7 && a7 ) const
1382  {
1383  rrlist7< A1, A2, A3, A4, A5, A6, A7 > a( a1, a2, a3, a4, a5, a6, a7 );
1384  return l_( type<result_type>(), f_, a, 0 );
1385  }
1386 
1387  template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6, A7 && a7, A8 && a8 )
1388  {
1389  rrlist8< A1, A2, A3, A4, A5, A6, A7, A8 > a( a1, a2, a3, a4, a5, a6, a7, a8 );
1390  return l_( type<result_type>(), f_, a, 0 );
1391  }
1392 
1393  template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6, A7 && a7, A8 && a8 ) const
1394  {
1395  rrlist8< A1, A2, A3, A4, A5, A6, A7, A8 > a( a1, a2, a3, a4, a5, a6, a7, a8 );
1396  return l_( type<result_type>(), f_, a, 0 );
1397  }
1398 
1399  template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6, A7 && a7, A8 && a8, A9 && a9 )
1400  {
1401  rrlist9< A1, A2, A3, A4, A5, A6, A7, A8, A9 > a( a1, a2, a3, a4, a5, a6, a7, a8, a9 );
1402  return l_( type<result_type>(), f_, a, 0 );
1403  }
1404 
1405  template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()( A1 && a1, A2 && a2, A3 && a3, A4 && a4, A5 && a5, A6 && a6, A7 && a7, A8 && a8, A9 && a9 ) const
1406  {
1407  rrlist9< A1, A2, A3, A4, A5, A6, A7, A8, A9 > a( a1, a2, a3, a4, a5, a6, a7, a8, a9 );
1408  return l_( type<result_type>(), f_, a, 0 );
1409  }
1410 
1411  //
1412 
1413  template<class A> result_type eval( A & a )
1414  {
1415  return l_( type<result_type>(), f_, a, 0 );
1416  }
1417 
1418  template<class A> result_type eval( A & a ) const
1419  {
1420  return l_( type<result_type>(), f_, a, 0 );
1421  }
1422 
1423  template<class V> void accept( V & v ) const
1424  {
1425 #if !defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) && !defined( __BORLANDC__ )
1426  using boost::visit_each;
1427 #endif
1428 
1429  BOOST_BIND_VISIT_EACH( v, f_, 0 );
1430  l_.accept( v );
1431  }
1432 
1433  bool compare( this_type const & rhs ) const
1434  {
1435  return ref_compare( f_, rhs.f_, 0 ) && l_ == rhs.l_;
1436  }
1437 };
1438 
1439 #elif !defined( BOOST_NO_VOID_RETURNS )
1440 
1441 template<class R, class F, class L> class bind_t
1442 {
1443 public:
1444 
1445  typedef bind_t this_type;
1446 
1447  bind_t(F f, L const & l): f_(f), l_(l) {}
1448 
1449 #define BOOST_BIND_RETURN return
1451 #undef BOOST_BIND_RETURN
1452 
1453 };
1454 
1455 #else // no void returns
1456 
1457 template<class R> struct bind_t_generator
1458 {
1459 
1460 template<class F, class L> class implementation
1461 {
1462 public:
1463 
1464  typedef implementation this_type;
1465 
1466  implementation(F f, L const & l): f_(f), l_(l) {}
1467 
1468 #define BOOST_BIND_RETURN return
1470 #undef BOOST_BIND_RETURN
1471 
1472 };
1473 
1474 };
1475 
1476 template<> struct bind_t_generator<void>
1477 {
1478 
1479 template<class F, class L> class implementation
1480 {
1481 private:
1482 
1483  typedef void R;
1484 
1485 public:
1486 
1487  typedef implementation this_type;
1488 
1489  implementation(F f, L const & l): f_(f), l_(l) {}
1490 
1491 #define BOOST_BIND_RETURN
1493 #undef BOOST_BIND_RETURN
1494 
1495 };
1496 
1497 };
1498 
1499 template<class R2, class F, class L> class bind_t: public bind_t_generator<R2>::BOOST_NESTED_TEMPLATE implementation<F, L>
1500 {
1501 public:
1502 
1503  bind_t(F f, L const & l): bind_t_generator<R2>::BOOST_NESTED_TEMPLATE implementation<F, L>(f, l) {}
1504 
1505 };
1506 
1507 #endif
1508 
1509 // function_equal
1510 
1511 #ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
1512 
1513 // put overloads in _bi, rely on ADL
1514 
1515 # ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1516 
1517 template<class R, class F, class L> bool function_equal( bind_t<R, F, L> const & a, bind_t<R, F, L> const & b )
1518 {
1519  return a.compare(b);
1520 }
1521 
1522 # else
1523 
1524 template<class R, class F, class L> bool function_equal_impl( bind_t<R, F, L> const & a, bind_t<R, F, L> const & b, int )
1525 {
1526  return a.compare(b);
1527 }
1528 
1529 # endif // #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1530 
1531 #else // BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
1532 
1533 // put overloads in boost
1534 
1535 } // namespace _bi
1536 
1537 # ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1538 
1539 template<class R, class F, class L> bool function_equal( _bi::bind_t<R, F, L> const & a, _bi::bind_t<R, F, L> const & b )
1540 {
1541  return a.compare(b);
1542 }
1543 
1544 # else
1545 
1546 template<class R, class F, class L> bool function_equal_impl( _bi::bind_t<R, F, L> const & a, _bi::bind_t<R, F, L> const & b, int )
1547 {
1548  return a.compare(b);
1549 }
1550 
1551 # endif // #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1552 
1553 namespace _bi
1554 {
1555 
1556 #endif // BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
1557 
1558 // add_value
1559 
1560 #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) || (__SUNPRO_CC >= 0x530)
1561 
1562 #if defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x582) )
1563 
1564 template<class T> struct add_value
1565 {
1566  typedef _bi::value<T> type;
1567 };
1568 
1569 #else
1570 
1571 template< class T, int I > struct add_value_2
1572 {
1574 };
1575 
1576 template< class T > struct add_value_2< T, 0 >
1577 {
1579 };
1580 
1581 template<class T> struct add_value
1582 {
1584 };
1585 
1586 #endif
1587 
1588 template<class T> struct add_value< value<T> >
1589 {
1591 };
1592 
1593 template<class T> struct add_value< reference_wrapper<T> >
1594 {
1596 };
1597 
1598 template<int I> struct add_value< arg<I> >
1599 {
1601 };
1602 
1603 template<int I> struct add_value< arg<I> (*) () >
1604 {
1605  typedef boost::arg<I> (*type) ();
1606 };
1607 
1608 template<class R, class F, class L> struct add_value< bind_t<R, F, L> >
1609 {
1611 };
1612 
1613 #else
1614 
1615 template<int I> struct _avt_0;
1616 
1617 template<> struct _avt_0<1>
1618 {
1619  template<class T> struct inner
1620  {
1621  typedef T type;
1622  };
1623 };
1624 
1625 template<> struct _avt_0<2>
1626 {
1627  template<class T> struct inner
1628  {
1629  typedef value<T> type;
1630  };
1631 };
1632 
1633 typedef char (&_avt_r1) [1];
1634 typedef char (&_avt_r2) [2];
1635 
1636 template<class T> _avt_r1 _avt_f(value<T>);
1637 template<class T> _avt_r1 _avt_f(reference_wrapper<T>);
1638 template<int I> _avt_r1 _avt_f(arg<I>);
1639 template<int I> _avt_r1 _avt_f(arg<I> (*) ());
1640 template<class R, class F, class L> _avt_r1 _avt_f(bind_t<R, F, L>);
1641 
1642 _avt_r2 _avt_f(...);
1643 
1644 template<class T> struct add_value
1645 {
1646  static T t();
1647  typedef typename _avt_0<sizeof(_avt_f(t()))>::template inner<T>::type type;
1648 };
1649 
1650 #endif
1651 
1652 // list_av_N
1653 
1654 template<class A1> struct list_av_1
1655 {
1656  typedef typename add_value<A1>::type B1;
1657  typedef list1<B1> type;
1658 };
1659 
1660 template<class A1, class A2> struct list_av_2
1661 {
1662  typedef typename add_value<A1>::type B1;
1663  typedef typename add_value<A2>::type B2;
1665 };
1666 
1667 template<class A1, class A2, class A3> struct list_av_3
1668 {
1669  typedef typename add_value<A1>::type B1;
1670  typedef typename add_value<A2>::type B2;
1671  typedef typename add_value<A3>::type B3;
1673 };
1674 
1675 template<class A1, class A2, class A3, class A4> struct list_av_4
1676 {
1677  typedef typename add_value<A1>::type B1;
1678  typedef typename add_value<A2>::type B2;
1679  typedef typename add_value<A3>::type B3;
1680  typedef typename add_value<A4>::type B4;
1682 };
1683 
1684 template<class A1, class A2, class A3, class A4, class A5> struct list_av_5
1685 {
1686  typedef typename add_value<A1>::type B1;
1687  typedef typename add_value<A2>::type B2;
1688  typedef typename add_value<A3>::type B3;
1689  typedef typename add_value<A4>::type B4;
1690  typedef typename add_value<A5>::type B5;
1692 };
1693 
1694 template<class A1, class A2, class A3, class A4, class A5, class A6> struct list_av_6
1695 {
1696  typedef typename add_value<A1>::type B1;
1697  typedef typename add_value<A2>::type B2;
1698  typedef typename add_value<A3>::type B3;
1699  typedef typename add_value<A4>::type B4;
1700  typedef typename add_value<A5>::type B5;
1701  typedef typename add_value<A6>::type B6;
1703 };
1704 
1705 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> struct list_av_7
1706 {
1707  typedef typename add_value<A1>::type B1;
1708  typedef typename add_value<A2>::type B2;
1709  typedef typename add_value<A3>::type B3;
1710  typedef typename add_value<A4>::type B4;
1711  typedef typename add_value<A5>::type B5;
1712  typedef typename add_value<A6>::type B6;
1713  typedef typename add_value<A7>::type B7;
1715 };
1716 
1717 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> struct list_av_8
1718 {
1719  typedef typename add_value<A1>::type B1;
1720  typedef typename add_value<A2>::type B2;
1721  typedef typename add_value<A3>::type B3;
1722  typedef typename add_value<A4>::type B4;
1723  typedef typename add_value<A5>::type B5;
1724  typedef typename add_value<A6>::type B6;
1725  typedef typename add_value<A7>::type B7;
1726  typedef typename add_value<A8>::type B8;
1728 };
1729 
1730 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> struct list_av_9
1731 {
1732  typedef typename add_value<A1>::type B1;
1733  typedef typename add_value<A2>::type B2;
1734  typedef typename add_value<A3>::type B3;
1735  typedef typename add_value<A4>::type B4;
1736  typedef typename add_value<A5>::type B5;
1737  typedef typename add_value<A6>::type B6;
1738  typedef typename add_value<A7>::type B7;
1739  typedef typename add_value<A8>::type B8;
1740  typedef typename add_value<A9>::type B9;
1742 };
1743 
1744 // operator!
1745 
1747 {
1748  template<class V> bool operator()(V const & v) const { return !v; }
1749 };
1750 
1751 template<class R, class F, class L>
1752  bind_t< bool, logical_not, list1< bind_t<R, F, L> > >
1754 {
1755  typedef list1< bind_t<R, F, L> > list_type;
1756  return bind_t<bool, logical_not, list_type> ( logical_not(), list_type(f) );
1757 }
1758 
1759 // relational operators
1760 
1761 #define BOOST_BIND_OPERATOR( op, name ) \
1762 \
1763 struct name \
1764 { \
1765  template<class V, class W> bool operator()(V const & v, W const & w) const { return v op w; } \
1766 }; \
1767  \
1768 template<class R, class F, class L, class A2> \
1769  bind_t< bool, name, list2< bind_t<R, F, L>, typename add_value<A2>::type > > \
1770  operator op (bind_t<R, F, L> const & f, A2 a2) \
1771 { \
1772  typedef typename add_value<A2>::type B2; \
1773  typedef list2< bind_t<R, F, L>, B2> list_type; \
1774  return bind_t<bool, name, list_type> ( name(), list_type(f, a2) ); \
1775 }
1776 
1777 BOOST_BIND_OPERATOR( ==, equal )
1778 BOOST_BIND_OPERATOR( !=, not_equal )
1779 
1780 BOOST_BIND_OPERATOR( <, less )
1781 BOOST_BIND_OPERATOR( <=, less_equal )
1782 
1783 BOOST_BIND_OPERATOR( >, greater )
1784 BOOST_BIND_OPERATOR( >=, greater_equal )
1785 
1786 BOOST_BIND_OPERATOR( &&, logical_and )
1787 BOOST_BIND_OPERATOR( ||, logical_or )
1788 
1789 #undef BOOST_BIND_OPERATOR
1790 
1791 #if defined(__GNUC__) && BOOST_WORKAROUND(__GNUC__, < 3)
1792 
1793 // resolve ambiguity with rel_ops
1794 
1795 #define BOOST_BIND_OPERATOR( op, name ) \
1796 \
1797 template<class R, class F, class L> \
1798  bind_t< bool, name, list2< bind_t<R, F, L>, bind_t<R, F, L> > > \
1799  operator op (bind_t<R, F, L> const & f, bind_t<R, F, L> const & g) \
1800 { \
1801  typedef list2< bind_t<R, F, L>, bind_t<R, F, L> > list_type; \
1802  return bind_t<bool, name, list_type> ( name(), list_type(f, g) ); \
1803 }
1804 
1805 BOOST_BIND_OPERATOR( !=, not_equal )
1806 BOOST_BIND_OPERATOR( <=, less_equal )
1807 BOOST_BIND_OPERATOR( >, greater )
1808 BOOST_BIND_OPERATOR( >=, greater_equal )
1809 
1810 #endif
1811 
1812 // visit_each, ADL
1813 
1814 #if !defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) && !defined( __BORLANDC__ ) \
1815  && !(defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ <= 3)
1816 
1817 template<class V, class T> void visit_each( V & v, value<T> const & t, int )
1818 {
1819  using boost::visit_each;
1820  BOOST_BIND_VISIT_EACH( v, t.get(), 0 );
1821 }
1822 
1823 template<class V, class R, class F, class L> void visit_each( V & v, bind_t<R, F, L> const & t, int )
1824 {
1825  t.accept( v );
1826 }
1827 
1828 #endif
1829 
1830 } // namespace _bi
1831 
1832 // visit_each, no ADL
1833 
1834 #if defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) || defined( __BORLANDC__ ) \
1835  || (defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ <= 3)
1836 
1837 template<class V, class T> void visit_each( V & v, _bi::value<T> const & t, int )
1838 {
1839  BOOST_BIND_VISIT_EACH( v, t.get(), 0 );
1840 }
1841 
1842 template<class V, class R, class F, class L> void visit_each( V & v, _bi::bind_t<R, F, L> const & t, int )
1843 {
1844  t.accept( v );
1845 }
1846 
1847 #endif
1848 
1849 // is_bind_expression
1850 
1851 template< class T > struct is_bind_expression
1852 {
1853  enum _vt { value = 0 };
1854 };
1855 
1856 #if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
1857 
1858 template< class R, class F, class L > struct is_bind_expression< _bi::bind_t< R, F, L > >
1859 {
1860  enum _vt { value = 1 };
1861 };
1862 
1863 #endif
1864 
1865 // bind
1866 
1867 #ifndef BOOST_BIND
1868 #define BOOST_BIND bind
1869 #endif
1870 
1871 // generic function objects
1872 
1873 template<class R, class F>
1874  _bi::bind_t<R, F, _bi::list0>
1876 {
1877  typedef _bi::list0 list_type;
1878  return _bi::bind_t<R, F, list_type> (f, list_type());
1879 }
1880 
1881 template<class R, class F, class A1>
1882  _bi::bind_t<R, F, typename _bi::list_av_1<A1>::type>
1883  BOOST_BIND(F f, A1 a1)
1884 {
1885  typedef typename _bi::list_av_1<A1>::type list_type;
1886  return _bi::bind_t<R, F, list_type> (f, list_type(a1));
1887 }
1888 
1889 template<class R, class F, class A1, class A2>
1890  _bi::bind_t<R, F, typename _bi::list_av_2<A1, A2>::type>
1891  BOOST_BIND(F f, A1 a1, A2 a2)
1892 {
1893  typedef typename _bi::list_av_2<A1, A2>::type list_type;
1894  return _bi::bind_t<R, F, list_type> (f, list_type(a1, a2));
1895 }
1896 
1897 template<class R, class F, class A1, class A2, class A3>
1898  _bi::bind_t<R, F, typename _bi::list_av_3<A1, A2, A3>::type>
1899  BOOST_BIND(F f, A1 a1, A2 a2, A3 a3)
1900 {
1901  typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
1902  return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3));
1903 }
1904 
1905 template<class R, class F, class A1, class A2, class A3, class A4>
1906  _bi::bind_t<R, F, typename _bi::list_av_4<A1, A2, A3, A4>::type>
1907  BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4)
1908 {
1909  typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
1910  return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4));
1911 }
1912 
1913 template<class R, class F, class A1, class A2, class A3, class A4, class A5>
1914  _bi::bind_t<R, F, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
1915  BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
1916 {
1917  typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
1918  return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5));
1919 }
1920 
1921 template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6>
1922  _bi::bind_t<R, F, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
1923  BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
1924 {
1925  typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
1926  return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6));
1927 }
1928 
1929 template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
1930  _bi::bind_t<R, F, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
1931  BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
1932 {
1933  typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
1934  return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7));
1935 }
1936 
1937 template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
1938  _bi::bind_t<R, F, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
1939  BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
1940 {
1941  typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
1942  return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8));
1943 }
1944 
1945 template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
1946  _bi::bind_t<R, F, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
1947  BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
1948 {
1950  return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
1951 }
1952 
1953 // generic function objects, alternative syntax
1954 
1955 template<class R, class F>
1956  _bi::bind_t<R, F, _bi::list0>
1958 {
1959  typedef _bi::list0 list_type;
1960  return _bi::bind_t<R, F, list_type> (f, list_type());
1961 }
1962 
1963 template<class R, class F, class A1>
1964  _bi::bind_t<R, F, typename _bi::list_av_1<A1>::type>
1966 {
1967  typedef typename _bi::list_av_1<A1>::type list_type;
1968  return _bi::bind_t<R, F, list_type> (f, list_type(a1));
1969 }
1970 
1971 template<class R, class F, class A1, class A2>
1972  _bi::bind_t<R, F, typename _bi::list_av_2<A1, A2>::type>
1974 {
1975  typedef typename _bi::list_av_2<A1, A2>::type list_type;
1976  return _bi::bind_t<R, F, list_type> (f, list_type(a1, a2));
1977 }
1978 
1979 template<class R, class F, class A1, class A2, class A3>
1980  _bi::bind_t<R, F, typename _bi::list_av_3<A1, A2, A3>::type>
1981  BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3)
1982 {
1983  typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
1984  return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3));
1985 }
1986 
1987 template<class R, class F, class A1, class A2, class A3, class A4>
1988  _bi::bind_t<R, F, typename _bi::list_av_4<A1, A2, A3, A4>::type>
1989  BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4)
1990 {
1991  typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
1992  return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4));
1993 }
1994 
1995 template<class R, class F, class A1, class A2, class A3, class A4, class A5>
1996  _bi::bind_t<R, F, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
1997  BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
1998 {
1999  typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
2000  return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5));
2001 }
2002 
2003 template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6>
2004  _bi::bind_t<R, F, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
2005  BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
2006 {
2007  typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
2008  return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6));
2009 }
2010 
2011 template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
2012  _bi::bind_t<R, F, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
2013  BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
2014 {
2015  typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
2016  return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7));
2017 }
2018 
2019 template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
2020  _bi::bind_t<R, F, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
2021  BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
2022 {
2023  typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
2024  return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8));
2025 }
2026 
2027 template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
2028  _bi::bind_t<R, F, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
2029  BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
2030 {
2032  return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
2033 }
2034 
2035 #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
2036 
2037 // adaptable function objects
2038 
2039 template<class F>
2040  _bi::bind_t<_bi::unspecified, F, _bi::list0>
2042 {
2043  typedef _bi::list0 list_type;
2044  return _bi::bind_t<_bi::unspecified, F, list_type> (f, list_type());
2045 }
2046 
2047 template<class F, class A1>
2048  _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_1<A1>::type>
2049  BOOST_BIND(F f, A1 a1)
2050 {
2051  typedef typename _bi::list_av_1<A1>::type list_type;
2052  return _bi::bind_t<_bi::unspecified, F, list_type> (f, list_type(a1));
2053 }
2054 
2055 template<class F, class A1, class A2>
2056  _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_2<A1, A2>::type>
2057  BOOST_BIND(F f, A1 a1, A2 a2)
2058 {
2059  typedef typename _bi::list_av_2<A1, A2>::type list_type;
2060  return _bi::bind_t<_bi::unspecified, F, list_type> (f, list_type(a1, a2));
2061 }
2062 
2063 template<class F, class A1, class A2, class A3>
2064  _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_3<A1, A2, A3>::type>
2065  BOOST_BIND(F f, A1 a1, A2 a2, A3 a3)
2066 {
2067  typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
2068  return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3));
2069 }
2070 
2071 template<class F, class A1, class A2, class A3, class A4>
2072  _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_4<A1, A2, A3, A4>::type>
2073  BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4)
2074 {
2075  typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
2076  return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4));
2077 }
2078 
2079 template<class F, class A1, class A2, class A3, class A4, class A5>
2080  _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
2081  BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
2082 {
2083  typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
2084  return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5));
2085 }
2086 
2087 template<class F, class A1, class A2, class A3, class A4, class A5, class A6>
2088  _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
2089  BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
2090 {
2091  typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
2092  return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6));
2093 }
2094 
2095 template<class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
2096  _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
2097  BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
2098 {
2099  typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
2100  return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7));
2101 }
2102 
2103 template<class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
2104  _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
2105  BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
2106 {
2107  typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
2108  return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8));
2109 }
2110 
2111 template<class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
2112  _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
2113  BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
2114 {
2116  return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
2117 }
2118 
2119 #endif // !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
2120 
2121 // function pointers
2122 
2123 #define BOOST_BIND_CC
2124 #define BOOST_BIND_ST
2125 
2126 #include <boost/bind/bind_cc.hpp>
2127 
2128 #undef BOOST_BIND_CC
2129 #undef BOOST_BIND_ST
2130 
2131 #ifdef BOOST_BIND_ENABLE_STDCALL
2132 
2133 #define BOOST_BIND_CC __stdcall
2134 #define BOOST_BIND_ST
2135 
2136 #include <boost/bind/bind_cc.hpp>
2137 
2138 #undef BOOST_BIND_CC
2139 #undef BOOST_BIND_ST
2140 
2141 #endif
2142 
2143 #ifdef BOOST_BIND_ENABLE_FASTCALL
2144 
2145 #define BOOST_BIND_CC __fastcall
2146 #define BOOST_BIND_ST
2147 
2148 #include <boost/bind/bind_cc.hpp>
2149 
2150 #undef BOOST_BIND_CC
2151 #undef BOOST_BIND_ST
2152 
2153 #endif
2154 
2155 #ifdef BOOST_BIND_ENABLE_PASCAL
2156 
2157 #define BOOST_BIND_ST pascal
2158 #define BOOST_BIND_CC
2159 
2160 #include <boost/bind/bind_cc.hpp>
2161 
2162 #undef BOOST_BIND_ST
2163 #undef BOOST_BIND_CC
2164 
2165 #endif
2166 
2167 // member function pointers
2168 
2169 #define BOOST_BIND_MF_NAME(X) X
2170 #define BOOST_BIND_MF_CC
2171 
2172 #include <boost/bind/bind_mf_cc.hpp>
2173 #include <boost/bind/bind_mf2_cc.hpp>
2174 
2175 #undef BOOST_BIND_MF_NAME
2176 #undef BOOST_BIND_MF_CC
2177 
2178 #ifdef BOOST_MEM_FN_ENABLE_CDECL
2179 
2180 #define BOOST_BIND_MF_NAME(X) X##_cdecl
2181 #define BOOST_BIND_MF_CC __cdecl
2182 
2183 #include <boost/bind/bind_mf_cc.hpp>
2184 #include <boost/bind/bind_mf2_cc.hpp>
2185 
2186 #undef BOOST_BIND_MF_NAME
2187 #undef BOOST_BIND_MF_CC
2188 
2189 #endif
2190 
2191 #ifdef BOOST_MEM_FN_ENABLE_STDCALL
2192 
2193 #define BOOST_BIND_MF_NAME(X) X##_stdcall
2194 #define BOOST_BIND_MF_CC __stdcall
2195 
2196 #include <boost/bind/bind_mf_cc.hpp>
2197 #include <boost/bind/bind_mf2_cc.hpp>
2198 
2199 #undef BOOST_BIND_MF_NAME
2200 #undef BOOST_BIND_MF_CC
2201 
2202 #endif
2203 
2204 #ifdef BOOST_MEM_FN_ENABLE_FASTCALL
2205 
2206 #define BOOST_BIND_MF_NAME(X) X##_fastcall
2207 #define BOOST_BIND_MF_CC __fastcall
2208 
2209 #include <boost/bind/bind_mf_cc.hpp>
2210 #include <boost/bind/bind_mf2_cc.hpp>
2211 
2212 #undef BOOST_BIND_MF_NAME
2213 #undef BOOST_BIND_MF_CC
2214 
2215 #endif
2216 
2217 // data member pointers
2218 
2219 #if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) || defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
2220  || ( defined(__BORLANDC__) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x620 ) ) )
2221 
2222 template<class R, class T, class A1>
2223 _bi::bind_t< R, _mfi::dm<R, T>, typename _bi::list_av_1<A1>::type >
2224  BOOST_BIND(R T::*f, A1 a1)
2225 {
2226  typedef _mfi::dm<R, T> F;
2227  typedef typename _bi::list_av_1<A1>::type list_type;
2228  return _bi::bind_t<R, F, list_type>( F(f), list_type(a1) );
2229 }
2230 
2231 #else
2232 
2233 namespace _bi
2234 {
2235 
2236 template< class Pm, int I > struct add_cref;
2237 
2238 template< class M, class T > struct add_cref< M T::*, 0 >
2239 {
2240  typedef M type;
2241 };
2242 
2243 template< class M, class T > struct add_cref< M T::*, 1 >
2244 {
2245 #ifdef BOOST_MSVC
2246 #pragma warning(push)
2247 #pragma warning(disable:4180)
2248 #endif
2249  typedef M const & type;
2250 #ifdef BOOST_MSVC
2251 #pragma warning(pop)
2252 #endif
2253 };
2254 
2255 template< class R, class T > struct add_cref< R (T::*) (), 1 >
2256 {
2257  typedef void type;
2258 };
2259 
2260 #if !defined(__IBMCPP__) || __IBMCPP_FUNC_CV_TMPL_ARG_DEDUCTION
2261 
2262 template< class R, class T > struct add_cref< R (T::*) () const, 1 >
2263 {
2264  typedef void type;
2265 };
2266 
2267 #endif // __IBMCPP__
2268 
2269 template<class R> struct isref
2270 {
2271  enum value_type { value = 0 };
2272 };
2273 
2274 template<class R> struct isref< R& >
2275 {
2276  enum value_type { value = 1 };
2277 };
2278 
2279 template<class R> struct isref< R* >
2280 {
2281  enum value_type { value = 1 };
2282 };
2283 
2284 template<class Pm, class A1> struct dm_result
2285 {
2286  typedef typename add_cref< Pm, 1 >::type type;
2287 };
2288 
2289 template<class Pm, class R, class F, class L> struct dm_result< Pm, bind_t<R, F, L> >
2290 {
2293 };
2294 
2295 } // namespace _bi
2296 
2297 template< class A1, class M, class T >
2298 
2299 _bi::bind_t<
2302  typename _bi::list_av_1<A1>::type
2303 >
2304 
2305 BOOST_BIND( M T::*f, A1 a1 )
2306 {
2308  typedef _mfi::dm<M, T> F;
2309  typedef typename _bi::list_av_1<A1>::type list_type;
2310  return _bi::bind_t< result_type, F, list_type >( F( f ), list_type( a1 ) );
2311 }
2312 
2313 #endif
2314 
2315 } // namespace boost
2316 
2317 #ifndef BOOST_BIND_NO_PLACEHOLDERS
2318 
2319 # include <boost/bind/placeholders.hpp>
2320 
2321 #endif
2322 
2323 #ifdef BOOST_MSVC
2324 # pragma warning(default: 4512) // assignment operator could not be generated
2325 # pragma warning(pop)
2326 #endif
2327 
2328 #endif // #ifndef BOOST_BIND_BIND_HPP_INCLUDED
boost::_bi::rrlist7
Definition: bind/bind.hpp:1113
boost::is_bind_expression::value
@ value
Definition: bind/bind.hpp:1853
boost::_bi::list0
Definition: bind/bind.hpp:170
boost::_bi::list2::operator[]
A1 operator[](boost::arg< 1 >) const
Definition: bind/bind.hpp:291
boost::_bi::list7::accept
void accept(V &v) const
Definition: bind/bind.hpp:684
boost::_bi::storage9::accept
void accept(V &v) const
Definition: storage.hpp:425
boost::_bi::list_av_1
Definition: bind/bind.hpp:1654
boost::_bi::list6::operator()
void operator()(type< void >, F &f, A &a, int)
Definition: bind/bind.hpp:600
boost::_bi::rrlist3::a3_
A3 & a3_
Definition: bind/bind.hpp:945
boost::_bi::list7::operator==
bool operator==(list7 const &rhs) const
Definition: bind/bind.hpp:689
boost::_bi::rrlist6::a3_
A3 & a3_
Definition: bind/bind.hpp:1071
boost::_bi::add_cref< R(T::*)(), 1 >::type
void type
Definition: bind/bind.hpp:2257
boost::_bi::list_av_3::B2
add_value< A2 >::type B2
Definition: bind/bind.hpp:1670
boost::_bi::list2::operator()
bool operator()(type< bool >, logical_or &, A &a, int)
Definition: bind/bind.hpp:337
boost::_bi::storage9
Definition: storage.hpp:419
boost::_bi::bind_t::eval
result_type eval(A &a) const
Definition: bind/bind.hpp:1418
boost::_bi::storage4::a4_
A4 a4_
Definition: storage.hpp:186
boost::_bi::rrlist7::a1_
A1 & a1_
Definition: bind/bind.hpp:1117
bind_mf2_cc.hpp
boost::_bi::list_av_4::B2
add_value< A2 >::type B2
Definition: bind/bind.hpp:1678
boost::_bi::list9::list9
list9(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
Definition: bind/bind.hpp:789
boost::_bi::list7
Definition: bind/bind.hpp:628
R
#define R(x, n)
Definition: SHA256.cpp:50
boost::_bi::list2::operator==
bool operator==(list2 const &rhs) const
Definition: bind/bind.hpp:352
boost::_bi::storage3::accept
void accept(V &v) const
Definition: storage.hpp:131
boost::_bi::storage6::accept
void accept(V &v) const
Definition: storage.hpp:278
boost::_bi::rrlist9::a2_
A2 & a2_
Definition: bind/bind.hpp:1223
boost::_bi::bind_t::operator()
result_type operator()(A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6, A7 &&a7)
Definition: bind/bind.hpp:1375
boost::_bi::rrlist2::operator[]
A1 && operator[](boost::arg< 1 >) const
Definition: bind/bind.hpp:914
boost::_bi::rrlist2
Definition: bind/bind.hpp:903
boost::_bi::list0::operator()
R operator()(type< R >, F &f, A &, long)
Definition: bind/bind.hpp:186
boost::_bi::storage1::accept
void accept(V &v) const
Definition: storage.hpp:44
boost::_bi::list5::operator()
R operator()(type< R >, F const &f, A &a, long) const
Definition: bind/bind.hpp:524
boost::_bi::rrlist5::a2_
A2 & a2_
Definition: bind/bind.hpp:1025
boost::_bi::value::get
const T & get() const
Definition: bind/bind.hpp:125
boost::_bi::list_av_9::B1
add_value< A1 >::type B1
Definition: bind/bind.hpp:1732
boost::_bi::list1::base_type
storage1< A1 > base_type
Definition: bind/bind.hpp:227
boost::_bi::isref< R * >::value_type
value_type
Definition: bind/bind.hpp:2281
boost::_bi::list3::operator()
void operator()(type< void >, F const &f, A &a, int) const
Definition: bind/bind.hpp:401
T
T
Definition: mem_fn_cc.hpp:25
boost::_bi::list_av_4::type
list4< B1, B2, B3, B4 > type
Definition: bind/bind.hpp:1681
boost::_bi::list8::operator()
R operator()(type< R >, F &f, A &a, long)
Definition: bind/bind.hpp:741
boost::_bi::rrlist8::a2_
A2 & a2_
Definition: bind/bind.hpp:1169
boost::_bi::rrlist7::a5_
A5 & a5_
Definition: bind/bind.hpp:1121
boost::weak_ptr
Definition: bind/bind.hpp:57
boost::_bi::rrlist8::a4_
A4 & a4_
Definition: bind/bind.hpp:1171
config.hpp
boost::_bi::rrlist9::a1_
A1 & a1_
Definition: bind/bind.hpp:1222
bind_cc.hpp
boost::_bi::type
Definition: bind/bind.hpp:146
boost::_bi::bind_t::operator()
result_type operator()(A1 &&a1, A2 &&a2, A3 &&a3) const
Definition: bind/bind.hpp:1333
boost::_bi::dm_result< Pm, bind_t< R, F, L > >::result_type
bind_t< R, F, L >::result_type result_type
Definition: bind/bind.hpp:2291
boost::_bi::rrlist4::a2_
A2 & a2_
Definition: bind/bind.hpp:983
boost::_bi::rrlist3
Definition: bind/bind.hpp:939
boost::_bi::list_av_9::B9
add_value< A9 >::type B9
Definition: bind/bind.hpp:1740
boost::is_bind_expression
Definition: bind/bind.hpp:1851
boost::_bi::list1::accept
void accept(V &v) const
Definition: bind/bind.hpp:267
boost::_bi::list_av_9::type
list9< B1, B2, B3, B4, B5, B6, B7, B8, B9 > type
Definition: bind/bind.hpp:1741
boost::_bi::list_av_1::type
list1< B1 > type
Definition: bind/bind.hpp:1657
boost::_bi::list1::operator[]
A1 operator[](boost::arg< 1 >) const
Definition: bind/bind.hpp:233
boost::_bi::list_av_5
Definition: bind/bind.hpp:1684
boost::_bi::rrlist8::rrlist8
rrlist8(A1 &a1, A2 &a2, A3 &a3, A4 &a4, A5 &a5, A6 &a6, A7 &a7, A8 &a8)
Definition: bind/bind.hpp:1179
boost::_bi::list6::list6
list6(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
Definition: bind/bind.hpp:564
boost::reference_wrapper::get_pointer
BOOST_FORCEINLINE T * get_pointer() const
Definition: core/ref.hpp:106
boost::_bi::rrlist7::a7_
A7 & a7_
Definition: bind/bind.hpp:1123
boost::_bi::list0::operator[]
T & operator[](_bi::value< T > &v) const
Definition: bind/bind.hpp:176
boost::_bi::list7::operator()
R operator()(type< R >, F const &f, A &a, long) const
Definition: bind/bind.hpp:669
boost::_bi::add_value
Definition: bind/bind.hpp:1581
boost::_bi::list6::base_type
storage6< A1, A2, A3, A4, A5, A6 > base_type
Definition: bind/bind.hpp:560
boost::_bi::list2::base_type
storage2< A1, A2 > base_type
Definition: bind/bind.hpp:285
boost::_bi::list_av_9::B7
add_value< A7 >::type B7
Definition: bind/bind.hpp:1738
boost::_bi::storage5
Definition: storage.hpp:223
boost::_bi::list_av_9::B6
add_value< A6 >::type B6
Definition: bind/bind.hpp:1737
boost::_bi::dm_result< Pm, bind_t< R, F, L > >::type
add_cref< Pm, isref< result_type >::value >::type type
Definition: bind/bind.hpp:2292
boost::_bi::bind_t::bind_t
bind_t(F f, L const &l)
Definition: bind/bind.hpp:1287
boost::_bi::list_av_8::B8
add_value< A8 >::type B8
Definition: bind/bind.hpp:1726
boost::_bi::list3
Definition: bind/bind.hpp:358
boost::_bi::rrlist7::rrlist7
rrlist7(A1 &a1, A2 &a2, A3 &a3, A4 &a4, A5 &a5, A6 &a6, A7 &a7)
Definition: bind/bind.hpp:1127
boost::_bi::list_av_5::B2
add_value< A2 >::type B2
Definition: bind/bind.hpp:1687
boost::_bi::list_av_1::B1
add_value< A1 >::type B1
Definition: bind/bind.hpp:1656
boost::_bi::list1::operator()
R operator()(type< R >, F const &f, A &a, long) const
Definition: bind/bind.hpp:252
A1
A1
Definition: mem_fn_cc.hpp:35
boost::type
Definition: type.hpp:14
boost::_bi::bind_t
Definition: bind/bind.hpp:109
result_type
result_traits< R, F >::type result_type
Definition: bind_template.hpp:15
boost::_bi::value::get
T & get()
Definition: bind/bind.hpp:124
boost::_bi::rrlist6::a2_
A2 & a2_
Definition: bind/bind.hpp:1070
boost::_bi::rrlist3::rrlist3
rrlist3(A1 &a1, A2 &a2, A3 &a3)
Definition: bind/bind.hpp:949
boost::_bi::bind_t::operator()
result_type operator()(A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4) const
Definition: bind/bind.hpp:1345
boost::_bi::list6::accept
void accept(V &v) const
Definition: bind/bind.hpp:610
boost::_bi::list9::operator[]
A1 operator[](boost::arg< 1 >) const
Definition: bind/bind.hpp:791
boost::_bi::rrlist4::operator[]
A1 && operator[](boost::arg< 1 >) const
Definition: bind/bind.hpp:991
boost::_bi::list6::operator==
bool operator==(list6 const &rhs) const
Definition: bind/bind.hpp:615
boost::_bi::list_av_2
Definition: bind/bind.hpp:1660
boost::_bi::list9::base_type
storage9< A1, A2, A3, A4, A5, A6, A7, A8, A9 > base_type
Definition: bind/bind.hpp:785
boost::_bi::list_av_6::B6
add_value< A6 >::type B6
Definition: bind/bind.hpp:1701
boost::_bi::bind_t::operator()
result_type operator()(A1 &&a1) const
Definition: bind/bind.hpp:1309
is_placeholder.hpp
boost::_bi::bind_t::operator()
result_type operator()(A1 &&a1, A2 &&a2)
Definition: bind/bind.hpp:1315
boost::_bi::list_av_7::B4
add_value< A4 >::type B4
Definition: bind/bind.hpp:1710
enable_if.hpp
boost
BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE.
A7
A7
Definition: mem_fn_cc.hpp:95
boost::_bi::unspecified
Definition: bind/bind.hpp:71
boost::_bi::list5::operator==
bool operator==(list5 const &rhs) const
Definition: bind/bind.hpp:544
boost::_bi::storage8
Definition: storage.hpp:370
boost::_bi::list6::operator[]
A1 operator[](boost::arg< 1 >) const
Definition: bind/bind.hpp:566
boost::_bi::add_cref< M T::*, 1 >::type
const M & type
Definition: bind/bind.hpp:2249
boost::_bi::storage5::accept
void accept(V &v) const
Definition: storage.hpp:229
boost::_bi::list_av_4::B3
add_value< A3 >::type B3
Definition: bind/bind.hpp:1679
boost::_bi::list8
Definition: bind/bind.hpp:703
boost::_bi::list3::operator()
void operator()(type< void >, F &f, A &a, int)
Definition: bind/bind.hpp:396
boost::_bi::list_av_3::type
list3< B1, B2, B3 > type
Definition: bind/bind.hpp:1672
boost::_bi::rrlist7::a4_
A4 & a4_
Definition: bind/bind.hpp:1120
boost::_bi::bind_t::this_type
bind_t this_type
Definition: bind/bind.hpp:1285
A3
A3
Definition: mem_fn_cc.hpp:55
boost::_bi::rrlist1
Definition: bind/bind.hpp:870
boost::_bi::bind_t::operator()
result_type operator()(A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6, A7 &&a7, A8 &&a8) const
Definition: bind/bind.hpp:1393
boost::_bi::list7::operator()
void operator()(type< void >, F &f, A &a, int)
Definition: bind/bind.hpp:674
boost::_bi::list5::list5
list5(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
Definition: bind/bind.hpp:495
boost::_bi::list_av_9
Definition: bind/bind.hpp:1730
boost::_bi::list2::operator()
void operator()(type< void >, F const &f, A &a, int) const
Definition: bind/bind.hpp:322
boost::_bi::list_av_2::B2
add_value< A2 >::type B2
Definition: bind/bind.hpp:1663
boost::_bi::unwrapper::unwrap
static _mfi::dm< R, T > unwrap(R T::*pm, int)
Definition: bind/bind.hpp:162
boost::_bi::storage9::a9_
A9 a9_
Definition: storage.hpp:431
boost::_bi::list4::operator()
void operator()(type< void >, F const &f, A &a, int) const
Definition: bind/bind.hpp:466
boost::_bi::list2::operator()
bool operator()(type< bool >, logical_or const &, A &a, int) const
Definition: bind/bind.hpp:342
is_same.hpp
boost::_bi::list2::operator()
bool operator()(type< bool >, logical_and &, A &a, int)
Definition: bind/bind.hpp:327
boost::_bi::bind_t::operator()
result_type operator()(A1 &&a1, A2 &&a2) const
Definition: bind/bind.hpp:1321
boost::_bi::rrlist9::a6_
A6 & a6_
Definition: bind/bind.hpp:1227
boost::_bi::rrlist9::a4_
A4 & a4_
Definition: bind/bind.hpp:1225
ref.hpp
boost::_bi::list_av_7::B2
add_value< A2 >::type B2
Definition: bind/bind.hpp:1708
boost::reference_wrapper::get
BOOST_FORCEINLINE T & get() const
Definition: core/ref.hpp:99
boost::_bi::rrlist9::operator[]
A1 && operator[](boost::arg< 1 >) const
Definition: bind/bind.hpp:1236
boost::_bi::rrlist3::a2_
A2 & a2_
Definition: bind/bind.hpp:944
l_
L l_
Definition: bind_template.hpp:345
boost::_bi::list_av_5::B4
add_value< A4 >::type B4
Definition: bind/bind.hpp:1689
f
f
boost::_bi::list_av_8::B4
add_value< A4 >::type B4
Definition: bind/bind.hpp:1722
boost::_bi::list1::operator()
void operator()(type< void >, F &f, A &a, int)
Definition: bind/bind.hpp:257
boost::_bi::list1
Definition: bind/bind.hpp:223
boost::_bi::bind_t::operator()
result_type operator()(A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5) const
Definition: bind/bind.hpp:1357
boost::_bi::list_av_7::B7
add_value< A7 >::type B7
Definition: bind/bind.hpp:1713
boost::_bi::list_av_5::B5
add_value< A5 >::type B5
Definition: bind/bind.hpp:1690
boost::_bi::list4::operator()
R operator()(type< R >, F const &f, A &a, long) const
Definition: bind/bind.hpp:456
boost::_bi::list_av_4::B1
add_value< A1 >::type B1
Definition: bind/bind.hpp:1677
boost::_bi::rrlist9::a8_
A8 & a8_
Definition: bind/bind.hpp:1229
boost::_bi::list9::operator==
bool operator==(list9 const &rhs) const
Definition: bind/bind.hpp:846
boost::_bi::operator!
bind_t< bool, logical_not, list1< bind_t< R, F, L > > > operator!(bind_t< R, F, L > const &f)
Definition: bind/bind.hpp:1753
boost::_bi::list8::operator()
void operator()(type< void >, F const &f, A &a, int) const
Definition: bind/bind.hpp:756
boost::_bi::list_av_6
Definition: bind/bind.hpp:1694
boost::_bi::rrlist8::a1_
A1 & a1_
Definition: bind/bind.hpp:1168
boost::_bi::list_av_7::B1
add_value< A1 >::type B1
Definition: bind/bind.hpp:1707
boost::_bi::bind_t::l_
L l_
Definition: bind/bind.hpp:1280
boost::_bi::result_traits::type
R type
Definition: bind/bind.hpp:66
boost::_bi::storage4
Definition: storage.hpp:174
boost::_bi::list3::operator()
R operator()(type< R >, F &f, A &a, long)
Definition: bind/bind.hpp:386
boost::_bi::list1::operator()
R operator()(type< R >, F &f, A &a, long)
Definition: bind/bind.hpp:247
boost::_bi::list1::list1
list1(A1 a1)
Definition: bind/bind.hpp:231
A5
A5
Definition: mem_fn_cc.hpp:75
boost::_bi::list2::operator()
bool operator()(type< bool >, logical_and const &, A &a, int) const
Definition: bind/bind.hpp:332
boost::_bi::list4
Definition: bind/bind.hpp:421
boost::_bi::add_cref< R(T::*)() const, 1 >::type
void type
Definition: bind/bind.hpp:2264
boost::_bi::isref::value_type
value_type
Definition: bind/bind.hpp:2271
f_
F f_
Definition: bind_template.hpp:344
boost::arg
Definition: bind/arg.hpp:29
boost::_bi::bind_t::operator()
result_type operator()() const
Definition: bind/bind.hpp:1297
boost::_bi::result_traits
Definition: bind/bind.hpp:64
boost::_bi::list1::operator==
bool operator==(list1 const &rhs) const
Definition: bind/bind.hpp:272
boost::_bi::list3::operator()
R operator()(type< R >, F const &f, A &a, long) const
Definition: bind/bind.hpp:391
boost::_bi::list_av_6::B2
add_value< A2 >::type B2
Definition: bind/bind.hpp:1697
boost::_bi::list_av_8::type
list8< B1, B2, B3, B4, B5, B6, B7, B8 > type
Definition: bind/bind.hpp:1727
boost::_bi::list_av_9::B3
add_value< A3 >::type B3
Definition: bind/bind.hpp:1734
boost::_bi::result_traits< unspecified, reference_wrapper< F > >::type
F::result_type type
Definition: bind/bind.hpp:80
boost::_bi::list7::list7
list7(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
Definition: bind/bind.hpp:636
boost::_bi::list7::operator()
R operator()(type< R >, F &f, A &a, long)
Definition: bind/bind.hpp:664
boost::_bi::list9::operator()
R operator()(type< R >, F const &f, A &a, long) const
Definition: bind/bind.hpp:826
boost::_bi::storage8::a8_
A8 a8_
Definition: storage.hpp:382
boost::_bi::list8::base_type
storage8< A1, A2, A3, A4, A5, A6, A7, A8 > base_type
Definition: bind/bind.hpp:707
boost::_bi::unwrapper::unwrap
static F & unwrap(F &f, long)
Definition: bind/bind.hpp:152
boost::_bi::visit_each
void visit_each(V &v, value< T > const &t, int)
Definition: bind/bind.hpp:1817
boost::_bi::list2::list2
list2(A1 a1, A2 a2)
Definition: bind/bind.hpp:289
boost::is_bind_expression::_vt
_vt
Definition: bind/bind.hpp:1853
boost::_bi::rrlist8::a7_
A7 & a7_
Definition: bind/bind.hpp:1174
boost::_bi::rrlist3::a1_
A1 & a1_
Definition: bind/bind.hpp:943
boost::_bi::list_av_8::B6
add_value< A6 >::type B6
Definition: bind/bind.hpp:1724
boost::_bi::rrlist5::a4_
A4 & a4_
Definition: bind/bind.hpp:1027
boost::_bi::list0::operator()
void operator()(type< void >, F &f, A &, int)
Definition: bind/bind.hpp:196
boost::_bi::storage7
Definition: storage.hpp:321
boost::_bi::list_av_9::B5
add_value< A5 >::type B5
Definition: bind/bind.hpp:1736
boost::_bi::rrlist6
Definition: bind/bind.hpp:1065
boost::_bi::list9::operator()
void operator()(type< void >, F &f, A &a, int)
Definition: bind/bind.hpp:831
boost::_bi::rrlist6::rrlist6
rrlist6(A1 &a1, A2 &a2, A3 &a3, A4 &a4, A5 &a5, A6 &a6)
Definition: bind/bind.hpp:1078
type.hpp
arg
Definition: arg_fwd.hpp:23
boost::_bi::dm_result
Definition: bind/bind.hpp:2284
boost::_bi::rrlist7::a3_
A3 & a3_
Definition: bind/bind.hpp:1119
boost::_bi::storage5::a5_
A5 a5_
Definition: storage.hpp:235
boost::_bi::list9::accept
void accept(V &v) const
Definition: bind/bind.hpp:841
boost::_bi::storage6::a6_
A6 a6_
Definition: storage.hpp:284
boost::_bi::list4::base_type
storage4< A1, A2, A3, A4 > base_type
Definition: bind/bind.hpp:425
boost::_bi::list6::operator()
R operator()(type< R >, F const &f, A &a, long) const
Definition: bind/bind.hpp:595
boost::_bi::list3::list3
list3(A1 a1, A2 a2, A3 a3)
Definition: bind/bind.hpp:366
boost::_bi::rrlist4::a4_
A4 & a4_
Definition: bind/bind.hpp:985
boost::_bi::list7::operator[]
A1 operator[](boost::arg< 1 >) const
Definition: bind/bind.hpp:638
boost::_bi::add_value_2
Definition: bind/bind.hpp:1571
boost::_bi::list0::list0
list0()
Definition: bind/bind.hpp:174
boost::_bi::list0::accept
void accept(V &) const
Definition: bind/bind.hpp:206
boost::_bi::list_av_8::B7
add_value< A7 >::type B7
Definition: bind/bind.hpp:1725
boost::_bi::list5::accept
void accept(V &v) const
Definition: bind/bind.hpp:539
boost::_bi::list_av_9::B2
add_value< A2 >::type B2
Definition: bind/bind.hpp:1733
boost::_bi::rrlist4::a1_
A1 & a1_
Definition: bind/bind.hpp:982
boost::_bi::rrlist9::a9_
A9 & a9_
Definition: bind/bind.hpp:1230
boost::_bi::bind_t::operator()
result_type operator()(A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4)
Definition: bind/bind.hpp:1339
boost::visit_each
void visit_each(Visitor &visitor, const T &t, long)
Definition: visit_each.hpp:15
boost::_bi::rrlist5::a5_
A5 & a5_
Definition: bind/bind.hpp:1028
boost::_bi::storage2
Definition: storage.hpp:76
bind_template.hpp
boost::_bi::rrlist9
Definition: bind/bind.hpp:1218
boost::_bi::storage7::accept
void accept(V &v) const
Definition: storage.hpp:327
boost::_bi::bind_t::operator()
result_type operator()(A1 &&a1)
Definition: bind/bind.hpp:1303
boost::_bi::isref< R & >::value_type
value_type
Definition: bind/bind.hpp:2276
boost::_bi::list2
Definition: bind/bind.hpp:281
boost::_bi::add_value< reference_wrapper< T > >::type
reference_wrapper< T > type
Definition: bind/bind.hpp:1595
boost::_bi::list7::base_type
storage7< A1, A2, A3, A4, A5, A6, A7 > base_type
Definition: bind/bind.hpp:632
boost::_bi::rrlist6::a4_
A4 & a4_
Definition: bind/bind.hpp:1072
boost::_bi::storage7::a7_
A7 a7_
Definition: storage.hpp:333
boost::_bi::rrlist6::operator[]
A1 && operator[](boost::arg< 1 >) const
Definition: bind/bind.hpp:1080
boost::_bi::storage2::a2_
A2 a2_
Definition: storage.hpp:88
boost::_bi::value::operator==
bool operator==(value const &rhs) const
Definition: bind/bind.hpp:127
boost::_bi::list2::operator()
void operator()(type< void >, F &f, A &a, int)
Definition: bind/bind.hpp:317
boost::_bi::rrlist1::operator[]
A1 && operator[](boost::arg< 1 >) const
Definition: bind/bind.hpp:880
boost::_bi::list_av_8::B2
add_value< A2 >::type B2
Definition: bind/bind.hpp:1720
boost::_bi::list_av_3
Definition: bind/bind.hpp:1667
boost::_bi::rrlist8::operator[]
A1 && operator[](boost::arg< 1 >) const
Definition: bind/bind.hpp:1181
boost::_bi::rrlist9::rrlist9
rrlist9(A1 &a1, A2 &a2, A3 &a3, A4 &a4, A5 &a5, A6 &a6, A7 &a7, A8 &a8, A9 &a9)
Definition: bind/bind.hpp:1234
boost::_bi::bind_t::operator()
result_type operator()(A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6, A7 &&a7, A8 &&a8)
Definition: bind/bind.hpp:1387
boost::_bi::function_equal
bool function_equal(bind_t< R, F, L > const &a, bind_t< R, F, L > const &b)
Definition: bind/bind.hpp:1517
boost::_bi::list_av_5::B1
add_value< A1 >::type B1
Definition: bind/bind.hpp:1686
boost::_bi::list_av_6::B5
add_value< A5 >::type B5
Definition: bind/bind.hpp:1700
boost::_bi::rrlist9::a7_
A7 & a7_
Definition: bind/bind.hpp:1228
boost::_bi::list_av_5::type
list5< B1, B2, B3, B4, B5 > type
Definition: bind/bind.hpp:1691
boost::_bi::list2::accept
void accept(V &v) const
Definition: bind/bind.hpp:347
boost::_bi::rrlist8::a6_
A6 & a6_
Definition: bind/bind.hpp:1173
boost::_bi::storage3
Definition: storage.hpp:125
boost::_bi::rrlist8::a3_
A3 & a3_
Definition: bind/bind.hpp:1170
boost::_bi::bind_t::eval
result_type eval(A &a)
Definition: bind/bind.hpp:1413
boost::_bi::rrlist6::a6_
A6 & a6_
Definition: bind/bind.hpp:1074
boost::_bi::list_av_7::B3
add_value< A3 >::type B3
Definition: bind/bind.hpp:1709
boost::_bi::list_av_7::type
list7< B1, B2, B3, B4, B5, B6, B7 > type
Definition: bind/bind.hpp:1714
boost::_bi::list9
Definition: bind/bind.hpp:781
BOOST_NESTED_TEMPLATE
#define BOOST_NESTED_TEMPLATE
Definition: suffix.hpp:437
boost::_bi::rrlist4::a3_
A3 & a3_
Definition: bind/bind.hpp:984
boost::_bi::list_av_6::B1
add_value< A1 >::type B1
Definition: bind/bind.hpp:1696
boost::_bi::value::value
value(T const &t)
Definition: bind/bind.hpp:122
boost::_bi::list2::operator()
R operator()(type< R >, F &f, A &a, long)
Definition: bind/bind.hpp:307
boost::_bi::list6::operator()
R operator()(type< R >, F &f, A &a, long)
Definition: bind/bind.hpp:590
boost::_bi::value::t_
T t_
Definition: bind/bind.hpp:134
boost::_bi::list4::accept
void accept(V &v) const
Definition: bind/bind.hpp:471
boost::_bi::list_av_5::B3
add_value< A3 >::type B3
Definition: bind/bind.hpp:1688
boost::_bi::add_cref
Definition: bind/bind.hpp:2236
boost::_bi::list4::operator[]
A1 operator[](boost::arg< 1 >) const
Definition: bind/bind.hpp:431
boost::_bi::list_av_8::B3
add_value< A3 >::type B3
Definition: bind/bind.hpp:1721
boost::_bi::list_av_9::B8
add_value< A8 >::type B8
Definition: bind/bind.hpp:1739
boost::_bi::bind_t::compare
bool compare(this_type const &rhs) const
Definition: bind/bind.hpp:1433
boost::_bi::list8::list8
list8(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
Definition: bind/bind.hpp:711
boost::_bi::unwrapper::unwrap
static F2 & unwrap(reference_wrapper< F2 > rf, int)
Definition: bind/bind.hpp:157
boost::_bi::list5::operator()
R operator()(type< R >, F &f, A &a, long)
Definition: bind/bind.hpp:519
boost::_bi::list0::operator==
bool operator==(list0 const &) const
Definition: bind/bind.hpp:210
boost::_bi::rrlist9::a3_
A3 & a3_
Definition: bind/bind.hpp:1224
boost::_bi::value
Definition: bind/bind.hpp:118
boost::_bi::bind_t::operator()
result_type operator()(A1 &&a1, A2 &&a2, A3 &&a3)
Definition: bind/bind.hpp:1327
boost::_bi::rrlist5
Definition: bind/bind.hpp:1020
boost::_bi::list9::operator()
R operator()(type< R >, F &f, A &a, long)
Definition: bind/bind.hpp:821
A6
A6
Definition: mem_fn_cc.hpp:85
boost::_bi::list3::base_type
storage3< A1, A2, A3 > base_type
Definition: bind/bind.hpp:362
boost::_bi::add_cref< M T::*, 0 >::type
M type
Definition: bind/bind.hpp:2240
boost::_bi::list_av_7
Definition: bind/bind.hpp:1705
boost::_bi::list0::operator()
void operator()(type< void >, F const &f, A &, int) const
Definition: bind/bind.hpp:201
boost::_bi::add_value_2::type
boost::arg< I > type
Definition: bind/bind.hpp:1573
boost::_bi::storage4::accept
void accept(V &v) const
Definition: storage.hpp:180
boost::_bi::add_value< bind_t< R, F, L > >::type
bind_t< R, F, L > type
Definition: bind/bind.hpp:1610
boost::_bi::rrlist3::operator[]
A1 && operator[](boost::arg< 1 >) const
Definition: bind/bind.hpp:951
arg.hpp
boost::_bi::list_av_3::B3
add_value< A3 >::type B3
Definition: bind/bind.hpp:1671
boost::_bi::bind_t::operator()
result_type operator()(A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6, A7 &&a7, A8 &&a8, A9 &&a9)
Definition: bind/bind.hpp:1399
boost::_bi::list5
Definition: bind/bind.hpp:487
boost::_bi::rrlist1::a1_
A1 & a1_
Definition: bind/bind.hpp:874
boost::_bi::list1::operator()
void operator()(type< void >, F const &f, A &a, int) const
Definition: bind/bind.hpp:262
boost::_bi::dm_result::type
add_cref< Pm, 1 >::type type
Definition: bind/bind.hpp:2286
A4
A4
Definition: mem_fn_cc.hpp:65
boost::_bi::storage1
Definition: storage.hpp:40
boost::_bi::list_av_9::B4
add_value< A4 >::type B4
Definition: bind/bind.hpp:1735
boost::_bi::rrlist8
Definition: bind/bind.hpp:1164
boost::iterators::V
V
Definition: iterator_facade.hpp:955
boost::_bi::list7::operator()
void operator()(type< void >, F const &f, A &a, int) const
Definition: bind/bind.hpp:679
boost::_bi::bind_t::operator()
result_type operator()(A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6)
Definition: bind/bind.hpp:1363
boost::_bi::list5::operator[]
A1 operator[](boost::arg< 1 >) const
Definition: bind/bind.hpp:497
boost::_bi::list6::operator()
void operator()(type< void >, F const &f, A &a, int) const
Definition: bind/bind.hpp:605
boost::_bi::list4::operator()
void operator()(type< void >, F &f, A &a, int)
Definition: bind/bind.hpp:461
boost::_bi::rrlist1::rrlist1
rrlist1(A1 &a1)
Definition: bind/bind.hpp:878
boost::_bi::list_av_2::B1
add_value< A1 >::type B1
Definition: bind/bind.hpp:1662
boost::_bi::bind_t::operator()
result_type operator()(A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6, A7 &&a7) const
Definition: bind/bind.hpp:1381
boost::_bi::list4::operator()
R operator()(type< R >, F &f, A &a, long)
Definition: bind/bind.hpp:451
mem_fn.hpp
boost::_bi::list3::accept
void accept(V &v) const
Definition: bind/bind.hpp:406
boost::_bi::list8::operator()
void operator()(type< void >, F &f, A &a, int)
Definition: bind/bind.hpp:751
boost::_bi::storage2::accept
void accept(V &v) const
Definition: storage.hpp:82
boost::_bi::rrlist5::a1_
A1 & a1_
Definition: bind/bind.hpp:1024
storage.hpp
boost::_bi::list_av_4
Definition: bind/bind.hpp:1675
boost::_bi::rrlist7::a6_
A6 & a6_
Definition: bind/bind.hpp:1122
boost::_bi::list_av_4::B4
add_value< A4 >::type B4
Definition: bind/bind.hpp:1680
boost::_bi::ref_compare
bool ref_compare(T const &a, T const &b, long)
Definition: bind/bind.hpp:87
boost::_bi::rrlist2::rrlist2
rrlist2(A1 &a1, A2 &a2)
Definition: bind/bind.hpp:912
boost::_bi::list8::operator()
R operator()(type< R >, F const &f, A &a, long) const
Definition: bind/bind.hpp:746
boost::_bi::list9::operator()
void operator()(type< void >, F const &f, A &a, int) const
Definition: bind/bind.hpp:836
boost::_bi::rrlist8::a5_
A5 & a5_
Definition: bind/bind.hpp:1172
boost::_bi::add_value< arg< I > >::type
boost::arg< I > type
Definition: bind/bind.hpp:1600
visit_each.hpp
placeholders.hpp
boost::_bi::rrlist9::a5_
A5 & a5_
Definition: bind/bind.hpp:1226
boost::_bi::list_av_8::B1
add_value< A1 >::type B1
Definition: bind/bind.hpp:1719
boost::_bi::bind_t::result_type
result_traits< R, F >::type result_type
Definition: bind/bind.hpp:1284
boost::_bi::bind_t::operator()
result_type operator()(A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6) const
Definition: bind/bind.hpp:1369
boost::_bi::rrlist6::a5_
A5 & a5_
Definition: bind/bind.hpp:1073
boost::_bi::rrlist8::a8_
A8 & a8_
Definition: bind/bind.hpp:1175
A2
A2
Definition: mem_fn_cc.hpp:45
boost::_bi::logical_not::operator()
bool operator()(V const &v) const
Definition: bind/bind.hpp:1748
boost::_bi::list3::operator[]
A1 operator[](boost::arg< 1 >) const
Definition: bind/bind.hpp:368
boost::_bi::logical_not
Definition: bind/bind.hpp:1746
boost::_bi::add_value::type
add_value_2< T, boost::is_placeholder< T >::value >::type type
Definition: bind/bind.hpp:1583
boost::_bi::list5::operator()
void operator()(type< void >, F &f, A &a, int)
Definition: bind/bind.hpp:529
BOOST_BIND_OPERATOR
#define BOOST_BIND_OPERATOR(op, name)
Definition: bind/bind.hpp:1761
boost::_bi::rrlist2::a2_
A2 & a2_
Definition: bind/bind.hpp:908
boost::_bi::list_av_6::type
list6< B1, B2, B3, B4, B5, B6 > type
Definition: bind/bind.hpp:1702
boost::_bi::list_av_6::B4
add_value< A4 >::type B4
Definition: bind/bind.hpp:1699
boost::_bi::unwrapper
Definition: bind/bind.hpp:150
boost::_bi::list_av_8::B5
add_value< A5 >::type B5
Definition: bind/bind.hpp:1723
boost::_bi::list5::operator()
void operator()(type< void >, F const &f, A &a, int) const
Definition: bind/bind.hpp:534
boost::_bi::rrlist7::operator[]
A1 && operator[](boost::arg< 1 >) const
Definition: bind/bind.hpp:1129
boost::_bi::list4::list4
list4(A1 a1, A2 a2, A3 a3, A4 a4)
Definition: bind/bind.hpp:429
boost::_bi::bind_t::operator()
result_type operator()(A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5, A6 &&a6, A7 &&a7, A8 &&a8, A9 &&a9) const
Definition: bind/bind.hpp:1405
workaround.hpp
BOOST_BIND_VISIT_EACH
#define BOOST_BIND_VISIT_EACH
Definition: bind/bind.hpp:44
boost::_bi::storage3::a3_
A3 a3_
Definition: storage.hpp:137
boost::_bi::add_value< value< T > >::type
_bi::value< T > type
Definition: bind/bind.hpp:1590
boost::reference_wrapper
Contains a reference to an object of type T.
Definition: core/ref.hpp:59
boost::_bi::storage1::a1_
A1 a1_
Definition: storage.hpp:49
boost::_bi::bind_t::operator()
result_type operator()()
Definition: bind/bind.hpp:1291
boost::_bi::rrlist4
Definition: bind/bind.hpp:978
boost::_bi::list_av_7::B6
add_value< A6 >::type B6
Definition: bind/bind.hpp:1712
boost::_bi::list0::operator()
R operator()(type< R >, F const &f, A &, long) const
Definition: bind/bind.hpp:191
boost::is_bind_expression< _bi::bind_t< R, F, L > >::_vt
_vt
Definition: bind/bind.hpp:1860
boost::_bi::bind_t::f_
F f_
Definition: bind/bind.hpp:1279
boost::_bi::list5::base_type
storage5< A1, A2, A3, A4, A5 > base_type
Definition: bind/bind.hpp:491
boost::_mfi::dm
Definition: bind/mem_fn.hpp:314
boost::_bi::list_av_3::B1
add_value< A1 >::type B1
Definition: bind/bind.hpp:1669
boost::_bi::bind_t::operator()
result_type operator()(A1 &&a1, A2 &&a2, A3 &&a3, A4 &&a4, A5 &&a5)
Definition: bind/bind.hpp:1351
boost::_bi::storage8::accept
void accept(V &v) const
Definition: storage.hpp:376
boost::_bi::rrlist5::rrlist5
rrlist5(A1 &a1, A2 &a2, A3 &a3, A4 &a4, A5 &a5)
Definition: bind/bind.hpp:1032
boost::_bi::rrlist4::rrlist4
rrlist4(A1 &a1, A2 &a2, A3 &a3, A4 &a4)
Definition: bind/bind.hpp:989
boost::_bi::list3::operator==
bool operator==(list3 const &rhs) const
Definition: bind/bind.hpp:411
boost::_bi::rrlist6::a1_
A1 & a1_
Definition: bind/bind.hpp:1069
boost::_bi::list2::operator()
R operator()(type< R >, F const &f, A &a, long) const
Definition: bind/bind.hpp:312
boost::_bi::add_value_2< T, 0 >::type
_bi::value< T > type
Definition: bind/bind.hpp:1578
boost::_bi::bind_t::accept
void accept(V &v) const
Definition: bind/bind.hpp:1423
boost::_bi::result_traits< unspecified, F >::type
F::result_type type
Definition: bind/bind.hpp:75
boost::_bi::list_av_8
Definition: bind/bind.hpp:1717
boost::_bi::rrlist7::a2_
A2 & a2_
Definition: bind/bind.hpp:1118
boost::BOOST_BIND
_bi::bind_t< R, F, _bi::list0 > BOOST_BIND(F f)
Definition: bind/bind.hpp:1875
boost::_bi::list_av_6::B3
add_value< A3 >::type B3
Definition: bind/bind.hpp:1698
boost::_bi::isref
Definition: bind/bind.hpp:2269
boost::_bi::list_av_7::B5
add_value< A5 >::type B5
Definition: bind/bind.hpp:1711
boost::_bi::list8::operator[]
A1 operator[](boost::arg< 1 >) const
Definition: bind/bind.hpp:713
boost::_bi::list_av_2::type
list2< B1, B2 > type
Definition: bind/bind.hpp:1664
boost::_bi::rrlist2::a1_
A1 & a1_
Definition: bind/bind.hpp:907
boost::_bi::storage6
Definition: storage.hpp:272
boost::_bi::rrlist5::operator[]
A1 && operator[](boost::arg< 1 >) const
Definition: bind/bind.hpp:1034
boost::_bi::list4::operator==
bool operator==(list4 const &rhs) const
Definition: bind/bind.hpp:476
boost::_bi::rrlist5::a3_
A3 & a3_
Definition: bind/bind.hpp:1026
boost::_bi::list6
Definition: bind/bind.hpp:556
bind_mf_cc.hpp
boost::_bi::list8::accept
void accept(V &v) const
Definition: bind/bind.hpp:761
boost::_bi::list8::operator==
bool operator==(list8 const &rhs) const
Definition: bind/bind.hpp:766


sick_visionary_ros
Author(s): SICK AG TechSupport 3D Snapshot
autogenerated on Thu Feb 8 2024 03:37:16