1 //
2 //  bind/bind_mf2_cc.hpp - member functions, type<> syntax
3 //
4 //  Do not include this header directly.
5 //
6 //  Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
7 //  Copyright (c) 2008 Peter Dimov
8 //
9 //  Distributed under the Boost Software License, Version 1.0.
10 //  See accompanying file LICENSE_1_0.txt or copy at
11 //  http://www.boost.org/LICENSE_1_0.txt
12 //
13 //  See http://www.boost.org/libs/bind/bind.html for documentation.
14 //
15 
16 // 0
17 
18 template<class Rt2, class R, class T,
19     class A1>
20     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf0)<R, T>, typename _bi::list_av_1<A1>::type>
BOOST_BIND(boost::type<Rt2>,R (BOOST_BIND_MF_CC T::* f)(),A1 a1)21     BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (), A1 a1)
22 {
23     typedef _mfi::BOOST_BIND_MF_NAME(mf0)<R, T> F;
24     typedef typename _bi::list_av_1<A1>::type list_type;
25     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1));
26 }
27 
28 template<class Rt2, class R, class T,
29     class A1>
30     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T>, typename _bi::list_av_1<A1>::type>
BOOST_BIND(boost::type<Rt2>,R (BOOST_BIND_MF_CC T::* f)()const,A1 a1)31     BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) () const, A1 a1)
32 {
33     typedef _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T> F;
34     typedef typename _bi::list_av_1<A1>::type list_type;
35     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1));
36 }
37 
38 // 1
39 
40 template<class Rt2, class R, class T,
41     class B1,
42     class A1, class A2>
43     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
BOOST_BIND(boost::type<Rt2>,R (BOOST_BIND_MF_CC T::* f)(B1),A1 a1,A2 a2)44     BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1), A1 a1, A2 a2)
45 {
46     typedef _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1> F;
47     typedef typename _bi::list_av_2<A1, A2>::type list_type;
48     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2));
49 }
50 
51 template<class Rt2, class R, class T,
52     class B1,
53     class A1, class A2>
54     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
BOOST_BIND(boost::type<Rt2>,R (BOOST_BIND_MF_CC T::* f)(B1)const,A1 a1,A2 a2)55     BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1) const, A1 a1, A2 a2)
56 {
57     typedef _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1> F;
58     typedef typename _bi::list_av_2<A1, A2>::type list_type;
59     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2));
60 }
61 
62 // 2
63 
64 template<class Rt2, class R, class T,
65     class B1, class B2,
66     class A1, class A2, class A3>
67     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
BOOST_BIND(boost::type<Rt2>,R (BOOST_BIND_MF_CC T::* f)(B1,B2),A1 a1,A2 a2,A3 a3)68     BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2), A1 a1, A2 a2, A3 a3)
69 {
70     typedef _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2> F;
71     typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
72     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3));
73 }
74 
75 template<class Rt2, class R, class T,
76     class B1, class B2,
77     class A1, class A2, class A3>
78     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
BOOST_BIND(boost::type<Rt2>,R (BOOST_BIND_MF_CC T::* f)(B1,B2)const,A1 a1,A2 a2,A3 a3)79     BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2) const, A1 a1, A2 a2, A3 a3)
80 {
81     typedef _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2> F;
82     typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
83     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3));
84 }
85 
86 // 3
87 
88 template<class Rt2, class R, class T,
89     class B1, class B2, class B3,
90     class A1, class A2, class A3, class A4>
91     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
BOOST_BIND(boost::type<Rt2>,R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3),A1 a1,A2 a2,A3 a3,A4 a4)92     BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3), A1 a1, A2 a2, A3 a3, A4 a4)
93 {
94     typedef _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3> F;
95     typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
96     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4));
97 }
98 
99 template<class Rt2, class R, class T,
100     class B1, class B2, class B3,
101     class A1, class A2, class A3, class A4>
102     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
BOOST_BIND(boost::type<Rt2>,R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3)const,A1 a1,A2 a2,A3 a3,A4 a4)103     BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const, A1 a1, A2 a2, A3 a3, A4 a4)
104 {
105     typedef _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3> F;
106     typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
107     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4));
108 }
109 
110 // 4
111 
112 template<class Rt2, class R, class T,
113     class B1, class B2, class B3, class B4,
114     class A1, class A2, class A3, class A4, class A5>
115     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
BOOST_BIND(boost::type<Rt2>,R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4),A1 a1,A2 a2,A3 a3,A4 a4,A5 a5)116     BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
117 {
118     typedef _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4> F;
119     typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
120     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
121 }
122 
123 template<class Rt2, class R, class T,
124     class B1, class B2, class B3, class B4,
125     class A1, class A2, class A3, class A4, class A5>
126     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
BOOST_BIND(boost::type<Rt2>,R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4)const,A1 a1,A2 a2,A3 a3,A4 a4,A5 a5)127     BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
128 {
129     typedef _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4> F;
130     typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
131     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
132 }
133 
134 // 5
135 
136 template<class Rt2, class R, class T,
137     class B1, class B2, class B3, class B4, class B5,
138     class A1, class A2, class A3, class A4, class A5, class A6>
139     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
BOOST_BIND(boost::type<Rt2>,R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5),A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6)140     BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
141 {
142     typedef _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5> F;
143     typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
144     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
145 }
146 
147 template<class Rt2, class R, class T,
148     class B1, class B2, class B3, class B4, class B5,
149     class A1, class A2, class A3, class A4, class A5, class A6>
150     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
BOOST_BIND(boost::type<Rt2>,R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5)const,A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6)151     BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
152 {
153     typedef _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5> F;
154     typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
155     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
156 }
157 
158 // 6
159 
160 template<class Rt2, class R, class T,
161     class B1, class B2, class B3, class B4, class B5, class B6,
162     class A1, class A2, class A3, class A4, class A5, class A6, class A7>
163     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
BOOST_BIND(boost::type<Rt2>,R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5,B6),A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7)164     BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
165 {
166     typedef _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6> F;
167     typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
168     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
169 }
170 
171 template<class Rt2, class R, class T,
172     class B1, class B2, class B3, class B4, class B5, class B6,
173     class A1, class A2, class A3, class A4, class A5, class A6, class A7>
174     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
BOOST_BIND(boost::type<Rt2>,R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5,B6)const,A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7)175     BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
176 {
177     typedef _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6> F;
178     typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
179     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
180 }
181 
182 // 7
183 
184 template<class Rt2, class R, class T,
185     class B1, class B2, class B3, class B4, class B5, class B6, class B7,
186     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
187     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
BOOST_BIND(boost::type<Rt2>,R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5,B6,B7),A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8)188     BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
189 {
190     typedef _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
191     typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
192     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
193 }
194 
195 template<class Rt2, class R, class T,
196     class B1, class B2, class B3, class B4, class B5, class B6, class B7,
197     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
198     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
BOOST_BIND(boost::type<Rt2>,R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5,B6,B7)const,A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8)199     BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
200 {
201     typedef _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
202     typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
203     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
204 }
205 
206 // 8
207 
208 template<class Rt2, class R, class T,
209     class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
210     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
211     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
BOOST_BIND(boost::type<Rt2>,R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5,B6,B7,B8),A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8,A9 a9)212     BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
213 {
214     typedef _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
215     typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
216     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
217 }
218 
219 template<class Rt2, class R, class T,
220     class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
221     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
222     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
BOOST_BIND(boost::type<Rt2>,R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5,B6,B7,B8)const,A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8,A9 a9)223     BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
224 {
225     typedef _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
226     typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
227     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
228 }
229