blob: f3037eceb4b89f3ffcb1acb8e8cea4a74ea60a0c [file] [log] [blame]
Jeff Thompsonef2d5a42013-08-22 19:09:24 -07001//
2// bind/bind_template.hpp
3//
4// Do not include this header directly.
5//
6// Copyright (c) 2001-2004 Peter Dimov and Multi Media Ltd.
7//
8// Distributed under the Boost Software License, Version 1.0. (See
9// accompanying file LICENSE_1_0.txt or copy at
10// http://www.boost.org/LICENSE_1_0.txt)
11//
12// See http://www.boost.org/libs/bind/bind.html for documentation.
13//
14
15 typedef typename result_traits<R, F>::type result_type;
16
17 result_type operator()()
18 {
19 list0 a;
Jeff Thompson3d613fd2013-10-15 15:39:04 -070020 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070021 }
22
23 result_type operator()() const
24 {
25 list0 a;
Jeff Thompson3d613fd2013-10-15 15:39:04 -070026 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070027 }
28
29 template<class A1> result_type operator()(A1 & a1)
30 {
31 list1<A1 &> a(a1);
Jeff Thompson3d613fd2013-10-15 15:39:04 -070032 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070033 }
34
35 template<class A1> result_type operator()(A1 & a1) const
36 {
37 list1<A1 &> a(a1);
Jeff Thompson3d613fd2013-10-15 15:39:04 -070038 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070039 }
40
Jeff Thompson3d613fd2013-10-15 15:39:04 -070041#if !defined(NDNBOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
42 && !NDNBOOST_WORKAROUND(__EDG_VERSION__, <= 238)
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070043
44 template<class A1> result_type operator()(A1 const & a1)
45 {
46 list1<A1 const &> a(a1);
Jeff Thompson3d613fd2013-10-15 15:39:04 -070047 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070048 }
49
50 template<class A1> result_type operator()(A1 const & a1) const
51 {
52 list1<A1 const &> a(a1);
Jeff Thompson3d613fd2013-10-15 15:39:04 -070053 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070054 }
55
56#endif
57
58 template<class A1, class A2> result_type operator()(A1 & a1, A2 & a2)
59 {
60 list2<A1 &, A2 &> a(a1, a2);
Jeff Thompson3d613fd2013-10-15 15:39:04 -070061 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070062 }
63
64 template<class A1, class A2> result_type operator()(A1 & a1, A2 & a2) const
65 {
66 list2<A1 &, A2 &> a(a1, a2);
Jeff Thompson3d613fd2013-10-15 15:39:04 -070067 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070068 }
69
Jeff Thompson3d613fd2013-10-15 15:39:04 -070070#if !defined(NDNBOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
71 && !NDNBOOST_WORKAROUND(__EDG_VERSION__, <= 238)
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070072
73 template<class A1, class A2> result_type operator()(A1 const & a1, A2 & a2)
74 {
75 list2<A1 const &, A2 &> a(a1, a2);
Jeff Thompson3d613fd2013-10-15 15:39:04 -070076 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070077 }
78
79 template<class A1, class A2> result_type operator()(A1 const & a1, A2 & a2) const
80 {
81 list2<A1 const &, A2 &> a(a1, a2);
Jeff Thompson3d613fd2013-10-15 15:39:04 -070082 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070083 }
84
85
86 template<class A1, class A2> result_type operator()(A1 & a1, A2 const & a2)
87 {
88 list2<A1 &, A2 const &> a(a1, a2);
Jeff Thompson3d613fd2013-10-15 15:39:04 -070089 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070090 }
91
92 template<class A1, class A2> result_type operator()(A1 & a1, A2 const & a2) const
93 {
94 list2<A1 &, A2 const &> a(a1, a2);
Jeff Thompson3d613fd2013-10-15 15:39:04 -070095 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -070096 }
97
98
99 template<class A1, class A2> result_type operator()(A1 const & a1, A2 const & a2)
100 {
101 list2<A1 const &, A2 const &> a(a1, a2);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700102 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700103 }
104
105 template<class A1, class A2> result_type operator()(A1 const & a1, A2 const & a2) const
106 {
107 list2<A1 const &, A2 const &> a(a1, a2);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700108 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700109 }
110
111#endif
112
113 template<class A1, class A2, class A3> result_type operator()(A1 & a1, A2 & a2, A3 & a3)
114 {
115 list3<A1 &, A2 &, A3 &> a(a1, a2, a3);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700116 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700117 }
118
119 template<class A1, class A2, class A3> result_type operator()(A1 & a1, A2 & a2, A3 & a3) const
120 {
121 list3<A1 &, A2 &, A3 &> a(a1, a2, a3);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700122 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700123 }
124
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700125#if !defined(NDNBOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
126 && !NDNBOOST_WORKAROUND(__EDG_VERSION__, <= 238)
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700127
128 template<class A1, class A2, class A3> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3)
129 {
130 list3<A1 const &, A2 const &, A3 const &> a(a1, a2, a3);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700131 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700132 }
133
134 template<class A1, class A2, class A3> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3) const
135 {
136 list3<A1 const &, A2 const &, A3 const &> a(a1, a2, a3);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700137 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700138 }
139
140#endif
141
142 template<class A1, class A2, class A3, class A4> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4)
143 {
144 list4<A1 &, A2 &, A3 &, A4 &> a(a1, a2, a3, a4);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700145 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700146 }
147
148 template<class A1, class A2, class A3, class A4> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4) const
149 {
150 list4<A1 &, A2 &, A3 &, A4 &> a(a1, a2, a3, a4);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700151 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700152 }
153
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700154#if !defined(NDNBOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
155 && !NDNBOOST_WORKAROUND(__EDG_VERSION__, <= 238)
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700156
157 template<class A1, class A2, class A3, class A4> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4)
158 {
159 list4<A1 const &, A2 const &, A3 const &, A4 const &> a(a1, a2, a3, a4);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700160 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700161 }
162
163 template<class A1, class A2, class A3, class A4> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4) const
164 {
165 list4<A1 const &, A2 const &, A3 const &, A4 const &> a(a1, a2, a3, a4);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700166 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700167 }
168
169#endif
170
171 template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5)
172 {
173 list5<A1 &, A2 &, A3 &, A4 &, A5 &> a(a1, a2, a3, a4, a5);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700174 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700175 }
176
177 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
178 {
179 list5<A1 &, A2 &, A3 &, A4 &, A5 &> a(a1, a2, a3, a4, a5);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700180 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700181 }
182
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700183#if !defined(NDNBOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
184 && !NDNBOOST_WORKAROUND(__EDG_VERSION__, <= 238)
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700185
186 template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5)
187 {
188 list5<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &> a(a1, a2, a3, a4, a5);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700189 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700190 }
191
192 template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5) const
193 {
194 list5<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &> a(a1, a2, a3, a4, a5);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700195 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700196 }
197
198#endif
199
200 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)
201 {
202 list6<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &> a(a1, a2, a3, a4, a5, a6);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700203 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700204 }
205
206 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
207 {
208 list6<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &> a(a1, a2, a3, a4, a5, a6);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700209 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700210 }
211
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700212#if !defined(NDNBOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
213 && !NDNBOOST_WORKAROUND(__EDG_VERSION__, <= 238)
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700214
215 template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6)
216 {
217 list6<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &> a(a1, a2, a3, a4, a5, a6);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700218 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700219 }
220
221 template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6) const
222 {
223 list6<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &> a(a1, a2, a3, a4, a5, a6);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700224 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700225 }
226
227#endif
228
229 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)
230 {
231 list7<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &> a(a1, a2, a3, a4, a5, a6, a7);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700232 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700233 }
234
235 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
236 {
237 list7<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &> a(a1, a2, a3, a4, a5, a6, a7);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700238 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700239 }
240
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700241#if !defined(NDNBOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
242 && !NDNBOOST_WORKAROUND(__EDG_VERSION__, <= 238)
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700243
244 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7)
245 {
246 list7<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &> a(a1, a2, a3, a4, a5, a6, a7);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700247 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700248 }
249
250 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7) const
251 {
252 list7<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &> a(a1, a2, a3, a4, a5, a6, a7);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700253 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700254 }
255
256#endif
257
258 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)
259 {
260 list8<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &> a(a1, a2, a3, a4, a5, a6, a7, a8);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700261 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700262 }
263
264 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
265 {
266 list8<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &> a(a1, a2, a3, a4, a5, a6, a7, a8);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700267 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700268 }
269
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700270#if !defined(NDNBOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
271 && !NDNBOOST_WORKAROUND(__EDG_VERSION__, <= 238)
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700272
273 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8)
274 {
275 list8<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &, A8 const &> a(a1, a2, a3, a4, a5, a6, a7, a8);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700276 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700277 }
278
279 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8) const
280 {
281 list8<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &, A8 const &> a(a1, a2, a3, a4, a5, a6, a7, a8);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700282 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700283 }
284
285#endif
286
287 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)
288 {
289 list9<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &, A9 &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700290 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700291 }
292
293 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
294 {
295 list9<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &, A9 &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700296 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700297 }
298
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700299#if !defined(NDNBOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
300 && !NDNBOOST_WORKAROUND(__EDG_VERSION__, <= 238)
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700301
302 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8, A9 const & a9)
303 {
304 list9<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &, A8 const &, A9 const &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700305 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700306 }
307
308 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8, A9 const & a9) const
309 {
310 list9<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &, A8 const &, A9 const &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700311 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700312 }
313
314#endif
315
316 template<class A> result_type eval(A & a)
317 {
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700318 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700319 }
320
321 template<class A> result_type eval(A & a) const
322 {
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700323 NDNBOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700324 }
325
326 template<class V> void accept(V & v) const
327 {
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700328#if !defined( NDNBOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) && !defined( __BORLANDC__ )
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700329
330 using ndnboost::visit_each;
331
332#endif
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700333 NDNBOOST_BIND_VISIT_EACH(v, f_, 0);
Jeff Thompsonef2d5a42013-08-22 19:09:24 -0700334 l_.accept(v);
335 }
336
337 bool compare(this_type const & rhs) const
338 {
339 return ref_compare(f_, rhs.f_, 0) && l_ == rhs.l_;
340 }
341
342private:
343
344 F f_;
345 L l_;