]> git.donarmstrong.com Git - rsem.git/blob - boost/format/group.hpp
RSEM Source Codes
[rsem.git] / boost / format / group.hpp
1
2 // ----------------------------------------------------------------------------
3 // group.hpp :  encapsulates a group of manipulators along with an argument
4 // ----------------------------------------------------------------------------
5
6 //  Copyright Samuel Krempp 2003. Use, modification, and distribution are
7 //  subject to the Boost Software License, Version 1.0. (See accompanying
8 //  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
10 //  See http://www.boost.org/libs/format for library home page
11
12 // ----------------------------------------------------------------------------
13
14                       
15 // group_head : cut the last element of a group out.
16 // (is overloaded below on each type of group)
17
18 // group_last : returns the last element of a group
19 // (is overloaded below on each type of group)
20 // ----------------------------------------------------------------------------
21
22
23 #ifndef BOOST_FORMAT_GROUP_HPP
24 #define BOOST_FORMAT_GROUP_HPP
25
26 #include <boost/config.hpp>
27
28
29 namespace boost {
30 namespace io {
31
32
33 namespace detail {
34
35
36 // empty group, but useful even though.
37 struct group0 
38 {
39     group0()      {}
40 };
41
42 template <class Ch, class Tr>
43 inline
44 BOOST_IO_STD basic_ostream<Ch, Tr>&
45 operator << ( BOOST_IO_STD basic_ostream<Ch, Tr>& os,
46              const group0& )
47
48    return os; 
49 }
50
51 template <class T1>
52 struct group1
53 {
54     T1 a1_;
55     group1(T1 a1)
56       : a1_(a1)
57       {}
58 private:
59    group1& operator=(const group1&);
60 };
61
62 template <class Ch, class Tr, class T1>
63 inline
64 BOOST_IO_STD basic_ostream<Ch, Tr>&
65 operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os,
66              const group1<T1>& x)
67
68    os << x.a1_;  
69    return os; 
70 }
71
72
73
74
75 template <class T1,class T2>
76 struct group2
77 {
78     T1 a1_;
79     T2 a2_;
80     group2(T1 a1,T2 a2)
81       : a1_(a1),a2_(a2)
82       {}
83 private:
84    group2& operator=(const group2&);
85 };
86
87 template <class Ch, class Tr, class T1,class T2>
88 inline
89 BOOST_IO_STD basic_ostream<Ch, Tr>&
90 operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os,
91              const group2<T1,T2>& x)
92
93    os << x.a1_<< x.a2_;  
94    return os; 
95 }
96
97 template <class T1,class T2,class T3>
98 struct group3
99 {
100     T1 a1_;
101     T2 a2_;
102     T3 a3_;
103     group3(T1 a1,T2 a2,T3 a3)
104       : a1_(a1),a2_(a2),a3_(a3)
105       {}
106 private:
107    group3& operator=(const group3&);
108 };
109
110 template <class Ch, class Tr, class T1,class T2,class T3>
111 inline
112 BOOST_IO_STD basic_ostream<Ch, Tr>&
113 operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os,
114              const group3<T1,T2,T3>& x)
115
116    os << x.a1_<< x.a2_<< x.a3_;  
117    return os; 
118 }
119
120 template <class T1,class T2,class T3,class T4>
121 struct group4
122 {
123     T1 a1_;
124     T2 a2_;
125     T3 a3_;
126     T4 a4_;
127     group4(T1 a1,T2 a2,T3 a3,T4 a4)
128       : a1_(a1),a2_(a2),a3_(a3),a4_(a4)
129       {}
130 private:
131    group4& operator=(const group4&);
132 };
133
134 template <class Ch, class Tr, class T1,class T2,class T3,class T4>
135 inline
136 BOOST_IO_STD basic_ostream<Ch, Tr>&
137 operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os,
138              const group4<T1,T2,T3,T4>& x)
139
140    os << x.a1_<< x.a2_<< x.a3_<< x.a4_;  
141    return os; 
142 }
143
144 template <class T1,class T2,class T3,class T4,class T5>
145 struct group5
146 {
147     T1 a1_;
148     T2 a2_;
149     T3 a3_;
150     T4 a4_;
151     T5 a5_;
152     group5(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5)
153       : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5)
154       {}
155 };
156
157 template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5>
158 inline
159 BOOST_IO_STD basic_ostream<Ch, Tr>&
160 operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os,
161              const group5<T1,T2,T3,T4,T5>& x)
162
163    os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_;  
164    return os; 
165 }
166
167 template <class T1,class T2,class T3,class T4,class T5,class T6>
168 struct group6
169 {
170     T1 a1_;
171     T2 a2_;
172     T3 a3_;
173     T4 a4_;
174     T5 a5_;
175     T6 a6_;
176     group6(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6)
177       : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5),a6_(a6)
178       {}
179 };
180
181 template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5,class T6>
182 inline
183 BOOST_IO_STD basic_ostream<Ch, Tr>&
184 operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os,
185              const group6<T1,T2,T3,T4,T5,T6>& x)
186
187    os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_<< x.a6_;  
188    return os; 
189 }
190
191 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7>
192 struct group7
193 {
194     T1 a1_;
195     T2 a2_;
196     T3 a3_;
197     T4 a4_;
198     T5 a5_;
199     T6 a6_;
200     T7 a7_;
201     group7(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7)
202       : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5),a6_(a6),a7_(a7)
203       {}
204 };
205
206 template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5,class T6,class T7>
207 inline
208 BOOST_IO_STD basic_ostream<Ch, Tr>&
209 operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os,
210              const group7<T1,T2,T3,T4,T5,T6,T7>& x)
211
212    os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_<< x.a6_<< x.a7_;  
213    return os; 
214 }
215
216 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8>
217 struct group8
218 {
219     T1 a1_;
220     T2 a2_;
221     T3 a3_;
222     T4 a4_;
223     T5 a5_;
224     T6 a6_;
225     T7 a7_;
226     T8 a8_;
227     group8(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8)
228       : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5),a6_(a6),a7_(a7),a8_(a8)
229       {}
230 };
231
232 template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8>
233 inline
234 BOOST_IO_STD basic_ostream<Ch, Tr>&
235 operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os,
236              const group8<T1,T2,T3,T4,T5,T6,T7,T8>& x)
237
238    os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_<< x.a6_<< x.a7_<< x.a8_;  
239    return os; 
240 }
241
242 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9>
243 struct group9
244 {
245     T1 a1_;
246     T2 a2_;
247     T3 a3_;
248     T4 a4_;
249     T5 a5_;
250     T6 a6_;
251     T7 a7_;
252     T8 a8_;
253     T9 a9_;
254     group9(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8,T9 a9)
255       : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5),a6_(a6),a7_(a7),a8_(a8),a9_(a9)
256       {}
257 };
258
259 template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9>
260 inline
261 BOOST_IO_STD basic_ostream<Ch, Tr>&
262 operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os,
263              const group9<T1,T2,T3,T4,T5,T6,T7,T8,T9>& x)
264
265    os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_<< x.a6_<< x.a7_<< x.a8_<< x.a9_;  
266    return os; 
267 }
268
269 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10>
270 struct group10
271 {
272     T1 a1_;
273     T2 a2_;
274     T3 a3_;
275     T4 a4_;
276     T5 a5_;
277     T6 a6_;
278     T7 a7_;
279     T8 a8_;
280     T9 a9_;
281     T10 a10_;
282     group10(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8,T9 a9,T10 a10)
283       : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5),a6_(a6),a7_(a7),a8_(a8),a9_(a9),a10_(a10)
284       {}
285 };
286
287 template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10>
288 inline
289 BOOST_IO_STD basic_ostream<Ch, Tr>&
290 operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os,
291              const group10<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10>& x)
292
293    os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_<< x.a6_<< x.a7_<< x.a8_<< x.a9_<< x.a10_;  
294    return os; 
295 }
296
297
298
299
300 template <class T1,class T2>
301 inline
302 group1<T1> 
303 group_head( group2<T1,T2> const& x)
304 {
305    return group1<T1> (x.a1_); 
306 }
307
308 template <class T1,class T2>
309 inline
310 group1<T2> 
311 group_last( group2<T1,T2> const& x)
312 {
313    return group1<T2> (x.a2_); 
314 }
315
316
317
318 template <class T1,class T2,class T3>
319 inline
320 group2<T1,T2> 
321 group_head( group3<T1,T2,T3> const& x)
322 {
323    return group2<T1,T2> (x.a1_,x.a2_); 
324 }
325
326 template <class T1,class T2,class T3>
327 inline
328 group1<T3> 
329 group_last( group3<T1,T2,T3> const& x)
330 {
331    return group1<T3> (x.a3_); 
332 }
333
334
335
336 template <class T1,class T2,class T3,class T4>
337 inline
338 group3<T1,T2,T3> 
339 group_head( group4<T1,T2,T3,T4> const& x)
340 {
341    return group3<T1,T2,T3> (x.a1_,x.a2_,x.a3_); 
342 }
343
344 template <class T1,class T2,class T3,class T4>
345 inline
346 group1<T4> 
347 group_last( group4<T1,T2,T3,T4> const& x)
348 {
349    return group1<T4> (x.a4_); 
350 }
351
352
353
354 template <class T1,class T2,class T3,class T4,class T5>
355 inline
356 group4<T1,T2,T3,T4> 
357 group_head( group5<T1,T2,T3,T4,T5> const& x)
358 {
359    return group4<T1,T2,T3,T4> (x.a1_,x.a2_,x.a3_,x.a4_); 
360 }
361
362 template <class T1,class T2,class T3,class T4,class T5>
363 inline
364 group1<T5> 
365 group_last( group5<T1,T2,T3,T4,T5> const& x)
366 {
367    return group1<T5> (x.a5_); 
368 }
369
370
371
372 template <class T1,class T2,class T3,class T4,class T5,class T6>
373 inline
374 group5<T1,T2,T3,T4,T5> 
375 group_head( group6<T1,T2,T3,T4,T5,T6> const& x)
376 {
377    return group5<T1,T2,T3,T4,T5> (x.a1_,x.a2_,x.a3_,x.a4_,x.a5_); 
378 }
379
380 template <class T1,class T2,class T3,class T4,class T5,class T6>
381 inline
382 group1<T6> 
383 group_last( group6<T1,T2,T3,T4,T5,T6> const& x)
384 {
385    return group1<T6> (x.a6_); 
386 }
387
388
389
390 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7>
391 inline
392 group6<T1,T2,T3,T4,T5,T6> 
393 group_head( group7<T1,T2,T3,T4,T5,T6,T7> const& x)
394 {
395    return group6<T1,T2,T3,T4,T5,T6> (x.a1_,x.a2_,x.a3_,x.a4_,x.a5_,x.a6_); 
396 }
397
398 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7>
399 inline
400 group1<T7> 
401 group_last( group7<T1,T2,T3,T4,T5,T6,T7> const& x)
402 {
403    return group1<T7> (x.a7_); 
404 }
405
406
407
408 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8>
409 inline
410 group7<T1,T2,T3,T4,T5,T6,T7> 
411 group_head( group8<T1,T2,T3,T4,T5,T6,T7,T8> const& x)
412 {
413    return group7<T1,T2,T3,T4,T5,T6,T7> (x.a1_,x.a2_,x.a3_,x.a4_,x.a5_,x.a6_,x.a7_); 
414 }
415
416 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8>
417 inline
418 group1<T8> 
419 group_last( group8<T1,T2,T3,T4,T5,T6,T7,T8> const& x)
420 {
421    return group1<T8> (x.a8_); 
422 }
423
424
425
426 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9>
427 inline
428 group8<T1,T2,T3,T4,T5,T6,T7,T8> 
429 group_head( group9<T1,T2,T3,T4,T5,T6,T7,T8,T9> const& x)
430 {
431    return group8<T1,T2,T3,T4,T5,T6,T7,T8> (x.a1_,x.a2_,x.a3_,x.a4_,x.a5_,x.a6_,x.a7_,x.a8_); 
432 }
433
434 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9>
435 inline
436 group1<T9> 
437 group_last( group9<T1,T2,T3,T4,T5,T6,T7,T8,T9> const& x)
438 {
439    return group1<T9> (x.a9_); 
440 }
441
442
443
444 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10>
445 inline
446 group9<T1,T2,T3,T4,T5,T6,T7,T8,T9> 
447 group_head( group10<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10> const& x)
448 {
449    return group9<T1,T2,T3,T4,T5,T6,T7,T8,T9> (x.a1_,x.a2_,x.a3_,x.a4_,x.a5_,x.a6_,x.a7_,x.a8_,x.a9_); 
450 }
451
452 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10>
453 inline
454 group1<T10> 
455 group_last( group10<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10> const& x)
456 {
457    return group1<T10> (x.a10_); 
458 }
459
460
461
462
463
464 } // namespace detail
465
466
467
468 // helper functions
469
470
471 inline detail::group1< detail::group0 >  
472 group() { return detail::group1< detail::group0 > ( detail::group0() ); }
473
474 template  <class T1, class Var> 
475 inline
476 detail::group1< detail::group2<T1, Var const&> >
477   group(T1 a1, Var const& var)
478
479    return detail::group1< detail::group2<T1, Var const&> >
480                    ( detail::group2<T1, Var const&> 
481                         (a1, var) 
482                   );
483 }
484
485 template  <class T1,class T2, class Var> 
486 inline
487 detail::group1< detail::group3<T1,T2, Var const&> >
488   group(T1 a1,T2 a2, Var const& var)
489
490    return detail::group1< detail::group3<T1,T2, Var const&> >
491                    ( detail::group3<T1,T2, Var const&> 
492                         (a1,a2, var) 
493                   );
494 }
495
496 template  <class T1,class T2,class T3, class Var> 
497 inline
498 detail::group1< detail::group4<T1,T2,T3, Var const&> >
499   group(T1 a1,T2 a2,T3 a3, Var const& var)
500
501    return detail::group1< detail::group4<T1,T2,T3, Var const&> >
502                    ( detail::group4<T1,T2,T3, Var const&> 
503                         (a1,a2,a3, var) 
504                   );
505 }
506
507 template  <class T1,class T2,class T3,class T4, class Var> 
508 inline
509 detail::group1< detail::group5<T1,T2,T3,T4, Var const&> >
510   group(T1 a1,T2 a2,T3 a3,T4 a4, Var const& var)
511
512    return detail::group1< detail::group5<T1,T2,T3,T4, Var const&> >
513                    ( detail::group5<T1,T2,T3,T4, Var const&> 
514                         (a1,a2,a3,a4, var) 
515                   );
516 }
517
518 template  <class T1,class T2,class T3,class T4,class T5, class Var> 
519 inline
520 detail::group1< detail::group6<T1,T2,T3,T4,T5, Var const&> >
521   group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5, Var const& var)
522
523    return detail::group1< detail::group6<T1,T2,T3,T4,T5, Var const&> >
524                    ( detail::group6<T1,T2,T3,T4,T5, Var const&> 
525                         (a1,a2,a3,a4,a5, var) 
526                   );
527 }
528
529 template  <class T1,class T2,class T3,class T4,class T5,class T6, class Var> 
530 inline
531 detail::group1< detail::group7<T1,T2,T3,T4,T5,T6, Var const&> >
532   group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6, Var const& var)
533
534    return detail::group1< detail::group7<T1,T2,T3,T4,T5,T6, Var const&> >
535                    ( detail::group7<T1,T2,T3,T4,T5,T6, Var const&> 
536                         (a1,a2,a3,a4,a5,a6, var) 
537                   );
538 }
539
540 template  <class T1,class T2,class T3,class T4,class T5,class T6,class T7, class Var> 
541 inline
542 detail::group1< detail::group8<T1,T2,T3,T4,T5,T6,T7, Var const&> >
543   group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7, Var const& var)
544
545    return detail::group1< detail::group8<T1,T2,T3,T4,T5,T6,T7, Var const&> >
546                    ( detail::group8<T1,T2,T3,T4,T5,T6,T7, Var const&> 
547                         (a1,a2,a3,a4,a5,a6,a7, var) 
548                   );
549 }
550
551 template  <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8, class Var> 
552 inline
553 detail::group1< detail::group9<T1,T2,T3,T4,T5,T6,T7,T8, Var const&> >
554   group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8, Var const& var)
555
556    return detail::group1< detail::group9<T1,T2,T3,T4,T5,T6,T7,T8, Var const&> >
557                    ( detail::group9<T1,T2,T3,T4,T5,T6,T7,T8, Var const&> 
558                         (a1,a2,a3,a4,a5,a6,a7,a8, var) 
559                   );
560 }
561
562 template  <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9, class Var> 
563 inline
564 detail::group1< detail::group10<T1,T2,T3,T4,T5,T6,T7,T8,T9, Var const&> >
565   group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8,T9 a9, Var const& var)
566
567    return detail::group1< detail::group10<T1,T2,T3,T4,T5,T6,T7,T8,T9, Var const&> >
568                    ( detail::group10<T1,T2,T3,T4,T5,T6,T7,T8,T9, Var const&> 
569                         (a1,a2,a3,a4,a5,a6,a7,a8,a9, var) 
570                   );
571 }
572
573
574 #ifndef BOOST_NO_OVERLOAD_FOR_NON_CONST
575
576 template  <class T1, class Var> 
577 inline
578 detail::group1< detail::group2<T1, Var&> >
579   group(T1 a1, Var& var)
580
581    return detail::group1< detail::group2<T1, Var&> >
582                    ( detail::group2<T1, Var&> 
583                         (a1, var) 
584                   );
585 }
586
587 template  <class T1,class T2, class Var> 
588 inline
589 detail::group1< detail::group3<T1,T2, Var&> >
590   group(T1 a1,T2 a2, Var& var)
591
592    return detail::group1< detail::group3<T1,T2, Var&> >
593                    ( detail::group3<T1,T2, Var&> 
594                         (a1,a2, var) 
595                   );
596 }
597
598 template  <class T1,class T2,class T3, class Var> 
599 inline
600 detail::group1< detail::group4<T1,T2,T3, Var&> >
601   group(T1 a1,T2 a2,T3 a3, Var& var)
602
603    return detail::group1< detail::group4<T1,T2,T3, Var&> >
604                    ( detail::group4<T1,T2,T3, Var&> 
605                         (a1,a2,a3, var) 
606                   );
607 }
608
609 template  <class T1,class T2,class T3,class T4, class Var> 
610 inline
611 detail::group1< detail::group5<T1,T2,T3,T4, Var&> >
612   group(T1 a1,T2 a2,T3 a3,T4 a4, Var& var)
613
614    return detail::group1< detail::group5<T1,T2,T3,T4, Var&> >
615                    ( detail::group5<T1,T2,T3,T4, Var&> 
616                         (a1,a2,a3,a4, var) 
617                   );
618 }
619
620 template  <class T1,class T2,class T3,class T4,class T5, class Var> 
621 inline
622 detail::group1< detail::group6<T1,T2,T3,T4,T5, Var&> >
623   group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5, Var& var)
624
625    return detail::group1< detail::group6<T1,T2,T3,T4,T5, Var&> >
626                    ( detail::group6<T1,T2,T3,T4,T5, Var&> 
627                         (a1,a2,a3,a4,a5, var) 
628                   );
629 }
630
631 template  <class T1,class T2,class T3,class T4,class T5,class T6, class Var> 
632 inline
633 detail::group1< detail::group7<T1,T2,T3,T4,T5,T6, Var&> >
634   group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6, Var& var)
635
636    return detail::group1< detail::group7<T1,T2,T3,T4,T5,T6, Var&> >
637                    ( detail::group7<T1,T2,T3,T4,T5,T6, Var&> 
638                         (a1,a2,a3,a4,a5,a6, var) 
639                   );
640 }
641
642 template  <class T1,class T2,class T3,class T4,class T5,class T6,class T7, class Var> 
643 inline
644 detail::group1< detail::group8<T1,T2,T3,T4,T5,T6,T7, Var&> >
645   group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7, Var& var)
646
647    return detail::group1< detail::group8<T1,T2,T3,T4,T5,T6,T7, Var&> >
648                    ( detail::group8<T1,T2,T3,T4,T5,T6,T7, Var&> 
649                         (a1,a2,a3,a4,a5,a6,a7, var) 
650                   );
651 }
652
653 template  <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8, class Var> 
654 inline
655 detail::group1< detail::group9<T1,T2,T3,T4,T5,T6,T7,T8, Var&> >
656   group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8, Var& var)
657
658    return detail::group1< detail::group9<T1,T2,T3,T4,T5,T6,T7,T8, Var&> >
659                    ( detail::group9<T1,T2,T3,T4,T5,T6,T7,T8, Var&> 
660                         (a1,a2,a3,a4,a5,a6,a7,a8, var) 
661                   );
662 }
663
664 template  <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9, class Var> 
665 inline
666 detail::group1< detail::group10<T1,T2,T3,T4,T5,T6,T7,T8,T9, Var&> >
667   group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8,T9 a9, Var& var)
668
669    return detail::group1< detail::group10<T1,T2,T3,T4,T5,T6,T7,T8,T9, Var&> >
670                    ( detail::group10<T1,T2,T3,T4,T5,T6,T7,T8,T9, Var&> 
671                         (a1,a2,a3,a4,a5,a6,a7,a8,a9, var) 
672                   );
673 }
674
675
676 #endif  // - BOOST_NO_OVERLOAD_FOR_NON_CONST
677
678
679 } // namespace io
680
681 } // namespace boost
682
683
684 #endif   // BOOST_FORMAT_GROUP_HPP