]> AND Private Git Repository - canny.git/blob - stc/exp/ml_stc_linux_make_v1.0/include/boost/bind/bind_template.hpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
d394a9bf1296d2072c108e0c89b036fb042a73ea
[canny.git] / stc / exp / ml_stc_linux_make_v1.0 / include / boost / bind / bind_template.hpp
1 //\r
2 //  bind/bind_template.hpp\r
3 //\r
4 //  Do not include this header directly.\r
5 //\r
6 //  Copyright (c) 2001-2004 Peter Dimov and Multi Media Ltd.\r
7 //\r
8 // Distributed under the Boost Software License, Version 1.0. (See\r
9 // accompanying file LICENSE_1_0.txt or copy at\r
10 // http://www.boost.org/LICENSE_1_0.txt)\r
11 //\r
12 //  See http://www.boost.org/libs/bind/bind.html for documentation.\r
13 //\r
14 \r
15     typedef typename result_traits<R, F>::type result_type;\r
16 \r
17     result_type operator()()\r
18     {\r
19         list0 a;\r
20         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
21     }\r
22 \r
23     result_type operator()() const\r
24     {\r
25         list0 a;\r
26         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
27     }\r
28 \r
29     template<class A1> result_type operator()(A1 & a1)\r
30     {\r
31         list1<A1 &> a(a1);\r
32         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
33     }\r
34 \r
35     template<class A1> result_type operator()(A1 & a1) const\r
36     {\r
37         list1<A1 &> a(a1);\r
38         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
39     }\r
40 \r
41 #if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \\r
42  && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)\r
43 \r
44     template<class A1> result_type operator()(A1 const & a1)\r
45     {\r
46         list1<A1 const &> a(a1);\r
47         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
48     }\r
49 \r
50     template<class A1> result_type operator()(A1 const & a1) const\r
51     {\r
52         list1<A1 const &> a(a1);\r
53         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
54     }\r
55 \r
56 #endif\r
57 \r
58     template<class A1, class A2> result_type operator()(A1 & a1, A2 & a2)\r
59     {\r
60         list2<A1 &, A2 &> a(a1, a2);\r
61         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
62     }\r
63 \r
64     template<class A1, class A2> result_type operator()(A1 & a1, A2 & a2) const\r
65     {\r
66         list2<A1 &, A2 &> a(a1, a2);\r
67         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
68     }\r
69 \r
70 #if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \\r
71  && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)\r
72 \r
73     template<class A1, class A2> result_type operator()(A1 const & a1, A2 & a2)\r
74     {\r
75         list2<A1 const &, A2 &> a(a1, a2);\r
76         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
77     }\r
78 \r
79     template<class A1, class A2> result_type operator()(A1 const & a1, A2 & a2) const\r
80     {\r
81         list2<A1 const &, A2 &> a(a1, a2);\r
82         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
83     }\r
84 \r
85 \r
86     template<class A1, class A2> result_type operator()(A1 & a1, A2 const & a2)\r
87     {\r
88         list2<A1 &, A2 const &> a(a1, a2);\r
89         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
90     }\r
91 \r
92     template<class A1, class A2> result_type operator()(A1 & a1, A2 const & a2) const\r
93     {\r
94         list2<A1 &, A2 const &> a(a1, a2);\r
95         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
96     }\r
97 \r
98 \r
99     template<class A1, class A2> result_type operator()(A1 const & a1, A2 const & a2)\r
100     {\r
101         list2<A1 const &, A2 const &> a(a1, a2);\r
102         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
103     }\r
104 \r
105     template<class A1, class A2> result_type operator()(A1 const & a1, A2 const & a2) const\r
106     {\r
107         list2<A1 const &, A2 const &> a(a1, a2);\r
108         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
109     }\r
110 \r
111 #endif\r
112 \r
113     template<class A1, class A2, class A3> result_type operator()(A1 & a1, A2 & a2, A3 & a3)\r
114     {\r
115         list3<A1 &, A2 &, A3 &> a(a1, a2, a3);\r
116         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
117     }\r
118 \r
119     template<class A1, class A2, class A3> result_type operator()(A1 & a1, A2 & a2, A3 & a3) const\r
120     {\r
121         list3<A1 &, A2 &, A3 &> a(a1, a2, a3);\r
122         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
123     }\r
124 \r
125 #if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \\r
126  && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)\r
127 \r
128     template<class A1, class A2, class A3> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3)\r
129     {\r
130         list3<A1 const &, A2 const &, A3 const &> a(a1, a2, a3);\r
131         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
132     }\r
133 \r
134     template<class A1, class A2, class A3> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3) const\r
135     {\r
136         list3<A1 const &, A2 const &, A3 const &> a(a1, a2, a3);\r
137         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
138     }\r
139 \r
140 #endif\r
141 \r
142     template<class A1, class A2, class A3, class A4> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4)\r
143     {\r
144         list4<A1 &, A2 &, A3 &, A4 &> a(a1, a2, a3, a4);\r
145         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
146     }\r
147 \r
148     template<class A1, class A2, class A3, class A4> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4) const\r
149     {\r
150         list4<A1 &, A2 &, A3 &, A4 &> a(a1, a2, a3, a4);\r
151         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
152     }\r
153 \r
154 #if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \\r
155  && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)\r
156 \r
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)\r
158     {\r
159         list4<A1 const &, A2 const &, A3 const &, A4 const &> a(a1, a2, a3, a4);\r
160         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
161     }\r
162 \r
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\r
164     {\r
165         list4<A1 const &, A2 const &, A3 const &, A4 const &> a(a1, a2, a3, a4);\r
166         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
167     }\r
168 \r
169 #endif\r
170 \r
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)\r
172     {\r
173         list5<A1 &, A2 &, A3 &, A4 &, A5 &> a(a1, a2, a3, a4, a5);\r
174         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
175     }\r
176 \r
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\r
178     {\r
179         list5<A1 &, A2 &, A3 &, A4 &, A5 &> a(a1, a2, a3, a4, a5);\r
180         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
181     }\r
182 \r
183 #if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \\r
184  && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)\r
185 \r
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)\r
187     {\r
188         list5<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &> a(a1, a2, a3, a4, a5);\r
189         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
190     }\r
191 \r
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\r
193     {\r
194         list5<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &> a(a1, a2, a3, a4, a5);\r
195         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
196     }\r
197 \r
198 #endif\r
199 \r
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)\r
201     {\r
202         list6<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &> a(a1, a2, a3, a4, a5, a6);\r
203         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
204     }\r
205 \r
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\r
207     {\r
208         list6<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &> a(a1, a2, a3, a4, a5, a6);\r
209         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
210     }\r
211 \r
212 #if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \\r
213  && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)\r
214 \r
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)\r
216     {\r
217         list6<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &> a(a1, a2, a3, a4, a5, a6);\r
218         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
219     }\r
220 \r
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\r
222     {\r
223         list6<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &> a(a1, a2, a3, a4, a5, a6);\r
224         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
225     }\r
226 \r
227 #endif\r
228 \r
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)\r
230     {\r
231         list7<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &> a(a1, a2, a3, a4, a5, a6, a7);\r
232         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
233     }\r
234 \r
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\r
236     {\r
237         list7<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &> a(a1, a2, a3, a4, a5, a6, a7);\r
238         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
239     }\r
240 \r
241 #if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \\r
242  && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)\r
243 \r
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)\r
245     {\r
246         list7<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &> a(a1, a2, a3, a4, a5, a6, a7);\r
247         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
248     }\r
249 \r
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\r
251     {\r
252         list7<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &> a(a1, a2, a3, a4, a5, a6, a7);\r
253         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
254     }\r
255 \r
256 #endif\r
257 \r
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)\r
259     {\r
260         list8<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &> a(a1, a2, a3, a4, a5, a6, a7, a8);\r
261         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
262     }\r
263 \r
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\r
265     {\r
266         list8<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &> a(a1, a2, a3, a4, a5, a6, a7, a8);\r
267         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
268     }\r
269 \r
270 #if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \\r
271  && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)\r
272 \r
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)\r
274     {\r
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);\r
276         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
277     }\r
278 \r
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\r
280     {\r
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);\r
282         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
283     }\r
284 \r
285 #endif\r
286 \r
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)\r
288     {\r
289         list9<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &, A9 &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);\r
290         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
291     }\r
292 \r
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\r
294     {\r
295         list9<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &, A9 &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);\r
296         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
297     }\r
298 \r
299 #if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \\r
300  && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)\r
301 \r
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)\r
303     {\r
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);\r
305         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
306     }\r
307 \r
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\r
309     {\r
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);\r
311         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
312     }\r
313 \r
314 #endif\r
315 \r
316     template<class A> result_type eval(A & a)\r
317     {\r
318         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
319     }\r
320 \r
321     template<class A> result_type eval(A & a) const\r
322     {\r
323         BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);\r
324     }\r
325 \r
326     template<class V> void accept(V & v) const\r
327     {\r
328 #if !defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) && !defined( __BORLANDC__ )\r
329 \r
330         using boost::visit_each;\r
331 \r
332 #endif\r
333         BOOST_BIND_VISIT_EACH(v, f_, 0);\r
334         l_.accept(v);\r
335     }\r
336 \r
337     bool compare(this_type const & rhs) const\r
338     {\r
339         return ref_compare(f_, rhs.f_, 0) && l_ == rhs.l_;\r
340     }\r
341 \r
342 private:\r
343 \r
344     F f_;\r
345     L l_;\r