Chris@16
|
1 #ifndef BOOST_BIND_STORAGE_HPP_INCLUDED
|
Chris@16
|
2 #define BOOST_BIND_STORAGE_HPP_INCLUDED
|
Chris@16
|
3
|
Chris@16
|
4 // MS compatible compilers support #pragma once
|
Chris@16
|
5
|
Chris@16
|
6 #if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
Chris@16
|
7 # pragma once
|
Chris@16
|
8 #endif
|
Chris@16
|
9
|
Chris@16
|
10 //
|
Chris@16
|
11 // bind/storage.hpp
|
Chris@16
|
12 //
|
Chris@16
|
13 // boost/bind.hpp support header, optimized storage
|
Chris@16
|
14 //
|
Chris@16
|
15 // Copyright (c) 2006 Peter Dimov
|
Chris@16
|
16 //
|
Chris@16
|
17 // Distributed under the Boost Software License, Version 1.0.
|
Chris@16
|
18 // See accompanying file LICENSE_1_0.txt or copy at
|
Chris@16
|
19 // http://www.boost.org/LICENSE_1_0.txt
|
Chris@16
|
20 //
|
Chris@16
|
21 // See http://www.boost.org/libs/bind/bind.html for documentation.
|
Chris@16
|
22 //
|
Chris@16
|
23
|
Chris@16
|
24 #include <boost/config.hpp>
|
Chris@16
|
25 #include <boost/bind/arg.hpp>
|
Chris@16
|
26
|
Chris@16
|
27 #ifdef BOOST_MSVC
|
Chris@16
|
28 # pragma warning(push)
|
Chris@16
|
29 # pragma warning(disable: 4512) // assignment operator could not be generated
|
Chris@16
|
30 #endif
|
Chris@16
|
31
|
Chris@16
|
32 namespace boost
|
Chris@16
|
33 {
|
Chris@16
|
34
|
Chris@16
|
35 namespace _bi
|
Chris@16
|
36 {
|
Chris@16
|
37
|
Chris@16
|
38 // 1
|
Chris@16
|
39
|
Chris@16
|
40 template<class A1> struct storage1
|
Chris@16
|
41 {
|
Chris@16
|
42 explicit storage1( A1 a1 ): a1_( a1 ) {}
|
Chris@16
|
43
|
Chris@16
|
44 template<class V> void accept(V & v) const
|
Chris@16
|
45 {
|
Chris@16
|
46 BOOST_BIND_VISIT_EACH(v, a1_, 0);
|
Chris@16
|
47 }
|
Chris@16
|
48
|
Chris@16
|
49 A1 a1_;
|
Chris@16
|
50 };
|
Chris@16
|
51
|
Chris@16
|
52 #if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) && !defined( __BORLANDC__ )
|
Chris@16
|
53
|
Chris@16
|
54 template<int I> struct storage1< boost::arg<I> >
|
Chris@16
|
55 {
|
Chris@16
|
56 explicit storage1( boost::arg<I> ) {}
|
Chris@16
|
57
|
Chris@16
|
58 template<class V> void accept(V &) const { }
|
Chris@16
|
59
|
Chris@16
|
60 static boost::arg<I> a1_() { return boost::arg<I>(); }
|
Chris@16
|
61 };
|
Chris@16
|
62
|
Chris@16
|
63 template<int I> struct storage1< boost::arg<I> (*) () >
|
Chris@16
|
64 {
|
Chris@16
|
65 explicit storage1( boost::arg<I> (*) () ) {}
|
Chris@16
|
66
|
Chris@16
|
67 template<class V> void accept(V &) const { }
|
Chris@16
|
68
|
Chris@16
|
69 static boost::arg<I> a1_() { return boost::arg<I>(); }
|
Chris@16
|
70 };
|
Chris@16
|
71
|
Chris@16
|
72 #endif
|
Chris@16
|
73
|
Chris@16
|
74 // 2
|
Chris@16
|
75
|
Chris@16
|
76 template<class A1, class A2> struct storage2: public storage1<A1>
|
Chris@16
|
77 {
|
Chris@16
|
78 typedef storage1<A1> inherited;
|
Chris@16
|
79
|
Chris@16
|
80 storage2( A1 a1, A2 a2 ): storage1<A1>( a1 ), a2_( a2 ) {}
|
Chris@16
|
81
|
Chris@16
|
82 template<class V> void accept(V & v) const
|
Chris@16
|
83 {
|
Chris@16
|
84 inherited::accept(v);
|
Chris@16
|
85 BOOST_BIND_VISIT_EACH(v, a2_, 0);
|
Chris@16
|
86 }
|
Chris@16
|
87
|
Chris@16
|
88 A2 a2_;
|
Chris@16
|
89 };
|
Chris@16
|
90
|
Chris@16
|
91 #if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
|
Chris@16
|
92
|
Chris@16
|
93 template<class A1, int I> struct storage2< A1, boost::arg<I> >: public storage1<A1>
|
Chris@16
|
94 {
|
Chris@16
|
95 typedef storage1<A1> inherited;
|
Chris@16
|
96
|
Chris@16
|
97 storage2( A1 a1, boost::arg<I> ): storage1<A1>( a1 ) {}
|
Chris@16
|
98
|
Chris@16
|
99 template<class V> void accept(V & v) const
|
Chris@16
|
100 {
|
Chris@16
|
101 inherited::accept(v);
|
Chris@16
|
102 }
|
Chris@16
|
103
|
Chris@16
|
104 static boost::arg<I> a2_() { return boost::arg<I>(); }
|
Chris@16
|
105 };
|
Chris@16
|
106
|
Chris@16
|
107 template<class A1, int I> struct storage2< A1, boost::arg<I> (*) () >: public storage1<A1>
|
Chris@16
|
108 {
|
Chris@16
|
109 typedef storage1<A1> inherited;
|
Chris@16
|
110
|
Chris@16
|
111 storage2( A1 a1, boost::arg<I> (*) () ): storage1<A1>( a1 ) {}
|
Chris@16
|
112
|
Chris@16
|
113 template<class V> void accept(V & v) const
|
Chris@16
|
114 {
|
Chris@16
|
115 inherited::accept(v);
|
Chris@16
|
116 }
|
Chris@16
|
117
|
Chris@16
|
118 static boost::arg<I> a2_() { return boost::arg<I>(); }
|
Chris@16
|
119 };
|
Chris@16
|
120
|
Chris@16
|
121 #endif
|
Chris@16
|
122
|
Chris@16
|
123 // 3
|
Chris@16
|
124
|
Chris@16
|
125 template<class A1, class A2, class A3> struct storage3: public storage2< A1, A2 >
|
Chris@16
|
126 {
|
Chris@16
|
127 typedef storage2<A1, A2> inherited;
|
Chris@16
|
128
|
Chris@16
|
129 storage3( A1 a1, A2 a2, A3 a3 ): storage2<A1, A2>( a1, a2 ), a3_( a3 ) {}
|
Chris@16
|
130
|
Chris@16
|
131 template<class V> void accept(V & v) const
|
Chris@16
|
132 {
|
Chris@16
|
133 inherited::accept(v);
|
Chris@16
|
134 BOOST_BIND_VISIT_EACH(v, a3_, 0);
|
Chris@16
|
135 }
|
Chris@16
|
136
|
Chris@16
|
137 A3 a3_;
|
Chris@16
|
138 };
|
Chris@16
|
139
|
Chris@16
|
140 #if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
|
Chris@16
|
141
|
Chris@16
|
142 template<class A1, class A2, int I> struct storage3< A1, A2, boost::arg<I> >: public storage2< A1, A2 >
|
Chris@16
|
143 {
|
Chris@16
|
144 typedef storage2<A1, A2> inherited;
|
Chris@16
|
145
|
Chris@16
|
146 storage3( A1 a1, A2 a2, boost::arg<I> ): storage2<A1, A2>( a1, a2 ) {}
|
Chris@16
|
147
|
Chris@16
|
148 template<class V> void accept(V & v) const
|
Chris@16
|
149 {
|
Chris@16
|
150 inherited::accept(v);
|
Chris@16
|
151 }
|
Chris@16
|
152
|
Chris@16
|
153 static boost::arg<I> a3_() { return boost::arg<I>(); }
|
Chris@16
|
154 };
|
Chris@16
|
155
|
Chris@16
|
156 template<class A1, class A2, int I> struct storage3< A1, A2, boost::arg<I> (*) () >: public storage2< A1, A2 >
|
Chris@16
|
157 {
|
Chris@16
|
158 typedef storage2<A1, A2> inherited;
|
Chris@16
|
159
|
Chris@16
|
160 storage3( A1 a1, A2 a2, boost::arg<I> (*) () ): storage2<A1, A2>( a1, a2 ) {}
|
Chris@16
|
161
|
Chris@16
|
162 template<class V> void accept(V & v) const
|
Chris@16
|
163 {
|
Chris@16
|
164 inherited::accept(v);
|
Chris@16
|
165 }
|
Chris@16
|
166
|
Chris@16
|
167 static boost::arg<I> a3_() { return boost::arg<I>(); }
|
Chris@16
|
168 };
|
Chris@16
|
169
|
Chris@16
|
170 #endif
|
Chris@16
|
171
|
Chris@16
|
172 // 4
|
Chris@16
|
173
|
Chris@16
|
174 template<class A1, class A2, class A3, class A4> struct storage4: public storage3< A1, A2, A3 >
|
Chris@16
|
175 {
|
Chris@16
|
176 typedef storage3<A1, A2, A3> inherited;
|
Chris@16
|
177
|
Chris@16
|
178 storage4( A1 a1, A2 a2, A3 a3, A4 a4 ): storage3<A1, A2, A3>( a1, a2, a3 ), a4_( a4 ) {}
|
Chris@16
|
179
|
Chris@16
|
180 template<class V> void accept(V & v) const
|
Chris@16
|
181 {
|
Chris@16
|
182 inherited::accept(v);
|
Chris@16
|
183 BOOST_BIND_VISIT_EACH(v, a4_, 0);
|
Chris@16
|
184 }
|
Chris@16
|
185
|
Chris@16
|
186 A4 a4_;
|
Chris@16
|
187 };
|
Chris@16
|
188
|
Chris@16
|
189 #if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
|
Chris@16
|
190
|
Chris@16
|
191 template<class A1, class A2, class A3, int I> struct storage4< A1, A2, A3, boost::arg<I> >: public storage3< A1, A2, A3 >
|
Chris@16
|
192 {
|
Chris@16
|
193 typedef storage3<A1, A2, A3> inherited;
|
Chris@16
|
194
|
Chris@16
|
195 storage4( A1 a1, A2 a2, A3 a3, boost::arg<I> ): storage3<A1, A2, A3>( a1, a2, a3 ) {}
|
Chris@16
|
196
|
Chris@16
|
197 template<class V> void accept(V & v) const
|
Chris@16
|
198 {
|
Chris@16
|
199 inherited::accept(v);
|
Chris@16
|
200 }
|
Chris@16
|
201
|
Chris@16
|
202 static boost::arg<I> a4_() { return boost::arg<I>(); }
|
Chris@16
|
203 };
|
Chris@16
|
204
|
Chris@16
|
205 template<class A1, class A2, class A3, int I> struct storage4< A1, A2, A3, boost::arg<I> (*) () >: public storage3< A1, A2, A3 >
|
Chris@16
|
206 {
|
Chris@16
|
207 typedef storage3<A1, A2, A3> inherited;
|
Chris@16
|
208
|
Chris@16
|
209 storage4( A1 a1, A2 a2, A3 a3, boost::arg<I> (*) () ): storage3<A1, A2, A3>( a1, a2, a3 ) {}
|
Chris@16
|
210
|
Chris@16
|
211 template<class V> void accept(V & v) const
|
Chris@16
|
212 {
|
Chris@16
|
213 inherited::accept(v);
|
Chris@16
|
214 }
|
Chris@16
|
215
|
Chris@16
|
216 static boost::arg<I> a4_() { return boost::arg<I>(); }
|
Chris@16
|
217 };
|
Chris@16
|
218
|
Chris@16
|
219 #endif
|
Chris@16
|
220
|
Chris@16
|
221 // 5
|
Chris@16
|
222
|
Chris@16
|
223 template<class A1, class A2, class A3, class A4, class A5> struct storage5: public storage4< A1, A2, A3, A4 >
|
Chris@16
|
224 {
|
Chris@16
|
225 typedef storage4<A1, A2, A3, A4> inherited;
|
Chris@16
|
226
|
Chris@16
|
227 storage5( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5 ): storage4<A1, A2, A3, A4>( a1, a2, a3, a4 ), a5_( a5 ) {}
|
Chris@16
|
228
|
Chris@16
|
229 template<class V> void accept(V & v) const
|
Chris@16
|
230 {
|
Chris@16
|
231 inherited::accept(v);
|
Chris@16
|
232 BOOST_BIND_VISIT_EACH(v, a5_, 0);
|
Chris@16
|
233 }
|
Chris@16
|
234
|
Chris@16
|
235 A5 a5_;
|
Chris@16
|
236 };
|
Chris@16
|
237
|
Chris@16
|
238 #if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
|
Chris@16
|
239
|
Chris@16
|
240 template<class A1, class A2, class A3, class A4, int I> struct storage5< A1, A2, A3, A4, boost::arg<I> >: public storage4< A1, A2, A3, A4 >
|
Chris@16
|
241 {
|
Chris@16
|
242 typedef storage4<A1, A2, A3, A4> inherited;
|
Chris@16
|
243
|
Chris@16
|
244 storage5( A1 a1, A2 a2, A3 a3, A4 a4, boost::arg<I> ): storage4<A1, A2, A3, A4>( a1, a2, a3, a4 ) {}
|
Chris@16
|
245
|
Chris@16
|
246 template<class V> void accept(V & v) const
|
Chris@16
|
247 {
|
Chris@16
|
248 inherited::accept(v);
|
Chris@16
|
249 }
|
Chris@16
|
250
|
Chris@16
|
251 static boost::arg<I> a5_() { return boost::arg<I>(); }
|
Chris@16
|
252 };
|
Chris@16
|
253
|
Chris@16
|
254 template<class A1, class A2, class A3, class A4, int I> struct storage5< A1, A2, A3, A4, boost::arg<I> (*) () >: public storage4< A1, A2, A3, A4 >
|
Chris@16
|
255 {
|
Chris@16
|
256 typedef storage4<A1, A2, A3, A4> inherited;
|
Chris@16
|
257
|
Chris@16
|
258 storage5( A1 a1, A2 a2, A3 a3, A4 a4, boost::arg<I> (*) () ): storage4<A1, A2, A3, A4>( a1, a2, a3, a4 ) {}
|
Chris@16
|
259
|
Chris@16
|
260 template<class V> void accept(V & v) const
|
Chris@16
|
261 {
|
Chris@16
|
262 inherited::accept(v);
|
Chris@16
|
263 }
|
Chris@16
|
264
|
Chris@16
|
265 static boost::arg<I> a5_() { return boost::arg<I>(); }
|
Chris@16
|
266 };
|
Chris@16
|
267
|
Chris@16
|
268 #endif
|
Chris@16
|
269
|
Chris@16
|
270 // 6
|
Chris@16
|
271
|
Chris@16
|
272 template<class A1, class A2, class A3, class A4, class A5, class A6> struct storage6: public storage5< A1, A2, A3, A4, A5 >
|
Chris@16
|
273 {
|
Chris@16
|
274 typedef storage5<A1, A2, A3, A4, A5> inherited;
|
Chris@16
|
275
|
Chris@16
|
276 storage6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6 ): storage5<A1, A2, A3, A4, A5>( a1, a2, a3, a4, a5 ), a6_( a6 ) {}
|
Chris@16
|
277
|
Chris@16
|
278 template<class V> void accept(V & v) const
|
Chris@16
|
279 {
|
Chris@16
|
280 inherited::accept(v);
|
Chris@16
|
281 BOOST_BIND_VISIT_EACH(v, a6_, 0);
|
Chris@16
|
282 }
|
Chris@16
|
283
|
Chris@16
|
284 A6 a6_;
|
Chris@16
|
285 };
|
Chris@16
|
286
|
Chris@16
|
287 #if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
|
Chris@16
|
288
|
Chris@16
|
289 template<class A1, class A2, class A3, class A4, class A5, int I> struct storage6< A1, A2, A3, A4, A5, boost::arg<I> >: public storage5< A1, A2, A3, A4, A5 >
|
Chris@16
|
290 {
|
Chris@16
|
291 typedef storage5<A1, A2, A3, A4, A5> inherited;
|
Chris@16
|
292
|
Chris@16
|
293 storage6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, boost::arg<I> ): storage5<A1, A2, A3, A4, A5>( a1, a2, a3, a4, a5 ) {}
|
Chris@16
|
294
|
Chris@16
|
295 template<class V> void accept(V & v) const
|
Chris@16
|
296 {
|
Chris@16
|
297 inherited::accept(v);
|
Chris@16
|
298 }
|
Chris@16
|
299
|
Chris@16
|
300 static boost::arg<I> a6_() { return boost::arg<I>(); }
|
Chris@16
|
301 };
|
Chris@16
|
302
|
Chris@16
|
303 template<class A1, class A2, class A3, class A4, class A5, int I> struct storage6< A1, A2, A3, A4, A5, boost::arg<I> (*) () >: public storage5< A1, A2, A3, A4, A5 >
|
Chris@16
|
304 {
|
Chris@16
|
305 typedef storage5<A1, A2, A3, A4, A5> inherited;
|
Chris@16
|
306
|
Chris@16
|
307 storage6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, boost::arg<I> (*) () ): storage5<A1, A2, A3, A4, A5>( a1, a2, a3, a4, a5 ) {}
|
Chris@16
|
308
|
Chris@16
|
309 template<class V> void accept(V & v) const
|
Chris@16
|
310 {
|
Chris@16
|
311 inherited::accept(v);
|
Chris@16
|
312 }
|
Chris@16
|
313
|
Chris@16
|
314 static boost::arg<I> a6_() { return boost::arg<I>(); }
|
Chris@16
|
315 };
|
Chris@16
|
316
|
Chris@16
|
317 #endif
|
Chris@16
|
318
|
Chris@16
|
319 // 7
|
Chris@16
|
320
|
Chris@16
|
321 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> struct storage7: public storage6< A1, A2, A3, A4, A5, A6 >
|
Chris@16
|
322 {
|
Chris@16
|
323 typedef storage6<A1, A2, A3, A4, A5, A6> inherited;
|
Chris@16
|
324
|
Chris@16
|
325 storage7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7 ): storage6<A1, A2, A3, A4, A5, A6>( a1, a2, a3, a4, a5, a6 ), a7_( a7 ) {}
|
Chris@16
|
326
|
Chris@16
|
327 template<class V> void accept(V & v) const
|
Chris@16
|
328 {
|
Chris@16
|
329 inherited::accept(v);
|
Chris@16
|
330 BOOST_BIND_VISIT_EACH(v, a7_, 0);
|
Chris@16
|
331 }
|
Chris@16
|
332
|
Chris@16
|
333 A7 a7_;
|
Chris@16
|
334 };
|
Chris@16
|
335
|
Chris@16
|
336 #if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
|
Chris@16
|
337
|
Chris@16
|
338 template<class A1, class A2, class A3, class A4, class A5, class A6, int I> struct storage7< A1, A2, A3, A4, A5, A6, boost::arg<I> >: public storage6< A1, A2, A3, A4, A5, A6 >
|
Chris@16
|
339 {
|
Chris@16
|
340 typedef storage6<A1, A2, A3, A4, A5, A6> inherited;
|
Chris@16
|
341
|
Chris@16
|
342 storage7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, boost::arg<I> ): storage6<A1, A2, A3, A4, A5, A6>( a1, a2, a3, a4, a5, a6 ) {}
|
Chris@16
|
343
|
Chris@16
|
344 template<class V> void accept(V & v) const
|
Chris@16
|
345 {
|
Chris@16
|
346 inherited::accept(v);
|
Chris@16
|
347 }
|
Chris@16
|
348
|
Chris@16
|
349 static boost::arg<I> a7_() { return boost::arg<I>(); }
|
Chris@16
|
350 };
|
Chris@16
|
351
|
Chris@16
|
352 template<class A1, class A2, class A3, class A4, class A5, class A6, int I> struct storage7< A1, A2, A3, A4, A5, A6, boost::arg<I> (*) () >: public storage6< A1, A2, A3, A4, A5, A6 >
|
Chris@16
|
353 {
|
Chris@16
|
354 typedef storage6<A1, A2, A3, A4, A5, A6> inherited;
|
Chris@16
|
355
|
Chris@16
|
356 storage7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, boost::arg<I> (*) () ): storage6<A1, A2, A3, A4, A5, A6>( a1, a2, a3, a4, a5, a6 ) {}
|
Chris@16
|
357
|
Chris@16
|
358 template<class V> void accept(V & v) const
|
Chris@16
|
359 {
|
Chris@16
|
360 inherited::accept(v);
|
Chris@16
|
361 }
|
Chris@16
|
362
|
Chris@16
|
363 static boost::arg<I> a7_() { return boost::arg<I>(); }
|
Chris@16
|
364 };
|
Chris@16
|
365
|
Chris@16
|
366 #endif
|
Chris@16
|
367
|
Chris@16
|
368 // 8
|
Chris@16
|
369
|
Chris@16
|
370 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> struct storage8: public storage7< A1, A2, A3, A4, A5, A6, A7 >
|
Chris@16
|
371 {
|
Chris@16
|
372 typedef storage7<A1, A2, A3, A4, A5, A6, A7> inherited;
|
Chris@16
|
373
|
Chris@16
|
374 storage8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8 ): storage7<A1, A2, A3, A4, A5, A6, A7>( a1, a2, a3, a4, a5, a6, a7 ), a8_( a8 ) {}
|
Chris@16
|
375
|
Chris@16
|
376 template<class V> void accept(V & v) const
|
Chris@16
|
377 {
|
Chris@16
|
378 inherited::accept(v);
|
Chris@16
|
379 BOOST_BIND_VISIT_EACH(v, a8_, 0);
|
Chris@16
|
380 }
|
Chris@16
|
381
|
Chris@16
|
382 A8 a8_;
|
Chris@16
|
383 };
|
Chris@16
|
384
|
Chris@16
|
385 #if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
|
Chris@16
|
386
|
Chris@16
|
387 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, int I> struct storage8< A1, A2, A3, A4, A5, A6, A7, boost::arg<I> >: public storage7< A1, A2, A3, A4, A5, A6, A7 >
|
Chris@16
|
388 {
|
Chris@16
|
389 typedef storage7<A1, A2, A3, A4, A5, A6, A7> inherited;
|
Chris@16
|
390
|
Chris@16
|
391 storage8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, boost::arg<I> ): storage7<A1, A2, A3, A4, A5, A6, A7>( a1, a2, a3, a4, a5, a6, a7 ) {}
|
Chris@16
|
392
|
Chris@16
|
393 template<class V> void accept(V & v) const
|
Chris@16
|
394 {
|
Chris@16
|
395 inherited::accept(v);
|
Chris@16
|
396 }
|
Chris@16
|
397
|
Chris@16
|
398 static boost::arg<I> a8_() { return boost::arg<I>(); }
|
Chris@16
|
399 };
|
Chris@16
|
400
|
Chris@16
|
401 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, int I> struct storage8< A1, A2, A3, A4, A5, A6, A7, boost::arg<I> (*) () >: public storage7< A1, A2, A3, A4, A5, A6, A7 >
|
Chris@16
|
402 {
|
Chris@16
|
403 typedef storage7<A1, A2, A3, A4, A5, A6, A7> inherited;
|
Chris@16
|
404
|
Chris@16
|
405 storage8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, boost::arg<I> (*) () ): storage7<A1, A2, A3, A4, A5, A6, A7>( a1, a2, a3, a4, a5, a6, a7 ) {}
|
Chris@16
|
406
|
Chris@16
|
407 template<class V> void accept(V & v) const
|
Chris@16
|
408 {
|
Chris@16
|
409 inherited::accept(v);
|
Chris@16
|
410 }
|
Chris@16
|
411
|
Chris@16
|
412 static boost::arg<I> a8_() { return boost::arg<I>(); }
|
Chris@16
|
413 };
|
Chris@16
|
414
|
Chris@16
|
415 #endif
|
Chris@16
|
416
|
Chris@16
|
417 // 9
|
Chris@16
|
418
|
Chris@16
|
419 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> struct storage9: public storage8< A1, A2, A3, A4, A5, A6, A7, A8 >
|
Chris@16
|
420 {
|
Chris@16
|
421 typedef storage8<A1, A2, A3, A4, A5, A6, A7, A8> inherited;
|
Chris@16
|
422
|
Chris@16
|
423 storage9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9 ): storage8<A1, A2, A3, A4, A5, A6, A7, A8>( a1, a2, a3, a4, a5, a6, a7, a8 ), a9_( a9 ) {}
|
Chris@16
|
424
|
Chris@16
|
425 template<class V> void accept(V & v) const
|
Chris@16
|
426 {
|
Chris@16
|
427 inherited::accept(v);
|
Chris@16
|
428 BOOST_BIND_VISIT_EACH(v, a9_, 0);
|
Chris@16
|
429 }
|
Chris@16
|
430
|
Chris@16
|
431 A9 a9_;
|
Chris@16
|
432 };
|
Chris@16
|
433
|
Chris@16
|
434 #if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
|
Chris@16
|
435
|
Chris@16
|
436 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, int I> struct storage9< A1, A2, A3, A4, A5, A6, A7, A8, boost::arg<I> >: public storage8< A1, A2, A3, A4, A5, A6, A7, A8 >
|
Chris@16
|
437 {
|
Chris@16
|
438 typedef storage8<A1, A2, A3, A4, A5, A6, A7, A8> inherited;
|
Chris@16
|
439
|
Chris@16
|
440 storage9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, boost::arg<I> ): storage8<A1, A2, A3, A4, A5, A6, A7, A8>( a1, a2, a3, a4, a5, a6, a7, a8 ) {}
|
Chris@16
|
441
|
Chris@16
|
442 template<class V> void accept(V & v) const
|
Chris@16
|
443 {
|
Chris@16
|
444 inherited::accept(v);
|
Chris@16
|
445 }
|
Chris@16
|
446
|
Chris@16
|
447 static boost::arg<I> a9_() { return boost::arg<I>(); }
|
Chris@16
|
448 };
|
Chris@16
|
449
|
Chris@16
|
450 template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, int I> struct storage9< A1, A2, A3, A4, A5, A6, A7, A8, boost::arg<I> (*) () >: public storage8< A1, A2, A3, A4, A5, A6, A7, A8 >
|
Chris@16
|
451 {
|
Chris@16
|
452 typedef storage8<A1, A2, A3, A4, A5, A6, A7, A8> inherited;
|
Chris@16
|
453
|
Chris@16
|
454 storage9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, boost::arg<I> (*) () ): storage8<A1, A2, A3, A4, A5, A6, A7, A8>( a1, a2, a3, a4, a5, a6, a7, a8 ) {}
|
Chris@16
|
455
|
Chris@16
|
456 template<class V> void accept(V & v) const
|
Chris@16
|
457 {
|
Chris@16
|
458 inherited::accept(v);
|
Chris@16
|
459 }
|
Chris@16
|
460
|
Chris@16
|
461 static boost::arg<I> a9_() { return boost::arg<I>(); }
|
Chris@16
|
462 };
|
Chris@16
|
463
|
Chris@16
|
464 #endif
|
Chris@16
|
465
|
Chris@16
|
466 } // namespace _bi
|
Chris@16
|
467
|
Chris@16
|
468 } // namespace boost
|
Chris@16
|
469
|
Chris@16
|
470 #ifdef BOOST_MSVC
|
Chris@16
|
471 # pragma warning(default: 4512) // assignment operator could not be generated
|
Chris@16
|
472 # pragma warning(pop)
|
Chris@16
|
473 #endif
|
Chris@16
|
474
|
Chris@16
|
475 #endif // #ifndef BOOST_BIND_STORAGE_HPP_INCLUDED
|