os/ossrv/ossrv_pub/boost_apis/boost/format/group.hpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     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