Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-30 09:35:41

0001 
0002 // ----------------------------------------------------------------------------
0003 // group.hpp :  encapsulates a group of manipulators along with an argument
0004 // ----------------------------------------------------------------------------
0005 
0006 //  Copyright Samuel Krempp 2003. Use, modification, and distribution are
0007 //  subject to the Boost Software License, Version 1.0. (See accompanying
0008 //  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0009 
0010 //  See http://www.boost.org/libs/format for library home page
0011 
0012 // ----------------------------------------------------------------------------
0013 
0014                       
0015 // group_head : cut the last element of a group out.
0016 // (is overloaded below on each type of group)
0017 
0018 // group_last : returns the last element of a group
0019 // (is overloaded below on each type of group)
0020 // ----------------------------------------------------------------------------
0021 
0022 
0023 #ifndef BOOST_FORMAT_GROUP_HPP
0024 #define BOOST_FORMAT_GROUP_HPP
0025 
0026 #include <boost/config.hpp>
0027 
0028 
0029 namespace boost {
0030 namespace io {
0031 
0032 
0033 namespace detail {
0034 
0035 
0036 // empty group, but useful even though.
0037 struct group0 
0038 {
0039     group0()      {}
0040 };
0041 
0042 template <class Ch, class Tr>
0043 inline
0044 BOOST_IO_STD basic_ostream<Ch, Tr>&
0045 operator << ( BOOST_IO_STD basic_ostream<Ch, Tr>& os,
0046              const group0& )
0047 { 
0048    return os; 
0049 }
0050 
0051 template <class T1>
0052 struct group1
0053 {
0054     T1 a1_;
0055     group1(T1 a1)
0056       : a1_(a1)
0057       {}
0058 private:
0059    group1& operator=(const group1&);
0060 };
0061 
0062 template <class Ch, class Tr, class T1>
0063 inline
0064 BOOST_IO_STD basic_ostream<Ch, Tr>&
0065 operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os,
0066              const group1<T1>& x)
0067 { 
0068    os << x.a1_;  
0069    return os; 
0070 }
0071 
0072 
0073 
0074 
0075 template <class T1,class T2>
0076 struct group2
0077 {
0078     T1 a1_;
0079     T2 a2_;
0080     group2(T1 a1,T2 a2)
0081       : a1_(a1),a2_(a2)
0082       {}
0083 private:
0084    group2& operator=(const group2&);
0085 };
0086 
0087 template <class Ch, class Tr, class T1,class T2>
0088 inline
0089 BOOST_IO_STD basic_ostream<Ch, Tr>&
0090 operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os,
0091              const group2<T1,T2>& x)
0092 { 
0093    os << x.a1_<< x.a2_;  
0094    return os; 
0095 }
0096 
0097 template <class T1,class T2,class T3>
0098 struct group3
0099 {
0100     T1 a1_;
0101     T2 a2_;
0102     T3 a3_;
0103     group3(T1 a1,T2 a2,T3 a3)
0104       : a1_(a1),a2_(a2),a3_(a3)
0105       {}
0106 private:
0107    group3& operator=(const group3&);
0108 };
0109 
0110 template <class Ch, class Tr, class T1,class T2,class T3>
0111 inline
0112 BOOST_IO_STD basic_ostream<Ch, Tr>&
0113 operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os,
0114              const group3<T1,T2,T3>& x)
0115 { 
0116    os << x.a1_<< x.a2_<< x.a3_;  
0117    return os; 
0118 }
0119 
0120 template <class T1,class T2,class T3,class T4>
0121 struct group4
0122 {
0123     T1 a1_;
0124     T2 a2_;
0125     T3 a3_;
0126     T4 a4_;
0127     group4(T1 a1,T2 a2,T3 a3,T4 a4)
0128       : a1_(a1),a2_(a2),a3_(a3),a4_(a4)
0129       {}
0130 private:
0131    group4& operator=(const group4&);
0132 };
0133 
0134 template <class Ch, class Tr, class T1,class T2,class T3,class T4>
0135 inline
0136 BOOST_IO_STD basic_ostream<Ch, Tr>&
0137 operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os,
0138              const group4<T1,T2,T3,T4>& x)
0139 { 
0140    os << x.a1_<< x.a2_<< x.a3_<< x.a4_;  
0141    return os; 
0142 }
0143 
0144 template <class T1,class T2,class T3,class T4,class T5>
0145 struct group5
0146 {
0147     T1 a1_;
0148     T2 a2_;
0149     T3 a3_;
0150     T4 a4_;
0151     T5 a5_;
0152     group5(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5)
0153       : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5)
0154       {}
0155 };
0156 
0157 template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5>
0158 inline
0159 BOOST_IO_STD basic_ostream<Ch, Tr>&
0160 operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os,
0161              const group5<T1,T2,T3,T4,T5>& x)
0162 { 
0163    os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_;  
0164    return os; 
0165 }
0166 
0167 template <class T1,class T2,class T3,class T4,class T5,class T6>
0168 struct group6
0169 {
0170     T1 a1_;
0171     T2 a2_;
0172     T3 a3_;
0173     T4 a4_;
0174     T5 a5_;
0175     T6 a6_;
0176     group6(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6)
0177       : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5),a6_(a6)
0178       {}
0179 };
0180 
0181 template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5,class T6>
0182 inline
0183 BOOST_IO_STD basic_ostream<Ch, Tr>&
0184 operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os,
0185              const group6<T1,T2,T3,T4,T5,T6>& x)
0186 { 
0187    os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_<< x.a6_;  
0188    return os; 
0189 }
0190 
0191 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7>
0192 struct group7
0193 {
0194     T1 a1_;
0195     T2 a2_;
0196     T3 a3_;
0197     T4 a4_;
0198     T5 a5_;
0199     T6 a6_;
0200     T7 a7_;
0201     group7(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7)
0202       : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5),a6_(a6),a7_(a7)
0203       {}
0204 };
0205 
0206 template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5,class T6,class T7>
0207 inline
0208 BOOST_IO_STD basic_ostream<Ch, Tr>&
0209 operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os,
0210              const group7<T1,T2,T3,T4,T5,T6,T7>& x)
0211 { 
0212    os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_<< x.a6_<< x.a7_;  
0213    return os; 
0214 }
0215 
0216 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8>
0217 struct group8
0218 {
0219     T1 a1_;
0220     T2 a2_;
0221     T3 a3_;
0222     T4 a4_;
0223     T5 a5_;
0224     T6 a6_;
0225     T7 a7_;
0226     T8 a8_;
0227     group8(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8)
0228       : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5),a6_(a6),a7_(a7),a8_(a8)
0229       {}
0230 };
0231 
0232 template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8>
0233 inline
0234 BOOST_IO_STD basic_ostream<Ch, Tr>&
0235 operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os,
0236              const group8<T1,T2,T3,T4,T5,T6,T7,T8>& x)
0237 { 
0238    os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_<< x.a6_<< x.a7_<< x.a8_;  
0239    return os; 
0240 }
0241 
0242 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9>
0243 struct group9
0244 {
0245     T1 a1_;
0246     T2 a2_;
0247     T3 a3_;
0248     T4 a4_;
0249     T5 a5_;
0250     T6 a6_;
0251     T7 a7_;
0252     T8 a8_;
0253     T9 a9_;
0254     group9(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8,T9 a9)
0255       : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5),a6_(a6),a7_(a7),a8_(a8),a9_(a9)
0256       {}
0257 };
0258 
0259 template <class Ch, class Tr, class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9>
0260 inline
0261 BOOST_IO_STD basic_ostream<Ch, Tr>&
0262 operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os,
0263              const group9<T1,T2,T3,T4,T5,T6,T7,T8,T9>& x)
0264 { 
0265    os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_<< x.a6_<< x.a7_<< x.a8_<< x.a9_;  
0266    return os; 
0267 }
0268 
0269 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10>
0270 struct group10
0271 {
0272     T1 a1_;
0273     T2 a2_;
0274     T3 a3_;
0275     T4 a4_;
0276     T5 a5_;
0277     T6 a6_;
0278     T7 a7_;
0279     T8 a8_;
0280     T9 a9_;
0281     T10 a10_;
0282     group10(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8,T9 a9,T10 a10)
0283       : a1_(a1),a2_(a2),a3_(a3),a4_(a4),a5_(a5),a6_(a6),a7_(a7),a8_(a8),a9_(a9),a10_(a10)
0284       {}
0285 };
0286 
0287 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>
0288 inline
0289 BOOST_IO_STD basic_ostream<Ch, Tr>&
0290 operator << (BOOST_IO_STD basic_ostream<Ch, Tr>& os,
0291              const group10<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10>& x)
0292 { 
0293    os << x.a1_<< x.a2_<< x.a3_<< x.a4_<< x.a5_<< x.a6_<< x.a7_<< x.a8_<< x.a9_<< x.a10_;  
0294    return os; 
0295 }
0296 
0297 
0298 
0299 
0300 template <class T1,class T2>
0301 inline
0302 group1<T1> 
0303 group_head( group2<T1,T2> const& x)
0304 {
0305    return group1<T1> (x.a1_); 
0306 }
0307 
0308 template <class T1,class T2>
0309 inline
0310 group1<T2> 
0311 group_last( group2<T1,T2> const& x)
0312 {
0313    return group1<T2> (x.a2_); 
0314 }
0315 
0316 
0317 
0318 template <class T1,class T2,class T3>
0319 inline
0320 group2<T1,T2> 
0321 group_head( group3<T1,T2,T3> const& x)
0322 {
0323    return group2<T1,T2> (x.a1_,x.a2_); 
0324 }
0325 
0326 template <class T1,class T2,class T3>
0327 inline
0328 group1<T3> 
0329 group_last( group3<T1,T2,T3> const& x)
0330 {
0331    return group1<T3> (x.a3_); 
0332 }
0333 
0334 
0335 
0336 template <class T1,class T2,class T3,class T4>
0337 inline
0338 group3<T1,T2,T3> 
0339 group_head( group4<T1,T2,T3,T4> const& x)
0340 {
0341    return group3<T1,T2,T3> (x.a1_,x.a2_,x.a3_); 
0342 }
0343 
0344 template <class T1,class T2,class T3,class T4>
0345 inline
0346 group1<T4> 
0347 group_last( group4<T1,T2,T3,T4> const& x)
0348 {
0349    return group1<T4> (x.a4_); 
0350 }
0351 
0352 
0353 
0354 template <class T1,class T2,class T3,class T4,class T5>
0355 inline
0356 group4<T1,T2,T3,T4> 
0357 group_head( group5<T1,T2,T3,T4,T5> const& x)
0358 {
0359    return group4<T1,T2,T3,T4> (x.a1_,x.a2_,x.a3_,x.a4_); 
0360 }
0361 
0362 template <class T1,class T2,class T3,class T4,class T5>
0363 inline
0364 group1<T5> 
0365 group_last( group5<T1,T2,T3,T4,T5> const& x)
0366 {
0367    return group1<T5> (x.a5_); 
0368 }
0369 
0370 
0371 
0372 template <class T1,class T2,class T3,class T4,class T5,class T6>
0373 inline
0374 group5<T1,T2,T3,T4,T5> 
0375 group_head( group6<T1,T2,T3,T4,T5,T6> const& x)
0376 {
0377    return group5<T1,T2,T3,T4,T5> (x.a1_,x.a2_,x.a3_,x.a4_,x.a5_); 
0378 }
0379 
0380 template <class T1,class T2,class T3,class T4,class T5,class T6>
0381 inline
0382 group1<T6> 
0383 group_last( group6<T1,T2,T3,T4,T5,T6> const& x)
0384 {
0385    return group1<T6> (x.a6_); 
0386 }
0387 
0388 
0389 
0390 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7>
0391 inline
0392 group6<T1,T2,T3,T4,T5,T6> 
0393 group_head( group7<T1,T2,T3,T4,T5,T6,T7> const& x)
0394 {
0395    return group6<T1,T2,T3,T4,T5,T6> (x.a1_,x.a2_,x.a3_,x.a4_,x.a5_,x.a6_); 
0396 }
0397 
0398 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7>
0399 inline
0400 group1<T7> 
0401 group_last( group7<T1,T2,T3,T4,T5,T6,T7> const& x)
0402 {
0403    return group1<T7> (x.a7_); 
0404 }
0405 
0406 
0407 
0408 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8>
0409 inline
0410 group7<T1,T2,T3,T4,T5,T6,T7> 
0411 group_head( group8<T1,T2,T3,T4,T5,T6,T7,T8> const& x)
0412 {
0413    return group7<T1,T2,T3,T4,T5,T6,T7> (x.a1_,x.a2_,x.a3_,x.a4_,x.a5_,x.a6_,x.a7_); 
0414 }
0415 
0416 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8>
0417 inline
0418 group1<T8> 
0419 group_last( group8<T1,T2,T3,T4,T5,T6,T7,T8> const& x)
0420 {
0421    return group1<T8> (x.a8_); 
0422 }
0423 
0424 
0425 
0426 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9>
0427 inline
0428 group8<T1,T2,T3,T4,T5,T6,T7,T8> 
0429 group_head( group9<T1,T2,T3,T4,T5,T6,T7,T8,T9> const& x)
0430 {
0431    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_); 
0432 }
0433 
0434 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9>
0435 inline
0436 group1<T9> 
0437 group_last( group9<T1,T2,T3,T4,T5,T6,T7,T8,T9> const& x)
0438 {
0439    return group1<T9> (x.a9_); 
0440 }
0441 
0442 
0443 
0444 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10>
0445 inline
0446 group9<T1,T2,T3,T4,T5,T6,T7,T8,T9> 
0447 group_head( group10<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10> const& x)
0448 {
0449    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_); 
0450 }
0451 
0452 template <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10>
0453 inline
0454 group1<T10> 
0455 group_last( group10<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10> const& x)
0456 {
0457    return group1<T10> (x.a10_); 
0458 }
0459 
0460 
0461 
0462 
0463 
0464 } // namespace detail
0465 
0466 
0467 
0468 // helper functions
0469 
0470 
0471 inline detail::group1< detail::group0 >  
0472 group() { return detail::group1< detail::group0 > ( detail::group0() ); }
0473 
0474 template  <class T1, class Var> 
0475 inline
0476 detail::group1< detail::group2<T1, Var const&> >
0477   group(T1 a1, Var const& var)
0478 { 
0479    return detail::group1< detail::group2<T1, Var const&> >
0480                    ( detail::group2<T1, Var const&> 
0481                         (a1, var) 
0482                   );
0483 }
0484 
0485 template  <class T1,class T2, class Var> 
0486 inline
0487 detail::group1< detail::group3<T1,T2, Var const&> >
0488   group(T1 a1,T2 a2, Var const& var)
0489 { 
0490    return detail::group1< detail::group3<T1,T2, Var const&> >
0491                    ( detail::group3<T1,T2, Var const&> 
0492                         (a1,a2, var) 
0493                   );
0494 }
0495 
0496 template  <class T1,class T2,class T3, class Var> 
0497 inline
0498 detail::group1< detail::group4<T1,T2,T3, Var const&> >
0499   group(T1 a1,T2 a2,T3 a3, Var const& var)
0500 { 
0501    return detail::group1< detail::group4<T1,T2,T3, Var const&> >
0502                    ( detail::group4<T1,T2,T3, Var const&> 
0503                         (a1,a2,a3, var) 
0504                   );
0505 }
0506 
0507 template  <class T1,class T2,class T3,class T4, class Var> 
0508 inline
0509 detail::group1< detail::group5<T1,T2,T3,T4, Var const&> >
0510   group(T1 a1,T2 a2,T3 a3,T4 a4, Var const& var)
0511 { 
0512    return detail::group1< detail::group5<T1,T2,T3,T4, Var const&> >
0513                    ( detail::group5<T1,T2,T3,T4, Var const&> 
0514                         (a1,a2,a3,a4, var) 
0515                   );
0516 }
0517 
0518 template  <class T1,class T2,class T3,class T4,class T5, class Var> 
0519 inline
0520 detail::group1< detail::group6<T1,T2,T3,T4,T5, Var const&> >
0521   group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5, Var const& var)
0522 { 
0523    return detail::group1< detail::group6<T1,T2,T3,T4,T5, Var const&> >
0524                    ( detail::group6<T1,T2,T3,T4,T5, Var const&> 
0525                         (a1,a2,a3,a4,a5, var) 
0526                   );
0527 }
0528 
0529 template  <class T1,class T2,class T3,class T4,class T5,class T6, class Var> 
0530 inline
0531 detail::group1< detail::group7<T1,T2,T3,T4,T5,T6, Var const&> >
0532   group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6, Var const& var)
0533 { 
0534    return detail::group1< detail::group7<T1,T2,T3,T4,T5,T6, Var const&> >
0535                    ( detail::group7<T1,T2,T3,T4,T5,T6, Var const&> 
0536                         (a1,a2,a3,a4,a5,a6, var) 
0537                   );
0538 }
0539 
0540 template  <class T1,class T2,class T3,class T4,class T5,class T6,class T7, class Var> 
0541 inline
0542 detail::group1< detail::group8<T1,T2,T3,T4,T5,T6,T7, Var const&> >
0543   group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7, Var const& var)
0544 { 
0545    return detail::group1< detail::group8<T1,T2,T3,T4,T5,T6,T7, Var const&> >
0546                    ( detail::group8<T1,T2,T3,T4,T5,T6,T7, Var const&> 
0547                         (a1,a2,a3,a4,a5,a6,a7, var) 
0548                   );
0549 }
0550 
0551 template  <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8, class Var> 
0552 inline
0553 detail::group1< detail::group9<T1,T2,T3,T4,T5,T6,T7,T8, Var const&> >
0554   group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8, Var const& var)
0555 { 
0556    return detail::group1< detail::group9<T1,T2,T3,T4,T5,T6,T7,T8, Var const&> >
0557                    ( detail::group9<T1,T2,T3,T4,T5,T6,T7,T8, Var const&> 
0558                         (a1,a2,a3,a4,a5,a6,a7,a8, var) 
0559                   );
0560 }
0561 
0562 template  <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9, class Var> 
0563 inline
0564 detail::group1< detail::group10<T1,T2,T3,T4,T5,T6,T7,T8,T9, Var const&> >
0565   group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8,T9 a9, Var const& var)
0566 { 
0567    return detail::group1< detail::group10<T1,T2,T3,T4,T5,T6,T7,T8,T9, Var const&> >
0568                    ( detail::group10<T1,T2,T3,T4,T5,T6,T7,T8,T9, Var const&> 
0569                         (a1,a2,a3,a4,a5,a6,a7,a8,a9, var) 
0570                   );
0571 }
0572 
0573 
0574 #ifndef BOOST_NO_OVERLOAD_FOR_NON_CONST
0575 
0576 template  <class T1, class Var> 
0577 inline
0578 detail::group1< detail::group2<T1, Var&> >
0579   group(T1 a1, Var& var)
0580 { 
0581    return detail::group1< detail::group2<T1, Var&> >
0582                    ( detail::group2<T1, Var&> 
0583                         (a1, var) 
0584                   );
0585 }
0586 
0587 template  <class T1,class T2, class Var> 
0588 inline
0589 detail::group1< detail::group3<T1,T2, Var&> >
0590   group(T1 a1,T2 a2, Var& var)
0591 { 
0592    return detail::group1< detail::group3<T1,T2, Var&> >
0593                    ( detail::group3<T1,T2, Var&> 
0594                         (a1,a2, var) 
0595                   );
0596 }
0597 
0598 template  <class T1,class T2,class T3, class Var> 
0599 inline
0600 detail::group1< detail::group4<T1,T2,T3, Var&> >
0601   group(T1 a1,T2 a2,T3 a3, Var& var)
0602 { 
0603    return detail::group1< detail::group4<T1,T2,T3, Var&> >
0604                    ( detail::group4<T1,T2,T3, Var&> 
0605                         (a1,a2,a3, var) 
0606                   );
0607 }
0608 
0609 template  <class T1,class T2,class T3,class T4, class Var> 
0610 inline
0611 detail::group1< detail::group5<T1,T2,T3,T4, Var&> >
0612   group(T1 a1,T2 a2,T3 a3,T4 a4, Var& var)
0613 { 
0614    return detail::group1< detail::group5<T1,T2,T3,T4, Var&> >
0615                    ( detail::group5<T1,T2,T3,T4, Var&> 
0616                         (a1,a2,a3,a4, var) 
0617                   );
0618 }
0619 
0620 template  <class T1,class T2,class T3,class T4,class T5, class Var> 
0621 inline
0622 detail::group1< detail::group6<T1,T2,T3,T4,T5, Var&> >
0623   group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5, Var& var)
0624 { 
0625    return detail::group1< detail::group6<T1,T2,T3,T4,T5, Var&> >
0626                    ( detail::group6<T1,T2,T3,T4,T5, Var&> 
0627                         (a1,a2,a3,a4,a5, var) 
0628                   );
0629 }
0630 
0631 template  <class T1,class T2,class T3,class T4,class T5,class T6, class Var> 
0632 inline
0633 detail::group1< detail::group7<T1,T2,T3,T4,T5,T6, Var&> >
0634   group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6, Var& var)
0635 { 
0636    return detail::group1< detail::group7<T1,T2,T3,T4,T5,T6, Var&> >
0637                    ( detail::group7<T1,T2,T3,T4,T5,T6, Var&> 
0638                         (a1,a2,a3,a4,a5,a6, var) 
0639                   );
0640 }
0641 
0642 template  <class T1,class T2,class T3,class T4,class T5,class T6,class T7, class Var> 
0643 inline
0644 detail::group1< detail::group8<T1,T2,T3,T4,T5,T6,T7, Var&> >
0645   group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7, Var& var)
0646 { 
0647    return detail::group1< detail::group8<T1,T2,T3,T4,T5,T6,T7, Var&> >
0648                    ( detail::group8<T1,T2,T3,T4,T5,T6,T7, Var&> 
0649                         (a1,a2,a3,a4,a5,a6,a7, var) 
0650                   );
0651 }
0652 
0653 template  <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8, class Var> 
0654 inline
0655 detail::group1< detail::group9<T1,T2,T3,T4,T5,T6,T7,T8, Var&> >
0656   group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8, Var& var)
0657 { 
0658    return detail::group1< detail::group9<T1,T2,T3,T4,T5,T6,T7,T8, Var&> >
0659                    ( detail::group9<T1,T2,T3,T4,T5,T6,T7,T8, Var&> 
0660                         (a1,a2,a3,a4,a5,a6,a7,a8, var) 
0661                   );
0662 }
0663 
0664 template  <class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9, class Var> 
0665 inline
0666 detail::group1< detail::group10<T1,T2,T3,T4,T5,T6,T7,T8,T9, Var&> >
0667   group(T1 a1,T2 a2,T3 a3,T4 a4,T5 a5,T6 a6,T7 a7,T8 a8,T9 a9, Var& var)
0668 { 
0669    return detail::group1< detail::group10<T1,T2,T3,T4,T5,T6,T7,T8,T9, Var&> >
0670                    ( detail::group10<T1,T2,T3,T4,T5,T6,T7,T8,T9, Var&> 
0671                         (a1,a2,a3,a4,a5,a6,a7,a8,a9, var) 
0672                   );
0673 }
0674 
0675 
0676 #endif  // - BOOST_NO_OVERLOAD_FOR_NON_CONST
0677 
0678 
0679 } // namespace io
0680 
0681 } // namespace boost
0682 
0683 
0684 #endif   // BOOST_FORMAT_GROUP_HPP