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