blob: efb8b25f105ad18394957b6f59b1bee6475ae35f [file] [log] [blame]
Jeff Thompsonef2d5a42013-08-22 19:09:24 -07001//
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
18template<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>
21 BOOST_BIND(ndnboost::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
28template<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>
31 BOOST_BIND(ndnboost::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
40template<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>
44 BOOST_BIND(ndnboost::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
51template<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>
55 BOOST_BIND(ndnboost::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
64template<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>
68 BOOST_BIND(ndnboost::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
75template<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>
79 BOOST_BIND(ndnboost::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
88template<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>
92 BOOST_BIND(ndnboost::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
99template<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>
103 BOOST_BIND(ndnboost::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
112template<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>
116 BOOST_BIND(ndnboost::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
123template<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>
127 BOOST_BIND(ndnboost::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
136template<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>
140 BOOST_BIND(ndnboost::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
147template<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>
151 BOOST_BIND(ndnboost::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
160template<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>
164 BOOST_BIND(ndnboost::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
171template<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>
175 BOOST_BIND(ndnboost::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
184template<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>
188 BOOST_BIND(ndnboost::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
195template<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>
199 BOOST_BIND(ndnboost::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
208template<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>
212 BOOST_BIND(ndnboost::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
219template<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>
223 BOOST_BIND(ndnboost::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}