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
685

source code of boost/boost/format/group.hpp