PageRenderTime 92ms CodeModel.GetById 10ms app.highlight 76ms RepoModel.GetById 2ms app.codeStats 0ms

/Src/Dependencies/Boost/boost/format/group.hpp

http://hadesmem.googlecode.com/
C++ Header | 684 lines | 555 code | 114 blank | 15 comment | 0 complexity | e061e47bb027b3d502fba811a2f0ccc7 MD5 | raw file
  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
 29namespace boost {
 30namespace io {
 31
 32
 33namespace detail {
 34
 35
 36// empty group, but useful even though.
 37struct group0 
 38{
 39    group0()      {}
 40};
 41
 42template <class Ch, class Tr>
 43inline
 44BOOST_IO_STD basic_ostream<Ch, Tr>&
 45operator << ( BOOST_IO_STD basic_ostream<Ch, Tr>& os,
 46             const group0& )
 47{ 
 48   return os; 
 49}
 50
 51template <class T1>
 52struct group1
 53{
 54    T1 a1_;
 55    group1(T1 a1)
 56      : a1_(a1)
 57      {}
 58private:
 59   group1& operator=(const group1&);
 60};
 61
 62template <class Ch, class Tr, class T1>
 63inline
 64BOOST_IO_STD basic_ostream<Ch, Tr>&
 65operator << (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
 75template <class T1,class T2>
 76struct group2
 77{
 78    T1 a1_;
 79    T2 a2_;
 80    group2(T1 a1,T2 a2)
 81      : a1_(a1),a2_(a2)
 82      {}
 83private:
 84   group2& operator=(const group2&);
 85};
 86
 87template <class Ch, class Tr, class T1,class T2>
 88inline
 89BOOST_IO_STD basic_ostream<Ch, Tr>&
 90operator << (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
 97template <class T1,class T2,class T3>
 98struct 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      {}
106private:
107   group3& operator=(const group3&);
108};
109
110template <class Ch, class Tr, class T1,class T2,class T3>
111inline
112BOOST_IO_STD basic_ostream<Ch, Tr>&
113operator << (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
120template <class T1,class T2,class T3,class T4>
121struct 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      {}
130private:
131   group4& operator=(const group4&);
132};
133
134template <class Ch, class Tr, class T1,class T2,class T3,class T4>
135inline
136BOOST_IO_STD basic_ostream<Ch, Tr>&
137operator << (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
144template <class T1,class T2,class T3,class T4,class T5>
145struct 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
157template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5>
158inline
159BOOST_IO_STD basic_ostream<Ch, Tr>&
160operator << (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
167template <class T1,class T2,class T3,class T4,class T5,class T6>
168struct 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
181template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5,class T6>
182inline
183BOOST_IO_STD basic_ostream<Ch, Tr>&
184operator << (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
191template <class T1,class T2,class T3,class T4,class T5,class T6,class T7>
192struct 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
206template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5,class T6,class T7>
207inline
208BOOST_IO_STD basic_ostream<Ch, Tr>&
209operator << (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
216template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8>
217struct 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
232template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8>
233inline
234BOOST_IO_STD basic_ostream<Ch, Tr>&
235operator << (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
242template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9>
243struct 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
259template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9>
260inline
261BOOST_IO_STD basic_ostream<Ch, Tr>&
262operator << (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
269template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10>
270struct 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
287template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10>
288inline
289BOOST_IO_STD basic_ostream<Ch, Tr>&
290operator << (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
300template <class T1,class T2>
301inline
302group1<T1> 
303group_head( group2<T1,T2> const& x)
304{
305   return group1<T1> (x.a1_); 
306}
307
308template <class T1,class T2>
309inline
310group1<T2> 
311group_last( group2<T1,T2> const& x)
312{
313   return group1<T2> (x.a2_); 
314}
315
316
317
318template <class T1,class T2,class T3>
319inline
320group2<T1,T2> 
321group_head( group3<T1,T2,T3> const& x)
322{
323   return group2<T1,T2> (x.a1_,x.a2_); 
324}
325
326template <class T1,class T2,class T3>
327inline
328group1<T3> 
329group_last( group3<T1,T2,T3> const& x)
330{
331   return group1<T3> (x.a3_); 
332}
333
334
335
336template <class T1,class T2,class T3,class T4>
337inline
338group3<T1,T2,T3> 
339group_head( group4<T1,T2,T3,T4> const& x)
340{
341   return group3<T1,T2,T3> (x.a1_,x.a2_,x.a3_); 
342}
343
344template <class T1,class T2,class T3,class T4>
345inline
346group1<T4> 
347group_last( group4<T1,T2,T3,T4> const& x)
348{
349   return group1<T4> (x.a4_); 
350}
351
352
353
354template <class T1,class T2,class T3,class T4,class T5>
355inline
356group4<T1,T2,T3,T4> 
357group_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
362template <class T1,class T2,class T3,class T4,class T5>
363inline
364group1<T5> 
365group_last( group5<T1,T2,T3,T4,T5> const& x)
366{
367   return group1<T5> (x.a5_); 
368}
369
370
371
372template <class T1,class T2,class T3,class T4,class T5,class T6>
373inline
374group5<T1,T2,T3,T4,T5> 
375group_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
380template <class T1,class T2,class T3,class T4,class T5,class T6>
381inline
382group1<T6> 
383group_last( group6<T1,T2,T3,T4,T5,T6> const& x)
384{
385   return group1<T6> (x.a6_); 
386}
387
388
389
390template <class T1,class T2,class T3,class T4,class T5,class T6,class T7>
391inline
392group6<T1,T2,T3,T4,T5,T6> 
393group_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
398template <class T1,class T2,class T3,class T4,class T5,class T6,class T7>
399inline
400group1<T7> 
401group_last( group7<T1,T2,T3,T4,T5,T6,T7> const& x)
402{
403   return group1<T7> (x.a7_); 
404}
405
406
407
408template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8>
409inline
410group7<T1,T2,T3,T4,T5,T6,T7> 
411group_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
416template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8>
417inline
418group1<T8> 
419group_last( group8<T1,T2,T3,T4,T5,T6,T7,T8> const& x)
420{
421   return group1<T8> (x.a8_); 
422}
423
424
425
426template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9>
427inline
428group8<T1,T2,T3,T4,T5,T6,T7,T8> 
429group_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
434template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9>
435inline
436group1<T9> 
437group_last( group9<T1,T2,T3,T4,T5,T6,T7,T8,T9> const& x)
438{
439   return group1<T9> (x.a9_); 
440}
441
442
443
444template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10>
445inline
446group9<T1,T2,T3,T4,T5,T6,T7,T8,T9> 
447group_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
452template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10>
453inline
454group1<T10> 
455group_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
471inline detail::group1< detail::group0 >  
472group() { return detail::group1< detail::group0 > ( detail::group0() ); }
473
474template  <class T1, class Var> 
475inline
476detail::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
485template  <class T1,class T2, class Var> 
486inline
487detail::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
496template  <class T1,class T2,class T3, class Var> 
497inline
498detail::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
507template  <class T1,class T2,class T3,class T4, class Var> 
508inline
509detail::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
518template  <class T1,class T2,class T3,class T4,class T5, class Var> 
519inline
520detail::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
529template  <class T1,class T2,class T3,class T4,class T5,class T6, class Var> 
530inline
531detail::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
540template  <class T1,class T2,class T3,class T4,class T5,class T6,class T7, class Var> 
541inline
542detail::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
551template  <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8, class Var> 
552inline
553detail::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
562template  <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9, class Var> 
563inline
564detail::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
576template  <class T1, class Var> 
577inline
578detail::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
587template  <class T1,class T2, class Var> 
588inline
589detail::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
598template  <class T1,class T2,class T3, class Var> 
599inline
600detail::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
609template  <class T1,class T2,class T3,class T4, class Var> 
610inline
611detail::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
620template  <class T1,class T2,class T3,class T4,class T5, class Var> 
621inline
622detail::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
631template  <class T1,class T2,class T3,class T4,class T5,class T6, class Var> 
632inline
633detail::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
642template  <class T1,class T2,class T3,class T4,class T5,class T6,class T7, class Var> 
643inline
644detail::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
653template  <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8, class Var> 
654inline
655detail::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
664template  <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9, class Var> 
665inline
666detail::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