BDE 4.39.x Production Release
Loading...
Searching...
No Matches
bslfmt_format_args_cpp03.h
Go to the documentation of this file.
1/// @file bslfmt_format_args_cpp03.h
2///
3/// The content of this file has been pre-processed for Doxygen.
4///
5
6
7// bslfmt_format_args_cpp03.h -*-C++-*-
8
9// Automatically generated file. **DO NOT EDIT**
10
11#ifndef INCLUDED_BSLFMT_FORMAT_ARGS_CPP03
12#define INCLUDED_BSLFMT_FORMAT_ARGS_CPP03
13
14/// @defgroup bslfmt_format_args_cpp03 bslfmt_format_args_cpp03
15/// @brief Provide C++03 implementation for bslfmt_format_args.h
16/// @addtogroup bsl
17/// @{
18/// @addtogroup bslfmt
19/// @{
20/// @addtogroup bslfmt_format_args_cpp03
21/// @{
22///
23/// <h1> Outline </h1>
24/// * <a href="#bslfmt_format_args_cpp03-purpose"> Purpose</a>
25/// * <a href="#bslfmt_format_args_cpp03-classes"> Classes </a>
26/// * <a href="#bslfmt_format_args_cpp03-description"> Description </a>
27///
28/// # Purpose {#bslfmt_format_args_cpp03-purpose}
29/// Provide C++03 implementation for bslfmt_format_args.h
30///
31/// # Classes {#bslfmt_format_args_cpp03-classes}
32/// See bslfmt_format_args.h for list of classes
33///
34/// @see bslfmt_format_args
35///
36/// # Description {#bslfmt_format_args_cpp03-description}
37/// This component is the C++03 translation of a C++11 component,
38/// generated by the 'sim_cpp11_features.pl' program. If the original header
39/// contains any specially delimited regions of C++11 code, then this generated
40/// file contains the C++03 equivalent, i.e., with variadic templates expanded
41/// and rvalue-references replaced by 'bslmf::MovableRef' objects. The header
42/// code in this file is designed to be '#include'd into the original header
43/// when compiling with a C++03 compiler. If there are no specially delimited
44/// regions of C++11 code, then this header contains no code and is not
45/// '#include'd in the original header.
46///
47/// Generated on Wed Apr 9 07:21:55 2025
48/// Command line: sim_cpp11_features.pl bslfmt_format_args.h
49/// @}
50/** @} */
51/** @} */
52
53/** @addtogroup bsl
54 * @{
55 */
56/** @addtogroup bslfmt
57 * @{
58 */
59/** @addtogroup bslfmt_format_args_cpp03
60 * @{
61 */
62
63#ifdef COMPILING_BSLFMT_FORMAT_ARGS_H
64
65
66namespace bslfmt {
67
68// FORWARD DECLARATIONS
69
70template <class t_OUT, class t_CHAR>
71class basic_format_context;
72
73template <class t_CONTEXT>
74class basic_format_args;
75
76template <class t_VALUE>
77class Format_ContextOutputIteratorRef;
78
79// TYPEDEFS
80
81typedef basic_format_context<Format_ContextOutputIteratorRef<char>, char>
83
84typedef basic_format_context<Format_ContextOutputIteratorRef<wchar_t>, wchar_t>
86
87typedef basic_format_args<format_context> format_args;
88
89typedef basic_format_args<wformat_context> wformat_args;
90
91 // ======================
92 // class Format_ArgsStore
93 // ======================
94
95#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
96// {{{ BEGIN GENERATED CODE
97// Command line: sim_cpp11_features.pl bslfmt_format_args.h
98#ifndef BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT
99#define BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT 10
100#endif
101#ifndef BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A
102#define BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT
103#endif
104template <class t_CONTEXT
105#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 0
106 , class t_ARGS_0 = BSLS_COMPILERFEATURES_NILT
107#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 0
108
109#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 1
110 , class t_ARGS_1 = BSLS_COMPILERFEATURES_NILT
111#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 1
112
113#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 2
114 , class t_ARGS_2 = BSLS_COMPILERFEATURES_NILT
115#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 2
116
117#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 3
118 , class t_ARGS_3 = BSLS_COMPILERFEATURES_NILT
119#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 3
120
121#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 4
122 , class t_ARGS_4 = BSLS_COMPILERFEATURES_NILT
123#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 4
124
125#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 5
126 , class t_ARGS_5 = BSLS_COMPILERFEATURES_NILT
127#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 5
128
129#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 6
130 , class t_ARGS_6 = BSLS_COMPILERFEATURES_NILT
131#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 6
132
133#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 7
134 , class t_ARGS_7 = BSLS_COMPILERFEATURES_NILT
135#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 7
136
137#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 8
138 , class t_ARGS_8 = BSLS_COMPILERFEATURES_NILT
139#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 8
140
141#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 9
142 , class t_ARGS_9 = BSLS_COMPILERFEATURES_NILT
143#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 9
144 , class = BSLS_COMPILERFEATURES_NILT>
145class Format_ArgsStore;
146
147#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 0
148template <class t_CONTEXT>
149class Format_ArgsStore<t_CONTEXT> {
150
151 private:
153
154 template <class t_INNER_CONTEXT>
155 friend class basic_format_args;
156
157 friend class Format_ArgsUtil;
158
159
160 explicit Format_ArgsStore(
161 const bsl::array<basic_format_arg<t_CONTEXT>, 0u>& args)
163
164 explicit Format_ArgsStore(
166 bsl::array<basic_format_arg<t_CONTEXT>, 0u> > args)
168};
169#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 0
170
171#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 1
172template <class t_CONTEXT, class t_ARGS_01>
173class Format_ArgsStore<t_CONTEXT, t_ARGS_01> {
174
175 private:
177
178 template <class t_INNER_CONTEXT>
179 friend class basic_format_args;
180
181 friend class Format_ArgsUtil;
182
183
184 explicit Format_ArgsStore(
185 const bsl::array<basic_format_arg<t_CONTEXT>, 1u>& args)
187
188 explicit Format_ArgsStore(
190 bsl::array<basic_format_arg<t_CONTEXT>, 1u> > args)
192};
193#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 1
194
195#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 2
196template <class t_CONTEXT, class t_ARGS_01,
197 class t_ARGS_02>
198class Format_ArgsStore<t_CONTEXT, t_ARGS_01,
199 t_ARGS_02> {
200
201 private:
203
204 template <class t_INNER_CONTEXT>
205 friend class basic_format_args;
206
207 friend class Format_ArgsUtil;
208
209
210 explicit Format_ArgsStore(
211 const bsl::array<basic_format_arg<t_CONTEXT>, 2u>& args)
213
214 explicit Format_ArgsStore(
216 bsl::array<basic_format_arg<t_CONTEXT>, 2u> > args)
218};
219#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 2
220
221#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 3
222template <class t_CONTEXT, class t_ARGS_01,
223 class t_ARGS_02,
224 class t_ARGS_03>
225class Format_ArgsStore<t_CONTEXT, t_ARGS_01,
226 t_ARGS_02,
227 t_ARGS_03> {
228
229 private:
231
232 template <class t_INNER_CONTEXT>
233 friend class basic_format_args;
234
235 friend class Format_ArgsUtil;
236
237
238 explicit Format_ArgsStore(
239 const bsl::array<basic_format_arg<t_CONTEXT>, 3u>& args)
241
242 explicit Format_ArgsStore(
244 bsl::array<basic_format_arg<t_CONTEXT>, 3u> > args)
246};
247#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 3
248
249#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 4
250template <class t_CONTEXT, class t_ARGS_01,
251 class t_ARGS_02,
252 class t_ARGS_03,
253 class t_ARGS_04>
254class Format_ArgsStore<t_CONTEXT, t_ARGS_01,
255 t_ARGS_02,
256 t_ARGS_03,
257 t_ARGS_04> {
258
259 private:
261
262 template <class t_INNER_CONTEXT>
263 friend class basic_format_args;
264
265 friend class Format_ArgsUtil;
266
267
268 explicit Format_ArgsStore(
269 const bsl::array<basic_format_arg<t_CONTEXT>, 4u>& args)
271
272 explicit Format_ArgsStore(
274 bsl::array<basic_format_arg<t_CONTEXT>, 4u> > args)
276};
277#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 4
278
279#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 5
280template <class t_CONTEXT, class t_ARGS_01,
281 class t_ARGS_02,
282 class t_ARGS_03,
283 class t_ARGS_04,
284 class t_ARGS_05>
285class Format_ArgsStore<t_CONTEXT, t_ARGS_01,
286 t_ARGS_02,
287 t_ARGS_03,
288 t_ARGS_04,
289 t_ARGS_05> {
290
291 private:
293
294 template <class t_INNER_CONTEXT>
295 friend class basic_format_args;
296
297 friend class Format_ArgsUtil;
298
299
300 explicit Format_ArgsStore(
301 const bsl::array<basic_format_arg<t_CONTEXT>, 5u>& args)
303
304 explicit Format_ArgsStore(
306 bsl::array<basic_format_arg<t_CONTEXT>, 5u> > args)
308};
309#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 5
310
311#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 6
312template <class t_CONTEXT, class t_ARGS_01,
313 class t_ARGS_02,
314 class t_ARGS_03,
315 class t_ARGS_04,
316 class t_ARGS_05,
317 class t_ARGS_06>
318class Format_ArgsStore<t_CONTEXT, t_ARGS_01,
319 t_ARGS_02,
320 t_ARGS_03,
321 t_ARGS_04,
322 t_ARGS_05,
323 t_ARGS_06> {
324
325 private:
327
328 template <class t_INNER_CONTEXT>
329 friend class basic_format_args;
330
331 friend class Format_ArgsUtil;
332
333
334 explicit Format_ArgsStore(
335 const bsl::array<basic_format_arg<t_CONTEXT>, 6u>& args)
337
338 explicit Format_ArgsStore(
340 bsl::array<basic_format_arg<t_CONTEXT>, 6u> > args)
342};
343#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 6
344
345#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 7
346template <class t_CONTEXT, class t_ARGS_01,
347 class t_ARGS_02,
348 class t_ARGS_03,
349 class t_ARGS_04,
350 class t_ARGS_05,
351 class t_ARGS_06,
352 class t_ARGS_07>
353class Format_ArgsStore<t_CONTEXT, t_ARGS_01,
354 t_ARGS_02,
355 t_ARGS_03,
356 t_ARGS_04,
357 t_ARGS_05,
358 t_ARGS_06,
359 t_ARGS_07> {
360
361 private:
363
364 template <class t_INNER_CONTEXT>
365 friend class basic_format_args;
366
367 friend class Format_ArgsUtil;
368
369
370 explicit Format_ArgsStore(
371 const bsl::array<basic_format_arg<t_CONTEXT>, 7u>& args)
373
374 explicit Format_ArgsStore(
376 bsl::array<basic_format_arg<t_CONTEXT>, 7u> > args)
378};
379#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 7
380
381#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 8
382template <class t_CONTEXT, class t_ARGS_01,
383 class t_ARGS_02,
384 class t_ARGS_03,
385 class t_ARGS_04,
386 class t_ARGS_05,
387 class t_ARGS_06,
388 class t_ARGS_07,
389 class t_ARGS_08>
390class Format_ArgsStore<t_CONTEXT, t_ARGS_01,
391 t_ARGS_02,
392 t_ARGS_03,
393 t_ARGS_04,
394 t_ARGS_05,
395 t_ARGS_06,
396 t_ARGS_07,
397 t_ARGS_08> {
398
399 private:
401
402 template <class t_INNER_CONTEXT>
403 friend class basic_format_args;
404
405 friend class Format_ArgsUtil;
406
407
408 explicit Format_ArgsStore(
409 const bsl::array<basic_format_arg<t_CONTEXT>, 8u>& args)
411
412 explicit Format_ArgsStore(
414 bsl::array<basic_format_arg<t_CONTEXT>, 8u> > args)
416};
417#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 8
418
419#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 9
420template <class t_CONTEXT, class t_ARGS_01,
421 class t_ARGS_02,
422 class t_ARGS_03,
423 class t_ARGS_04,
424 class t_ARGS_05,
425 class t_ARGS_06,
426 class t_ARGS_07,
427 class t_ARGS_08,
428 class t_ARGS_09>
429class Format_ArgsStore<t_CONTEXT, t_ARGS_01,
430 t_ARGS_02,
431 t_ARGS_03,
432 t_ARGS_04,
433 t_ARGS_05,
434 t_ARGS_06,
435 t_ARGS_07,
436 t_ARGS_08,
437 t_ARGS_09> {
438
439 private:
441
442 template <class t_INNER_CONTEXT>
443 friend class basic_format_args;
444
445 friend class Format_ArgsUtil;
446
447
448 explicit Format_ArgsStore(
449 const bsl::array<basic_format_arg<t_CONTEXT>, 9u>& args)
451
452 explicit Format_ArgsStore(
454 bsl::array<basic_format_arg<t_CONTEXT>, 9u> > args)
456};
457#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 9
458
459#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 10
460template <class t_CONTEXT, class t_ARGS_01,
461 class t_ARGS_02,
462 class t_ARGS_03,
463 class t_ARGS_04,
464 class t_ARGS_05,
465 class t_ARGS_06,
466 class t_ARGS_07,
467 class t_ARGS_08,
468 class t_ARGS_09,
469 class t_ARGS_10>
470class Format_ArgsStore<t_CONTEXT, t_ARGS_01,
471 t_ARGS_02,
472 t_ARGS_03,
473 t_ARGS_04,
474 t_ARGS_05,
475 t_ARGS_06,
476 t_ARGS_07,
477 t_ARGS_08,
478 t_ARGS_09,
479 t_ARGS_10> {
480
481 private:
483
484 template <class t_INNER_CONTEXT>
485 friend class basic_format_args;
486
487 friend class Format_ArgsUtil;
488
489
490 explicit Format_ArgsStore(
491 const bsl::array<basic_format_arg<t_CONTEXT>, 10u>& args)
493
494 explicit Format_ArgsStore(
496 bsl::array<basic_format_arg<t_CONTEXT>, 10u> > args)
498};
499#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_A >= 10
500
501#else
502// The generated code below is a workaround for the absence of perfect
503// forwarding in some compilers.
504template <class t_CONTEXT, class... t_ARGS>
505class Format_ArgsStore {
506
507 private:
508 bsl::array<basic_format_arg<t_CONTEXT>, sizeof...(t_ARGS)> d_args;
509
510 template <class t_INNER_CONTEXT>
511 friend class basic_format_args;
512
513 friend class Format_ArgsUtil;
514
515
516 explicit Format_ArgsStore(
517 const bsl::array<basic_format_arg<t_CONTEXT>, sizeof...(t_ARGS)>& args)
519
520 explicit Format_ArgsStore(
522 bsl::array<basic_format_arg<t_CONTEXT>, sizeof...(t_ARGS)> > args)
524};
525
526// }}} END GENERATED CODE
527#endif
528
529// FREE FUNCTIONS
530
531#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
532// {{{ BEGIN GENERATED CODE
533// Command line: sim_cpp11_features.pl bslfmt_format_args.h
534#ifndef BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT
535#define BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT 10
536#endif
537#ifndef BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B
538#define BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT
539#endif
540#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 0
541Format_ArgsStore<format_context> make_format_args(
542 );
543#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 0
544
545#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 1
546template <class t_ARGS_01>
547Format_ArgsStore<format_context, t_ARGS_01> make_format_args(
548 t_ARGS_01& fmt_args_01);
549#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 1
550
551#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 2
552template <class t_ARGS_01,
553 class t_ARGS_02>
554Format_ArgsStore<format_context, t_ARGS_01,
555 t_ARGS_02> make_format_args(
556 t_ARGS_01& fmt_args_01,
557 t_ARGS_02& fmt_args_02);
558#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 2
559
560#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 3
561template <class t_ARGS_01,
562 class t_ARGS_02,
563 class t_ARGS_03>
564Format_ArgsStore<format_context, t_ARGS_01,
565 t_ARGS_02,
566 t_ARGS_03> make_format_args(
567 t_ARGS_01& fmt_args_01,
568 t_ARGS_02& fmt_args_02,
569 t_ARGS_03& fmt_args_03);
570#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 3
571
572#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 4
573template <class t_ARGS_01,
574 class t_ARGS_02,
575 class t_ARGS_03,
576 class t_ARGS_04>
577Format_ArgsStore<format_context, t_ARGS_01,
578 t_ARGS_02,
579 t_ARGS_03,
580 t_ARGS_04> make_format_args(
581 t_ARGS_01& fmt_args_01,
582 t_ARGS_02& fmt_args_02,
583 t_ARGS_03& fmt_args_03,
584 t_ARGS_04& fmt_args_04);
585#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 4
586
587#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 5
588template <class t_ARGS_01,
589 class t_ARGS_02,
590 class t_ARGS_03,
591 class t_ARGS_04,
592 class t_ARGS_05>
593Format_ArgsStore<format_context, t_ARGS_01,
594 t_ARGS_02,
595 t_ARGS_03,
596 t_ARGS_04,
597 t_ARGS_05> make_format_args(
598 t_ARGS_01& fmt_args_01,
599 t_ARGS_02& fmt_args_02,
600 t_ARGS_03& fmt_args_03,
601 t_ARGS_04& fmt_args_04,
602 t_ARGS_05& fmt_args_05);
603#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 5
604
605#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 6
606template <class t_ARGS_01,
607 class t_ARGS_02,
608 class t_ARGS_03,
609 class t_ARGS_04,
610 class t_ARGS_05,
611 class t_ARGS_06>
612Format_ArgsStore<format_context, t_ARGS_01,
613 t_ARGS_02,
614 t_ARGS_03,
615 t_ARGS_04,
616 t_ARGS_05,
617 t_ARGS_06> make_format_args(
618 t_ARGS_01& fmt_args_01,
619 t_ARGS_02& fmt_args_02,
620 t_ARGS_03& fmt_args_03,
621 t_ARGS_04& fmt_args_04,
622 t_ARGS_05& fmt_args_05,
623 t_ARGS_06& fmt_args_06);
624#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 6
625
626#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 7
627template <class t_ARGS_01,
628 class t_ARGS_02,
629 class t_ARGS_03,
630 class t_ARGS_04,
631 class t_ARGS_05,
632 class t_ARGS_06,
633 class t_ARGS_07>
634Format_ArgsStore<format_context, t_ARGS_01,
635 t_ARGS_02,
636 t_ARGS_03,
637 t_ARGS_04,
638 t_ARGS_05,
639 t_ARGS_06,
640 t_ARGS_07> make_format_args(
641 t_ARGS_01& fmt_args_01,
642 t_ARGS_02& fmt_args_02,
643 t_ARGS_03& fmt_args_03,
644 t_ARGS_04& fmt_args_04,
645 t_ARGS_05& fmt_args_05,
646 t_ARGS_06& fmt_args_06,
647 t_ARGS_07& fmt_args_07);
648#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 7
649
650#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 8
651template <class t_ARGS_01,
652 class t_ARGS_02,
653 class t_ARGS_03,
654 class t_ARGS_04,
655 class t_ARGS_05,
656 class t_ARGS_06,
657 class t_ARGS_07,
658 class t_ARGS_08>
659Format_ArgsStore<format_context, t_ARGS_01,
660 t_ARGS_02,
661 t_ARGS_03,
662 t_ARGS_04,
663 t_ARGS_05,
664 t_ARGS_06,
665 t_ARGS_07,
666 t_ARGS_08> make_format_args(
667 t_ARGS_01& fmt_args_01,
668 t_ARGS_02& fmt_args_02,
669 t_ARGS_03& fmt_args_03,
670 t_ARGS_04& fmt_args_04,
671 t_ARGS_05& fmt_args_05,
672 t_ARGS_06& fmt_args_06,
673 t_ARGS_07& fmt_args_07,
674 t_ARGS_08& fmt_args_08);
675#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 8
676
677#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 9
678template <class t_ARGS_01,
679 class t_ARGS_02,
680 class t_ARGS_03,
681 class t_ARGS_04,
682 class t_ARGS_05,
683 class t_ARGS_06,
684 class t_ARGS_07,
685 class t_ARGS_08,
686 class t_ARGS_09>
687Format_ArgsStore<format_context, t_ARGS_01,
688 t_ARGS_02,
689 t_ARGS_03,
690 t_ARGS_04,
691 t_ARGS_05,
692 t_ARGS_06,
693 t_ARGS_07,
694 t_ARGS_08,
695 t_ARGS_09> make_format_args(
696 t_ARGS_01& fmt_args_01,
697 t_ARGS_02& fmt_args_02,
698 t_ARGS_03& fmt_args_03,
699 t_ARGS_04& fmt_args_04,
700 t_ARGS_05& fmt_args_05,
701 t_ARGS_06& fmt_args_06,
702 t_ARGS_07& fmt_args_07,
703 t_ARGS_08& fmt_args_08,
704 t_ARGS_09& fmt_args_09);
705#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 9
706
707#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 10
708template <class t_ARGS_01,
709 class t_ARGS_02,
710 class t_ARGS_03,
711 class t_ARGS_04,
712 class t_ARGS_05,
713 class t_ARGS_06,
714 class t_ARGS_07,
715 class t_ARGS_08,
716 class t_ARGS_09,
717 class t_ARGS_10>
718Format_ArgsStore<format_context, t_ARGS_01,
719 t_ARGS_02,
720 t_ARGS_03,
721 t_ARGS_04,
722 t_ARGS_05,
723 t_ARGS_06,
724 t_ARGS_07,
725 t_ARGS_08,
726 t_ARGS_09,
727 t_ARGS_10> make_format_args(
728 t_ARGS_01& fmt_args_01,
729 t_ARGS_02& fmt_args_02,
730 t_ARGS_03& fmt_args_03,
731 t_ARGS_04& fmt_args_04,
732 t_ARGS_05& fmt_args_05,
733 t_ARGS_06& fmt_args_06,
734 t_ARGS_07& fmt_args_07,
735 t_ARGS_08& fmt_args_08,
736 t_ARGS_09& fmt_args_09,
737 t_ARGS_10& fmt_args_10);
738#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 10
739
740
741#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 0
742Format_ArgsStore<wformat_context> make_wformat_args(
743 );
744#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 0
745
746#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 1
747template <class t_ARGS_01>
748Format_ArgsStore<wformat_context, t_ARGS_01> make_wformat_args(
749 t_ARGS_01& fmt_args_01);
750#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 1
751
752#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 2
753template <class t_ARGS_01,
754 class t_ARGS_02>
755Format_ArgsStore<wformat_context, t_ARGS_01,
756 t_ARGS_02> make_wformat_args(
757 t_ARGS_01& fmt_args_01,
758 t_ARGS_02& fmt_args_02);
759#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 2
760
761#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 3
762template <class t_ARGS_01,
763 class t_ARGS_02,
764 class t_ARGS_03>
765Format_ArgsStore<wformat_context, t_ARGS_01,
766 t_ARGS_02,
767 t_ARGS_03> make_wformat_args(
768 t_ARGS_01& fmt_args_01,
769 t_ARGS_02& fmt_args_02,
770 t_ARGS_03& fmt_args_03);
771#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 3
772
773#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 4
774template <class t_ARGS_01,
775 class t_ARGS_02,
776 class t_ARGS_03,
777 class t_ARGS_04>
778Format_ArgsStore<wformat_context, t_ARGS_01,
779 t_ARGS_02,
780 t_ARGS_03,
781 t_ARGS_04> make_wformat_args(
782 t_ARGS_01& fmt_args_01,
783 t_ARGS_02& fmt_args_02,
784 t_ARGS_03& fmt_args_03,
785 t_ARGS_04& fmt_args_04);
786#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 4
787
788#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 5
789template <class t_ARGS_01,
790 class t_ARGS_02,
791 class t_ARGS_03,
792 class t_ARGS_04,
793 class t_ARGS_05>
794Format_ArgsStore<wformat_context, t_ARGS_01,
795 t_ARGS_02,
796 t_ARGS_03,
797 t_ARGS_04,
798 t_ARGS_05> make_wformat_args(
799 t_ARGS_01& fmt_args_01,
800 t_ARGS_02& fmt_args_02,
801 t_ARGS_03& fmt_args_03,
802 t_ARGS_04& fmt_args_04,
803 t_ARGS_05& fmt_args_05);
804#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 5
805
806#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 6
807template <class t_ARGS_01,
808 class t_ARGS_02,
809 class t_ARGS_03,
810 class t_ARGS_04,
811 class t_ARGS_05,
812 class t_ARGS_06>
813Format_ArgsStore<wformat_context, t_ARGS_01,
814 t_ARGS_02,
815 t_ARGS_03,
816 t_ARGS_04,
817 t_ARGS_05,
818 t_ARGS_06> make_wformat_args(
819 t_ARGS_01& fmt_args_01,
820 t_ARGS_02& fmt_args_02,
821 t_ARGS_03& fmt_args_03,
822 t_ARGS_04& fmt_args_04,
823 t_ARGS_05& fmt_args_05,
824 t_ARGS_06& fmt_args_06);
825#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 6
826
827#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 7
828template <class t_ARGS_01,
829 class t_ARGS_02,
830 class t_ARGS_03,
831 class t_ARGS_04,
832 class t_ARGS_05,
833 class t_ARGS_06,
834 class t_ARGS_07>
835Format_ArgsStore<wformat_context, t_ARGS_01,
836 t_ARGS_02,
837 t_ARGS_03,
838 t_ARGS_04,
839 t_ARGS_05,
840 t_ARGS_06,
841 t_ARGS_07> make_wformat_args(
842 t_ARGS_01& fmt_args_01,
843 t_ARGS_02& fmt_args_02,
844 t_ARGS_03& fmt_args_03,
845 t_ARGS_04& fmt_args_04,
846 t_ARGS_05& fmt_args_05,
847 t_ARGS_06& fmt_args_06,
848 t_ARGS_07& fmt_args_07);
849#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 7
850
851#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 8
852template <class t_ARGS_01,
853 class t_ARGS_02,
854 class t_ARGS_03,
855 class t_ARGS_04,
856 class t_ARGS_05,
857 class t_ARGS_06,
858 class t_ARGS_07,
859 class t_ARGS_08>
860Format_ArgsStore<wformat_context, t_ARGS_01,
861 t_ARGS_02,
862 t_ARGS_03,
863 t_ARGS_04,
864 t_ARGS_05,
865 t_ARGS_06,
866 t_ARGS_07,
867 t_ARGS_08> make_wformat_args(
868 t_ARGS_01& fmt_args_01,
869 t_ARGS_02& fmt_args_02,
870 t_ARGS_03& fmt_args_03,
871 t_ARGS_04& fmt_args_04,
872 t_ARGS_05& fmt_args_05,
873 t_ARGS_06& fmt_args_06,
874 t_ARGS_07& fmt_args_07,
875 t_ARGS_08& fmt_args_08);
876#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 8
877
878#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 9
879template <class t_ARGS_01,
880 class t_ARGS_02,
881 class t_ARGS_03,
882 class t_ARGS_04,
883 class t_ARGS_05,
884 class t_ARGS_06,
885 class t_ARGS_07,
886 class t_ARGS_08,
887 class t_ARGS_09>
888Format_ArgsStore<wformat_context, t_ARGS_01,
889 t_ARGS_02,
890 t_ARGS_03,
891 t_ARGS_04,
892 t_ARGS_05,
893 t_ARGS_06,
894 t_ARGS_07,
895 t_ARGS_08,
896 t_ARGS_09> make_wformat_args(
897 t_ARGS_01& fmt_args_01,
898 t_ARGS_02& fmt_args_02,
899 t_ARGS_03& fmt_args_03,
900 t_ARGS_04& fmt_args_04,
901 t_ARGS_05& fmt_args_05,
902 t_ARGS_06& fmt_args_06,
903 t_ARGS_07& fmt_args_07,
904 t_ARGS_08& fmt_args_08,
905 t_ARGS_09& fmt_args_09);
906#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 9
907
908#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 10
909template <class t_ARGS_01,
910 class t_ARGS_02,
911 class t_ARGS_03,
912 class t_ARGS_04,
913 class t_ARGS_05,
914 class t_ARGS_06,
915 class t_ARGS_07,
916 class t_ARGS_08,
917 class t_ARGS_09,
918 class t_ARGS_10>
919Format_ArgsStore<wformat_context, t_ARGS_01,
920 t_ARGS_02,
921 t_ARGS_03,
922 t_ARGS_04,
923 t_ARGS_05,
924 t_ARGS_06,
925 t_ARGS_07,
926 t_ARGS_08,
927 t_ARGS_09,
928 t_ARGS_10> make_wformat_args(
929 t_ARGS_01& fmt_args_01,
930 t_ARGS_02& fmt_args_02,
931 t_ARGS_03& fmt_args_03,
932 t_ARGS_04& fmt_args_04,
933 t_ARGS_05& fmt_args_05,
934 t_ARGS_06& fmt_args_06,
935 t_ARGS_07& fmt_args_07,
936 t_ARGS_08& fmt_args_08,
937 t_ARGS_09& fmt_args_09,
938 t_ARGS_10& fmt_args_10);
939#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_B >= 10
940
941#else
942// The generated code below is a workaround for the absence of perfect
943// forwarding in some compilers.
944template <class... t_ARGS>
945Format_ArgsStore<format_context, t_ARGS...> make_format_args(
946 t_ARGS&... fmt_args);
947
948template <class... t_ARGS>
949Format_ArgsStore<wformat_context, t_ARGS...> make_wformat_args(
950 t_ARGS&... fmt_args);
951// }}} END GENERATED CODE
952#endif
953
954
955 // =======================
956 // class basic_format_args
957 // =======================
958
959/// A class intended to provide access to formatting arguments. This should
960/// not be constructed directly but indirectly using one of the `make_format_args` or the `make_wformat_args` functions.
961///
962/// \note Note that this
963/// type has reference semantics and users must ensure that this type does not
964/// outlive the arguments used in its construction.
965///
966/// See @ref bslfmt_format_args_cpp03
967template <class t_CONTEXT>
968class basic_format_args {
969 private:
970 // DATA
971 size_t d_size; // number of arguments held
972
973 const basic_format_arg<t_CONTEXT> *d_data_p; // pointer to the first
974 // element of the contained
975 // array.
976
977 // PRIVATE ACCESSORS
978
979 /// Return the number of arguments contained within this object.
980 size_t size() const;
981
982 // FRIENDS
983 friend class Format_ArgsUtil;
984
985 public:
986 // CREATORS
987
988 /// Create a @ref basic_format_args object which contains no arguments.
990
991#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
992// {{{ BEGIN GENERATED CODE
993// Command line: sim_cpp11_features.pl bslfmt_format_args.h
994#ifndef BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT
995#define BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT 10
996#endif
997#ifndef BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C
998#define BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT
999#endif
1000#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C >= 0
1001 basic_format_args(const Format_ArgsStore<t_CONTEXT>& store)
1003#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C >= 0
1004
1005#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C >= 1
1006 template <class t_ARGS_01>
1007 basic_format_args(const Format_ArgsStore<t_CONTEXT, t_ARGS_01>& store)
1009#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C >= 1
1010
1011#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C >= 2
1012 template <class t_ARGS_01,
1013 class t_ARGS_02>
1014 basic_format_args(const Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1015 t_ARGS_02>& store)
1017#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C >= 2
1018
1019#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C >= 3
1020 template <class t_ARGS_01,
1021 class t_ARGS_02,
1022 class t_ARGS_03>
1023 basic_format_args(const Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1024 t_ARGS_02,
1025 t_ARGS_03>& store)
1027#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C >= 3
1028
1029#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C >= 4
1030 template <class t_ARGS_01,
1031 class t_ARGS_02,
1032 class t_ARGS_03,
1033 class t_ARGS_04>
1034 basic_format_args(const Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1035 t_ARGS_02,
1036 t_ARGS_03,
1037 t_ARGS_04>& store)
1039#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C >= 4
1040
1041#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C >= 5
1042 template <class t_ARGS_01,
1043 class t_ARGS_02,
1044 class t_ARGS_03,
1045 class t_ARGS_04,
1046 class t_ARGS_05>
1047 basic_format_args(const Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1048 t_ARGS_02,
1049 t_ARGS_03,
1050 t_ARGS_04,
1051 t_ARGS_05>& store)
1053#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C >= 5
1054
1055#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C >= 6
1056 template <class t_ARGS_01,
1057 class t_ARGS_02,
1058 class t_ARGS_03,
1059 class t_ARGS_04,
1060 class t_ARGS_05,
1061 class t_ARGS_06>
1062 basic_format_args(const Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1063 t_ARGS_02,
1064 t_ARGS_03,
1065 t_ARGS_04,
1066 t_ARGS_05,
1067 t_ARGS_06>& store)
1069#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C >= 6
1070
1071#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C >= 7
1072 template <class t_ARGS_01,
1073 class t_ARGS_02,
1074 class t_ARGS_03,
1075 class t_ARGS_04,
1076 class t_ARGS_05,
1077 class t_ARGS_06,
1078 class t_ARGS_07>
1079 basic_format_args(const Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1080 t_ARGS_02,
1081 t_ARGS_03,
1082 t_ARGS_04,
1083 t_ARGS_05,
1084 t_ARGS_06,
1085 t_ARGS_07>& store)
1087#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C >= 7
1088
1089#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C >= 8
1090 template <class t_ARGS_01,
1091 class t_ARGS_02,
1092 class t_ARGS_03,
1093 class t_ARGS_04,
1094 class t_ARGS_05,
1095 class t_ARGS_06,
1096 class t_ARGS_07,
1097 class t_ARGS_08>
1098 basic_format_args(const Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1099 t_ARGS_02,
1100 t_ARGS_03,
1101 t_ARGS_04,
1102 t_ARGS_05,
1103 t_ARGS_06,
1104 t_ARGS_07,
1105 t_ARGS_08>& store)
1107#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C >= 8
1108
1109#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C >= 9
1110 template <class t_ARGS_01,
1111 class t_ARGS_02,
1112 class t_ARGS_03,
1113 class t_ARGS_04,
1114 class t_ARGS_05,
1115 class t_ARGS_06,
1116 class t_ARGS_07,
1117 class t_ARGS_08,
1118 class t_ARGS_09>
1119 basic_format_args(const Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1120 t_ARGS_02,
1121 t_ARGS_03,
1122 t_ARGS_04,
1123 t_ARGS_05,
1124 t_ARGS_06,
1125 t_ARGS_07,
1126 t_ARGS_08,
1127 t_ARGS_09>& store)
1129#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C >= 9
1130
1131#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C >= 10
1132 template <class t_ARGS_01,
1133 class t_ARGS_02,
1134 class t_ARGS_03,
1135 class t_ARGS_04,
1136 class t_ARGS_05,
1137 class t_ARGS_06,
1138 class t_ARGS_07,
1139 class t_ARGS_08,
1140 class t_ARGS_09,
1141 class t_ARGS_10>
1142 basic_format_args(const Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1143 t_ARGS_02,
1144 t_ARGS_03,
1145 t_ARGS_04,
1146 t_ARGS_05,
1147 t_ARGS_06,
1148 t_ARGS_07,
1149 t_ARGS_08,
1150 t_ARGS_09,
1151 t_ARGS_10>& store)
1153#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_C >= 10
1154
1155#else
1156// The generated code below is a workaround for the absence of perfect
1157// forwarding in some compilers.
1158 template <class... t_ARGS>
1159 basic_format_args(const Format_ArgsStore<t_CONTEXT, t_ARGS...>& store)
1161// }}} END GENERATED CODE
1162#endif
1163
1164 // ACCESSORS
1165
1166 /// Return the argument held at the position given by the specified `pos`.
1167 /// If `pos >= size()` then a default-constructed @ref basic_format_arg is
1168 /// returned.
1169 basic_format_arg<t_CONTEXT> get(size_t pos) const BSLS_KEYWORD_NOEXCEPT;
1170};
1171
1172 // ---------------------
1173 // class Format_ArgsUtil
1174 // ---------------------
1175
1176#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
1177// {{{ BEGIN GENERATED CODE
1178// Command line: sim_cpp11_features.pl bslfmt_format_args.h
1179#ifndef BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT
1180#define BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT 10
1181#endif
1182#ifndef BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D
1183#define BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT
1184#endif
1185
1186class Format_ArgsUtil {
1187 public:
1188
1189#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D >= 0
1190 template <class t_CONTEXT>
1191 static Format_ArgsStore<t_CONTEXT> makeFormatArgs(
1192 );
1193#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D >= 0
1194
1195#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D >= 1
1196 template <class t_CONTEXT, class t_ARGS_01>
1197 static Format_ArgsStore<t_CONTEXT, t_ARGS_01> makeFormatArgs(
1198 t_ARGS_01& fmt_args_01);
1199#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D >= 1
1200
1201#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D >= 2
1202 template <class t_CONTEXT, class t_ARGS_01,
1203 class t_ARGS_02>
1204 static Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1205 t_ARGS_02> makeFormatArgs(
1206 t_ARGS_01& fmt_args_01,
1207 t_ARGS_02& fmt_args_02);
1208#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D >= 2
1209
1210#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D >= 3
1211 template <class t_CONTEXT, class t_ARGS_01,
1212 class t_ARGS_02,
1213 class t_ARGS_03>
1214 static Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1215 t_ARGS_02,
1216 t_ARGS_03> makeFormatArgs(
1217 t_ARGS_01& fmt_args_01,
1218 t_ARGS_02& fmt_args_02,
1219 t_ARGS_03& fmt_args_03);
1220#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D >= 3
1221
1222#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D >= 4
1223 template <class t_CONTEXT, class t_ARGS_01,
1224 class t_ARGS_02,
1225 class t_ARGS_03,
1226 class t_ARGS_04>
1227 static Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1228 t_ARGS_02,
1229 t_ARGS_03,
1230 t_ARGS_04> makeFormatArgs(
1231 t_ARGS_01& fmt_args_01,
1232 t_ARGS_02& fmt_args_02,
1233 t_ARGS_03& fmt_args_03,
1234 t_ARGS_04& fmt_args_04);
1235#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D >= 4
1236
1237#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D >= 5
1238 template <class t_CONTEXT, class t_ARGS_01,
1239 class t_ARGS_02,
1240 class t_ARGS_03,
1241 class t_ARGS_04,
1242 class t_ARGS_05>
1243 static Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1244 t_ARGS_02,
1245 t_ARGS_03,
1246 t_ARGS_04,
1247 t_ARGS_05> makeFormatArgs(
1248 t_ARGS_01& fmt_args_01,
1249 t_ARGS_02& fmt_args_02,
1250 t_ARGS_03& fmt_args_03,
1251 t_ARGS_04& fmt_args_04,
1252 t_ARGS_05& fmt_args_05);
1253#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D >= 5
1254
1255#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D >= 6
1256 template <class t_CONTEXT, class t_ARGS_01,
1257 class t_ARGS_02,
1258 class t_ARGS_03,
1259 class t_ARGS_04,
1260 class t_ARGS_05,
1261 class t_ARGS_06>
1262 static Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1263 t_ARGS_02,
1264 t_ARGS_03,
1265 t_ARGS_04,
1266 t_ARGS_05,
1267 t_ARGS_06> makeFormatArgs(
1268 t_ARGS_01& fmt_args_01,
1269 t_ARGS_02& fmt_args_02,
1270 t_ARGS_03& fmt_args_03,
1271 t_ARGS_04& fmt_args_04,
1272 t_ARGS_05& fmt_args_05,
1273 t_ARGS_06& fmt_args_06);
1274#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D >= 6
1275
1276#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D >= 7
1277 template <class t_CONTEXT, class t_ARGS_01,
1278 class t_ARGS_02,
1279 class t_ARGS_03,
1280 class t_ARGS_04,
1281 class t_ARGS_05,
1282 class t_ARGS_06,
1283 class t_ARGS_07>
1284 static Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1285 t_ARGS_02,
1286 t_ARGS_03,
1287 t_ARGS_04,
1288 t_ARGS_05,
1289 t_ARGS_06,
1290 t_ARGS_07> makeFormatArgs(
1291 t_ARGS_01& fmt_args_01,
1292 t_ARGS_02& fmt_args_02,
1293 t_ARGS_03& fmt_args_03,
1294 t_ARGS_04& fmt_args_04,
1295 t_ARGS_05& fmt_args_05,
1296 t_ARGS_06& fmt_args_06,
1297 t_ARGS_07& fmt_args_07);
1298#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D >= 7
1299
1300#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D >= 8
1301 template <class t_CONTEXT, class t_ARGS_01,
1302 class t_ARGS_02,
1303 class t_ARGS_03,
1304 class t_ARGS_04,
1305 class t_ARGS_05,
1306 class t_ARGS_06,
1307 class t_ARGS_07,
1308 class t_ARGS_08>
1309 static Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1310 t_ARGS_02,
1311 t_ARGS_03,
1312 t_ARGS_04,
1313 t_ARGS_05,
1314 t_ARGS_06,
1315 t_ARGS_07,
1316 t_ARGS_08> makeFormatArgs(
1317 t_ARGS_01& fmt_args_01,
1318 t_ARGS_02& fmt_args_02,
1319 t_ARGS_03& fmt_args_03,
1320 t_ARGS_04& fmt_args_04,
1321 t_ARGS_05& fmt_args_05,
1322 t_ARGS_06& fmt_args_06,
1323 t_ARGS_07& fmt_args_07,
1324 t_ARGS_08& fmt_args_08);
1325#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D >= 8
1326
1327#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D >= 9
1328 template <class t_CONTEXT, class t_ARGS_01,
1329 class t_ARGS_02,
1330 class t_ARGS_03,
1331 class t_ARGS_04,
1332 class t_ARGS_05,
1333 class t_ARGS_06,
1334 class t_ARGS_07,
1335 class t_ARGS_08,
1336 class t_ARGS_09>
1337 static Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1338 t_ARGS_02,
1339 t_ARGS_03,
1340 t_ARGS_04,
1341 t_ARGS_05,
1342 t_ARGS_06,
1343 t_ARGS_07,
1344 t_ARGS_08,
1345 t_ARGS_09> makeFormatArgs(
1346 t_ARGS_01& fmt_args_01,
1347 t_ARGS_02& fmt_args_02,
1348 t_ARGS_03& fmt_args_03,
1349 t_ARGS_04& fmt_args_04,
1350 t_ARGS_05& fmt_args_05,
1351 t_ARGS_06& fmt_args_06,
1352 t_ARGS_07& fmt_args_07,
1353 t_ARGS_08& fmt_args_08,
1354 t_ARGS_09& fmt_args_09);
1355#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D >= 9
1356
1357#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D >= 10
1358 template <class t_CONTEXT, class t_ARGS_01,
1359 class t_ARGS_02,
1360 class t_ARGS_03,
1361 class t_ARGS_04,
1362 class t_ARGS_05,
1363 class t_ARGS_06,
1364 class t_ARGS_07,
1365 class t_ARGS_08,
1366 class t_ARGS_09,
1367 class t_ARGS_10>
1368 static Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1369 t_ARGS_02,
1370 t_ARGS_03,
1371 t_ARGS_04,
1372 t_ARGS_05,
1373 t_ARGS_06,
1374 t_ARGS_07,
1375 t_ARGS_08,
1376 t_ARGS_09,
1377 t_ARGS_10> makeFormatArgs(
1378 t_ARGS_01& fmt_args_01,
1379 t_ARGS_02& fmt_args_02,
1380 t_ARGS_03& fmt_args_03,
1381 t_ARGS_04& fmt_args_04,
1382 t_ARGS_05& fmt_args_05,
1383 t_ARGS_06& fmt_args_06,
1384 t_ARGS_07& fmt_args_07,
1385 t_ARGS_08& fmt_args_08,
1386 t_ARGS_09& fmt_args_09,
1387 t_ARGS_10& fmt_args_10);
1388#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_D >= 10
1389
1390
1391 template <class t_CONTEXT>
1392 static size_t formatArgsSize(const basic_format_args<t_CONTEXT>& args);
1393};
1394#else
1395// The generated code below is a workaround for the absence of perfect
1396// forwarding in some compilers.
1397
1398class Format_ArgsUtil {
1399 public:
1400
1401 template <class t_CONTEXT, class... t_ARGS>
1402 static Format_ArgsStore<t_CONTEXT, t_ARGS...> makeFormatArgs(
1403 t_ARGS&... fmt_args);
1404
1405 template <class t_CONTEXT>
1406 static size_t formatArgsSize(const basic_format_args<t_CONTEXT>& args);
1407};
1408
1409// }}} END GENERATED CODE
1410#endif
1411
1412// ============================================================================
1413// INLINE DEFINITIONS
1414// ============================================================================
1415
1416 // -------------------------------------
1417 // class Format_ArgsStore<t_OUT, T_CHAR>
1418 // -------------------------------------
1419
1420#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
1421// {{{ BEGIN GENERATED CODE
1422// Command line: sim_cpp11_features.pl bslfmt_format_args.h
1423#ifndef BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT
1424#define BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT 10
1425#endif
1426#ifndef BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E
1427#define BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT
1428#endif
1429
1430#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 0
1431template <class t_CONTEXT>
1432inline
1433Format_ArgsStore<t_CONTEXT, BSLS_COMPILERFEATURES_FILLT(10)>::Format_ArgsStore(
1434 const bsl::array<basic_format_arg<t_CONTEXT>, 0u>& args)
1435 BSLS_KEYWORD_NOEXCEPT : d_args(args)
1436{
1437}
1438#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 0
1439
1440#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 1
1441template <class t_CONTEXT, class t_ARGS_01>
1442inline
1443Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1444 BSLS_COMPILERFEATURES_FILLT( 9)>::Format_ArgsStore(
1445 const bsl::array<basic_format_arg<t_CONTEXT>, 1u>& args)
1446 BSLS_KEYWORD_NOEXCEPT : d_args(args)
1447{
1448}
1449#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 1
1450
1451#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 2
1452template <class t_CONTEXT, class t_ARGS_01,
1453 class t_ARGS_02>
1454inline
1455Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1456 t_ARGS_02,
1457 BSLS_COMPILERFEATURES_FILLT( 8)>::Format_ArgsStore(
1458 const bsl::array<basic_format_arg<t_CONTEXT>, 2u>& args)
1459 BSLS_KEYWORD_NOEXCEPT : d_args(args)
1460{
1461}
1462#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 2
1463
1464#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 3
1465template <class t_CONTEXT, class t_ARGS_01,
1466 class t_ARGS_02,
1467 class t_ARGS_03>
1468inline
1469Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1470 t_ARGS_02,
1471 t_ARGS_03,
1472 BSLS_COMPILERFEATURES_FILLT( 7)>::Format_ArgsStore(
1473 const bsl::array<basic_format_arg<t_CONTEXT>, 3u>& args)
1474 BSLS_KEYWORD_NOEXCEPT : d_args(args)
1475{
1476}
1477#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 3
1478
1479#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 4
1480template <class t_CONTEXT, class t_ARGS_01,
1481 class t_ARGS_02,
1482 class t_ARGS_03,
1483 class t_ARGS_04>
1484inline
1485Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1486 t_ARGS_02,
1487 t_ARGS_03,
1488 t_ARGS_04,
1489 BSLS_COMPILERFEATURES_FILLT( 6)>::Format_ArgsStore(
1490 const bsl::array<basic_format_arg<t_CONTEXT>, 4u>& args)
1491 BSLS_KEYWORD_NOEXCEPT : d_args(args)
1492{
1493}
1494#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 4
1495
1496#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 5
1497template <class t_CONTEXT, class t_ARGS_01,
1498 class t_ARGS_02,
1499 class t_ARGS_03,
1500 class t_ARGS_04,
1501 class t_ARGS_05>
1502inline
1503Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1504 t_ARGS_02,
1505 t_ARGS_03,
1506 t_ARGS_04,
1507 t_ARGS_05,
1508 BSLS_COMPILERFEATURES_FILLT( 5)>::Format_ArgsStore(
1509 const bsl::array<basic_format_arg<t_CONTEXT>, 5u>& args)
1510 BSLS_KEYWORD_NOEXCEPT : d_args(args)
1511{
1512}
1513#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 5
1514
1515#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 6
1516template <class t_CONTEXT, class t_ARGS_01,
1517 class t_ARGS_02,
1518 class t_ARGS_03,
1519 class t_ARGS_04,
1520 class t_ARGS_05,
1521 class t_ARGS_06>
1522inline
1523Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1524 t_ARGS_02,
1525 t_ARGS_03,
1526 t_ARGS_04,
1527 t_ARGS_05,
1528 t_ARGS_06,
1529 BSLS_COMPILERFEATURES_FILLT( 4)>::Format_ArgsStore(
1530 const bsl::array<basic_format_arg<t_CONTEXT>, 6u>& args)
1531 BSLS_KEYWORD_NOEXCEPT : d_args(args)
1532{
1533}
1534#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 6
1535
1536#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 7
1537template <class t_CONTEXT, class t_ARGS_01,
1538 class t_ARGS_02,
1539 class t_ARGS_03,
1540 class t_ARGS_04,
1541 class t_ARGS_05,
1542 class t_ARGS_06,
1543 class t_ARGS_07>
1544inline
1545Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1546 t_ARGS_02,
1547 t_ARGS_03,
1548 t_ARGS_04,
1549 t_ARGS_05,
1550 t_ARGS_06,
1551 t_ARGS_07,
1552 BSLS_COMPILERFEATURES_FILLT( 3)>::Format_ArgsStore(
1553 const bsl::array<basic_format_arg<t_CONTEXT>, 7u>& args)
1554 BSLS_KEYWORD_NOEXCEPT : d_args(args)
1555{
1556}
1557#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 7
1558
1559#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 8
1560template <class t_CONTEXT, class t_ARGS_01,
1561 class t_ARGS_02,
1562 class t_ARGS_03,
1563 class t_ARGS_04,
1564 class t_ARGS_05,
1565 class t_ARGS_06,
1566 class t_ARGS_07,
1567 class t_ARGS_08>
1568inline
1569Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1570 t_ARGS_02,
1571 t_ARGS_03,
1572 t_ARGS_04,
1573 t_ARGS_05,
1574 t_ARGS_06,
1575 t_ARGS_07,
1576 t_ARGS_08,
1577 BSLS_COMPILERFEATURES_FILLT( 2)>::Format_ArgsStore(
1578 const bsl::array<basic_format_arg<t_CONTEXT>, 8u>& args)
1579 BSLS_KEYWORD_NOEXCEPT : d_args(args)
1580{
1581}
1582#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 8
1583
1584#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 9
1585template <class t_CONTEXT, class t_ARGS_01,
1586 class t_ARGS_02,
1587 class t_ARGS_03,
1588 class t_ARGS_04,
1589 class t_ARGS_05,
1590 class t_ARGS_06,
1591 class t_ARGS_07,
1592 class t_ARGS_08,
1593 class t_ARGS_09>
1594inline
1595Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1596 t_ARGS_02,
1597 t_ARGS_03,
1598 t_ARGS_04,
1599 t_ARGS_05,
1600 t_ARGS_06,
1601 t_ARGS_07,
1602 t_ARGS_08,
1603 t_ARGS_09,
1604 BSLS_COMPILERFEATURES_FILLT( 1)>::Format_ArgsStore(
1605 const bsl::array<basic_format_arg<t_CONTEXT>, 9u>& args)
1606 BSLS_KEYWORD_NOEXCEPT : d_args(args)
1607{
1608}
1609#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 9
1610
1611#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 10
1612template <class t_CONTEXT, class t_ARGS_01,
1613 class t_ARGS_02,
1614 class t_ARGS_03,
1615 class t_ARGS_04,
1616 class t_ARGS_05,
1617 class t_ARGS_06,
1618 class t_ARGS_07,
1619 class t_ARGS_08,
1620 class t_ARGS_09,
1621 class t_ARGS_10>
1622inline
1623Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1624 t_ARGS_02,
1625 t_ARGS_03,
1626 t_ARGS_04,
1627 t_ARGS_05,
1628 t_ARGS_06,
1629 t_ARGS_07,
1630 t_ARGS_08,
1631 t_ARGS_09,
1632 t_ARGS_10,
1633 BSLS_COMPILERFEATURES_FILLT( 0)>::Format_ArgsStore(
1634 const bsl::array<basic_format_arg<t_CONTEXT>, 10u>& args)
1635 BSLS_KEYWORD_NOEXCEPT : d_args(args)
1636{
1637}
1638#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 10
1639
1640
1641#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 0
1642template <class t_CONTEXT>
1643inline
1644Format_ArgsStore<t_CONTEXT, BSLS_COMPILERFEATURES_FILLT(10)>::Format_ArgsStore(
1646 bsl::array<basic_format_arg<t_CONTEXT>, 0u> > args)
1648{
1649}
1650#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 0
1651
1652#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 1
1653template <class t_CONTEXT, class t_ARGS_01>
1654inline
1655Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1656 BSLS_COMPILERFEATURES_FILLT( 9)>::Format_ArgsStore(
1658 bsl::array<basic_format_arg<t_CONTEXT>, 1u> > args)
1660{
1661}
1662#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 1
1663
1664#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 2
1665template <class t_CONTEXT, class t_ARGS_01,
1666 class t_ARGS_02>
1667inline
1668Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1669 t_ARGS_02,
1670 BSLS_COMPILERFEATURES_FILLT( 8)>::Format_ArgsStore(
1672 bsl::array<basic_format_arg<t_CONTEXT>, 2u> > args)
1674{
1675}
1676#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 2
1677
1678#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 3
1679template <class t_CONTEXT, class t_ARGS_01,
1680 class t_ARGS_02,
1681 class t_ARGS_03>
1682inline
1683Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1684 t_ARGS_02,
1685 t_ARGS_03,
1686 BSLS_COMPILERFEATURES_FILLT( 7)>::Format_ArgsStore(
1688 bsl::array<basic_format_arg<t_CONTEXT>, 3u> > args)
1690{
1691}
1692#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 3
1693
1694#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 4
1695template <class t_CONTEXT, class t_ARGS_01,
1696 class t_ARGS_02,
1697 class t_ARGS_03,
1698 class t_ARGS_04>
1699inline
1700Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1701 t_ARGS_02,
1702 t_ARGS_03,
1703 t_ARGS_04,
1704 BSLS_COMPILERFEATURES_FILLT( 6)>::Format_ArgsStore(
1706 bsl::array<basic_format_arg<t_CONTEXT>, 4u> > args)
1708{
1709}
1710#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 4
1711
1712#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 5
1713template <class t_CONTEXT, class t_ARGS_01,
1714 class t_ARGS_02,
1715 class t_ARGS_03,
1716 class t_ARGS_04,
1717 class t_ARGS_05>
1718inline
1719Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1720 t_ARGS_02,
1721 t_ARGS_03,
1722 t_ARGS_04,
1723 t_ARGS_05,
1724 BSLS_COMPILERFEATURES_FILLT( 5)>::Format_ArgsStore(
1726 bsl::array<basic_format_arg<t_CONTEXT>, 5u> > args)
1728{
1729}
1730#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 5
1731
1732#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 6
1733template <class t_CONTEXT, class t_ARGS_01,
1734 class t_ARGS_02,
1735 class t_ARGS_03,
1736 class t_ARGS_04,
1737 class t_ARGS_05,
1738 class t_ARGS_06>
1739inline
1740Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1741 t_ARGS_02,
1742 t_ARGS_03,
1743 t_ARGS_04,
1744 t_ARGS_05,
1745 t_ARGS_06,
1746 BSLS_COMPILERFEATURES_FILLT( 4)>::Format_ArgsStore(
1748 bsl::array<basic_format_arg<t_CONTEXT>, 6u> > args)
1750{
1751}
1752#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 6
1753
1754#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 7
1755template <class t_CONTEXT, class t_ARGS_01,
1756 class t_ARGS_02,
1757 class t_ARGS_03,
1758 class t_ARGS_04,
1759 class t_ARGS_05,
1760 class t_ARGS_06,
1761 class t_ARGS_07>
1762inline
1763Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1764 t_ARGS_02,
1765 t_ARGS_03,
1766 t_ARGS_04,
1767 t_ARGS_05,
1768 t_ARGS_06,
1769 t_ARGS_07,
1770 BSLS_COMPILERFEATURES_FILLT( 3)>::Format_ArgsStore(
1772 bsl::array<basic_format_arg<t_CONTEXT>, 7u> > args)
1774{
1775}
1776#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 7
1777
1778#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 8
1779template <class t_CONTEXT, class t_ARGS_01,
1780 class t_ARGS_02,
1781 class t_ARGS_03,
1782 class t_ARGS_04,
1783 class t_ARGS_05,
1784 class t_ARGS_06,
1785 class t_ARGS_07,
1786 class t_ARGS_08>
1787inline
1788Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1789 t_ARGS_02,
1790 t_ARGS_03,
1791 t_ARGS_04,
1792 t_ARGS_05,
1793 t_ARGS_06,
1794 t_ARGS_07,
1795 t_ARGS_08,
1796 BSLS_COMPILERFEATURES_FILLT( 2)>::Format_ArgsStore(
1798 bsl::array<basic_format_arg<t_CONTEXT>, 8u> > args)
1800{
1801}
1802#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 8
1803
1804#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 9
1805template <class t_CONTEXT, class t_ARGS_01,
1806 class t_ARGS_02,
1807 class t_ARGS_03,
1808 class t_ARGS_04,
1809 class t_ARGS_05,
1810 class t_ARGS_06,
1811 class t_ARGS_07,
1812 class t_ARGS_08,
1813 class t_ARGS_09>
1814inline
1815Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1816 t_ARGS_02,
1817 t_ARGS_03,
1818 t_ARGS_04,
1819 t_ARGS_05,
1820 t_ARGS_06,
1821 t_ARGS_07,
1822 t_ARGS_08,
1823 t_ARGS_09,
1824 BSLS_COMPILERFEATURES_FILLT( 1)>::Format_ArgsStore(
1826 bsl::array<basic_format_arg<t_CONTEXT>, 9u> > args)
1828{
1829}
1830#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 9
1831
1832#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 10
1833template <class t_CONTEXT, class t_ARGS_01,
1834 class t_ARGS_02,
1835 class t_ARGS_03,
1836 class t_ARGS_04,
1837 class t_ARGS_05,
1838 class t_ARGS_06,
1839 class t_ARGS_07,
1840 class t_ARGS_08,
1841 class t_ARGS_09,
1842 class t_ARGS_10>
1843inline
1844Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1845 t_ARGS_02,
1846 t_ARGS_03,
1847 t_ARGS_04,
1848 t_ARGS_05,
1849 t_ARGS_06,
1850 t_ARGS_07,
1851 t_ARGS_08,
1852 t_ARGS_09,
1853 t_ARGS_10,
1854 BSLS_COMPILERFEATURES_FILLT( 0)>::Format_ArgsStore(
1856 bsl::array<basic_format_arg<t_CONTEXT>, 10u> > args)
1858{
1859}
1860#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_E >= 10
1861
1862#else
1863// The generated code below is a workaround for the absence of perfect
1864// forwarding in some compilers.
1865
1866template <class t_CONTEXT, class... t_ARGS>
1867inline
1868Format_ArgsStore<t_CONTEXT, t_ARGS...>::Format_ArgsStore(
1869 const bsl::array<basic_format_arg<t_CONTEXT>, sizeof...(t_ARGS)>& args)
1870 BSLS_KEYWORD_NOEXCEPT : d_args(args)
1871{
1872}
1873
1874template <class t_CONTEXT, class... t_ARGS>
1875inline
1876Format_ArgsStore<t_CONTEXT, t_ARGS...>::Format_ArgsStore(
1878 bsl::array<basic_format_arg<t_CONTEXT>, sizeof...(t_ARGS)> > args)
1880{
1881}
1882
1883// }}} END GENERATED CODE
1884#endif
1885
1886 // ----------------------------------
1887 // class basic_format_args<t_CONTEXT>
1888 // ----------------------------------
1889
1890// CREATORS
1891template <class t_CONTEXT>
1892inline
1894: d_size(0)
1895, d_data_p(0)
1896{}
1897
1898#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
1899// {{{ BEGIN GENERATED CODE
1900// Command line: sim_cpp11_features.pl bslfmt_format_args.h
1901#ifndef BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT
1902#define BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT 10
1903#endif
1904#ifndef BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F
1905#define BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT
1906#endif
1907#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F >= 0
1908template <class t_CONTEXT>
1909inline
1911 const Format_ArgsStore<t_CONTEXT>& store)
1913: d_size( 0u)
1914, d_data_p(store.d_args.data())
1915{
1916}
1917#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F >= 0
1918
1919#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F >= 1
1920template <class t_CONTEXT>
1921template <class t_ARGS_01>
1922inline
1924 const Format_ArgsStore<t_CONTEXT, t_ARGS_01>& store)
1926: d_size( 1u)
1927, d_data_p(store.d_args.data())
1928{
1929}
1930#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F >= 1
1931
1932#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F >= 2
1933template <class t_CONTEXT>
1934template <class t_ARGS_01,
1935 class t_ARGS_02>
1936inline
1938 const Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1939 t_ARGS_02>& store)
1941: d_size( 2u)
1942, d_data_p(store.d_args.data())
1943{
1944}
1945#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F >= 2
1946
1947#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F >= 3
1948template <class t_CONTEXT>
1949template <class t_ARGS_01,
1950 class t_ARGS_02,
1951 class t_ARGS_03>
1952inline
1954 const Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1955 t_ARGS_02,
1956 t_ARGS_03>& store)
1958: d_size( 3u)
1959, d_data_p(store.d_args.data())
1960{
1961}
1962#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F >= 3
1963
1964#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F >= 4
1965template <class t_CONTEXT>
1966template <class t_ARGS_01,
1967 class t_ARGS_02,
1968 class t_ARGS_03,
1969 class t_ARGS_04>
1970inline
1972 const Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1973 t_ARGS_02,
1974 t_ARGS_03,
1975 t_ARGS_04>& store)
1977: d_size( 4u)
1978, d_data_p(store.d_args.data())
1979{
1980}
1981#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F >= 4
1982
1983#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F >= 5
1984template <class t_CONTEXT>
1985template <class t_ARGS_01,
1986 class t_ARGS_02,
1987 class t_ARGS_03,
1988 class t_ARGS_04,
1989 class t_ARGS_05>
1990inline
1992 const Format_ArgsStore<t_CONTEXT, t_ARGS_01,
1993 t_ARGS_02,
1994 t_ARGS_03,
1995 t_ARGS_04,
1996 t_ARGS_05>& store)
1998: d_size( 5u)
1999, d_data_p(store.d_args.data())
2000{
2001}
2002#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F >= 5
2003
2004#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F >= 6
2005template <class t_CONTEXT>
2006template <class t_ARGS_01,
2007 class t_ARGS_02,
2008 class t_ARGS_03,
2009 class t_ARGS_04,
2010 class t_ARGS_05,
2011 class t_ARGS_06>
2012inline
2014 const Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2015 t_ARGS_02,
2016 t_ARGS_03,
2017 t_ARGS_04,
2018 t_ARGS_05,
2019 t_ARGS_06>& store)
2021: d_size( 6u)
2022, d_data_p(store.d_args.data())
2023{
2024}
2025#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F >= 6
2026
2027#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F >= 7
2028template <class t_CONTEXT>
2029template <class t_ARGS_01,
2030 class t_ARGS_02,
2031 class t_ARGS_03,
2032 class t_ARGS_04,
2033 class t_ARGS_05,
2034 class t_ARGS_06,
2035 class t_ARGS_07>
2036inline
2038 const Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2039 t_ARGS_02,
2040 t_ARGS_03,
2041 t_ARGS_04,
2042 t_ARGS_05,
2043 t_ARGS_06,
2044 t_ARGS_07>& store)
2046: d_size( 7u)
2047, d_data_p(store.d_args.data())
2048{
2049}
2050#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F >= 7
2051
2052#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F >= 8
2053template <class t_CONTEXT>
2054template <class t_ARGS_01,
2055 class t_ARGS_02,
2056 class t_ARGS_03,
2057 class t_ARGS_04,
2058 class t_ARGS_05,
2059 class t_ARGS_06,
2060 class t_ARGS_07,
2061 class t_ARGS_08>
2062inline
2064 const Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2065 t_ARGS_02,
2066 t_ARGS_03,
2067 t_ARGS_04,
2068 t_ARGS_05,
2069 t_ARGS_06,
2070 t_ARGS_07,
2071 t_ARGS_08>& store)
2073: d_size( 8u)
2074, d_data_p(store.d_args.data())
2075{
2076}
2077#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F >= 8
2078
2079#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F >= 9
2080template <class t_CONTEXT>
2081template <class t_ARGS_01,
2082 class t_ARGS_02,
2083 class t_ARGS_03,
2084 class t_ARGS_04,
2085 class t_ARGS_05,
2086 class t_ARGS_06,
2087 class t_ARGS_07,
2088 class t_ARGS_08,
2089 class t_ARGS_09>
2090inline
2092 const Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2093 t_ARGS_02,
2094 t_ARGS_03,
2095 t_ARGS_04,
2096 t_ARGS_05,
2097 t_ARGS_06,
2098 t_ARGS_07,
2099 t_ARGS_08,
2100 t_ARGS_09>& store)
2102: d_size( 9u)
2103, d_data_p(store.d_args.data())
2104{
2105}
2106#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F >= 9
2107
2108#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F >= 10
2109template <class t_CONTEXT>
2110template <class t_ARGS_01,
2111 class t_ARGS_02,
2112 class t_ARGS_03,
2113 class t_ARGS_04,
2114 class t_ARGS_05,
2115 class t_ARGS_06,
2116 class t_ARGS_07,
2117 class t_ARGS_08,
2118 class t_ARGS_09,
2119 class t_ARGS_10>
2120inline
2122 const Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2123 t_ARGS_02,
2124 t_ARGS_03,
2125 t_ARGS_04,
2126 t_ARGS_05,
2127 t_ARGS_06,
2128 t_ARGS_07,
2129 t_ARGS_08,
2130 t_ARGS_09,
2131 t_ARGS_10>& store)
2133: d_size(10u)
2134, d_data_p(store.d_args.data())
2135{
2136}
2137#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_F >= 10
2138
2139#else
2140// The generated code below is a workaround for the absence of perfect
2141// forwarding in some compilers.
2142template <class t_CONTEXT>
2143template <class... t_ARGS>
2144inline
2146 const Format_ArgsStore<t_CONTEXT, t_ARGS...>& store)
2148: d_size(sizeof...(t_ARGS))
2149, d_data_p(store.d_args.data())
2150{
2151}
2152// }}} END GENERATED CODE
2153#endif
2154
2155// ACCESSORS
2156template <class t_CONTEXT>
2157inline
2158basic_format_arg<t_CONTEXT> basic_format_args<t_CONTEXT>::get(
2159 size_t pos) const BSLS_KEYWORD_NOEXCEPT
2160{
2161 return pos < d_size ? d_data_p[pos] : basic_format_arg<t_CONTEXT>();
2162}
2163
2164
2165// PRIVATE ACCESSORS
2166template <class t_CONTEXT>
2167inline
2168size_t basic_format_args<t_CONTEXT>::size() const
2169{
2170 return d_size;
2171}
2172
2173
2174 // ---------------------
2175 // class Format_ArgsUtil
2176 // ---------------------
2177
2178// CLASS METHODS
2179
2180#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
2181// {{{ BEGIN GENERATED CODE
2182// Command line: sim_cpp11_features.pl bslfmt_format_args.h
2183#ifndef BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT
2184#define BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT 10
2185#endif
2186#ifndef BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G
2187#define BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT
2188#endif
2189
2190#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G >= 0
2191template <class t_CONTEXT>
2192inline
2193Format_ArgsStore<t_CONTEXT>
2195{
2197 Format_ArgUtil::makeFormatArgArray<t_CONTEXT>(&arg_array);
2198 return Format_ArgsStore<t_CONTEXT>(
2199 bslmf::MovableRefUtil::move(arg_array));
2200}
2201#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G >= 0
2202
2203#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G >= 1
2204template <class t_CONTEXT, class t_ARGS_01>
2205inline
2206Format_ArgsStore<t_CONTEXT, t_ARGS_01>
2207Format_ArgsUtil::makeFormatArgs(t_ARGS_01& fmt_args_01)
2208{
2210 Format_ArgUtil::makeFormatArgArray<t_CONTEXT, t_ARGS_01>(&arg_array,
2211 fmt_args_01);
2212 return Format_ArgsStore<t_CONTEXT, t_ARGS_01>(
2213 bslmf::MovableRefUtil::move(arg_array));
2214}
2215#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G >= 1
2216
2217#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G >= 2
2218template <class t_CONTEXT, class t_ARGS_01,
2219 class t_ARGS_02>
2220inline
2221Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2222 t_ARGS_02>
2223Format_ArgsUtil::makeFormatArgs(t_ARGS_01& fmt_args_01,
2224 t_ARGS_02& fmt_args_02)
2225{
2227 Format_ArgUtil::makeFormatArgArray<t_CONTEXT, t_ARGS_01,
2228 t_ARGS_02>(&arg_array,
2229 fmt_args_01,
2230 fmt_args_02);
2231 return Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2232 t_ARGS_02>(
2233 bslmf::MovableRefUtil::move(arg_array));
2234}
2235#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G >= 2
2236
2237#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G >= 3
2238template <class t_CONTEXT, class t_ARGS_01,
2239 class t_ARGS_02,
2240 class t_ARGS_03>
2241inline
2242Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2243 t_ARGS_02,
2244 t_ARGS_03>
2245Format_ArgsUtil::makeFormatArgs(t_ARGS_01& fmt_args_01,
2246 t_ARGS_02& fmt_args_02,
2247 t_ARGS_03& fmt_args_03)
2248{
2250 Format_ArgUtil::makeFormatArgArray<t_CONTEXT, t_ARGS_01,
2251 t_ARGS_02,
2252 t_ARGS_03>(&arg_array,
2253 fmt_args_01,
2254 fmt_args_02,
2255 fmt_args_03);
2256 return Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2257 t_ARGS_02,
2258 t_ARGS_03>(
2259 bslmf::MovableRefUtil::move(arg_array));
2260}
2261#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G >= 3
2262
2263#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G >= 4
2264template <class t_CONTEXT, class t_ARGS_01,
2265 class t_ARGS_02,
2266 class t_ARGS_03,
2267 class t_ARGS_04>
2268inline
2269Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2270 t_ARGS_02,
2271 t_ARGS_03,
2272 t_ARGS_04>
2273Format_ArgsUtil::makeFormatArgs(t_ARGS_01& fmt_args_01,
2274 t_ARGS_02& fmt_args_02,
2275 t_ARGS_03& fmt_args_03,
2276 t_ARGS_04& fmt_args_04)
2277{
2279 Format_ArgUtil::makeFormatArgArray<t_CONTEXT, t_ARGS_01,
2280 t_ARGS_02,
2281 t_ARGS_03,
2282 t_ARGS_04>(&arg_array,
2283 fmt_args_01,
2284 fmt_args_02,
2285 fmt_args_03,
2286 fmt_args_04);
2287 return Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2288 t_ARGS_02,
2289 t_ARGS_03,
2290 t_ARGS_04>(
2291 bslmf::MovableRefUtil::move(arg_array));
2292}
2293#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G >= 4
2294
2295#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G >= 5
2296template <class t_CONTEXT, class t_ARGS_01,
2297 class t_ARGS_02,
2298 class t_ARGS_03,
2299 class t_ARGS_04,
2300 class t_ARGS_05>
2301inline
2302Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2303 t_ARGS_02,
2304 t_ARGS_03,
2305 t_ARGS_04,
2306 t_ARGS_05>
2307Format_ArgsUtil::makeFormatArgs(t_ARGS_01& fmt_args_01,
2308 t_ARGS_02& fmt_args_02,
2309 t_ARGS_03& fmt_args_03,
2310 t_ARGS_04& fmt_args_04,
2311 t_ARGS_05& fmt_args_05)
2312{
2314 Format_ArgUtil::makeFormatArgArray<t_CONTEXT, t_ARGS_01,
2315 t_ARGS_02,
2316 t_ARGS_03,
2317 t_ARGS_04,
2318 t_ARGS_05>(&arg_array,
2319 fmt_args_01,
2320 fmt_args_02,
2321 fmt_args_03,
2322 fmt_args_04,
2323 fmt_args_05);
2324 return Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2325 t_ARGS_02,
2326 t_ARGS_03,
2327 t_ARGS_04,
2328 t_ARGS_05>(
2329 bslmf::MovableRefUtil::move(arg_array));
2330}
2331#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G >= 5
2332
2333#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G >= 6
2334template <class t_CONTEXT, class t_ARGS_01,
2335 class t_ARGS_02,
2336 class t_ARGS_03,
2337 class t_ARGS_04,
2338 class t_ARGS_05,
2339 class t_ARGS_06>
2340inline
2341Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2342 t_ARGS_02,
2343 t_ARGS_03,
2344 t_ARGS_04,
2345 t_ARGS_05,
2346 t_ARGS_06>
2347Format_ArgsUtil::makeFormatArgs(t_ARGS_01& fmt_args_01,
2348 t_ARGS_02& fmt_args_02,
2349 t_ARGS_03& fmt_args_03,
2350 t_ARGS_04& fmt_args_04,
2351 t_ARGS_05& fmt_args_05,
2352 t_ARGS_06& fmt_args_06)
2353{
2355 Format_ArgUtil::makeFormatArgArray<t_CONTEXT, t_ARGS_01,
2356 t_ARGS_02,
2357 t_ARGS_03,
2358 t_ARGS_04,
2359 t_ARGS_05,
2360 t_ARGS_06>(&arg_array,
2361 fmt_args_01,
2362 fmt_args_02,
2363 fmt_args_03,
2364 fmt_args_04,
2365 fmt_args_05,
2366 fmt_args_06);
2367 return Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2368 t_ARGS_02,
2369 t_ARGS_03,
2370 t_ARGS_04,
2371 t_ARGS_05,
2372 t_ARGS_06>(
2373 bslmf::MovableRefUtil::move(arg_array));
2374}
2375#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G >= 6
2376
2377#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G >= 7
2378template <class t_CONTEXT, class t_ARGS_01,
2379 class t_ARGS_02,
2380 class t_ARGS_03,
2381 class t_ARGS_04,
2382 class t_ARGS_05,
2383 class t_ARGS_06,
2384 class t_ARGS_07>
2385inline
2386Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2387 t_ARGS_02,
2388 t_ARGS_03,
2389 t_ARGS_04,
2390 t_ARGS_05,
2391 t_ARGS_06,
2392 t_ARGS_07>
2393Format_ArgsUtil::makeFormatArgs(t_ARGS_01& fmt_args_01,
2394 t_ARGS_02& fmt_args_02,
2395 t_ARGS_03& fmt_args_03,
2396 t_ARGS_04& fmt_args_04,
2397 t_ARGS_05& fmt_args_05,
2398 t_ARGS_06& fmt_args_06,
2399 t_ARGS_07& fmt_args_07)
2400{
2402 Format_ArgUtil::makeFormatArgArray<t_CONTEXT, t_ARGS_01,
2403 t_ARGS_02,
2404 t_ARGS_03,
2405 t_ARGS_04,
2406 t_ARGS_05,
2407 t_ARGS_06,
2408 t_ARGS_07>(&arg_array,
2409 fmt_args_01,
2410 fmt_args_02,
2411 fmt_args_03,
2412 fmt_args_04,
2413 fmt_args_05,
2414 fmt_args_06,
2415 fmt_args_07);
2416 return Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2417 t_ARGS_02,
2418 t_ARGS_03,
2419 t_ARGS_04,
2420 t_ARGS_05,
2421 t_ARGS_06,
2422 t_ARGS_07>(
2423 bslmf::MovableRefUtil::move(arg_array));
2424}
2425#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G >= 7
2426
2427#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G >= 8
2428template <class t_CONTEXT, class t_ARGS_01,
2429 class t_ARGS_02,
2430 class t_ARGS_03,
2431 class t_ARGS_04,
2432 class t_ARGS_05,
2433 class t_ARGS_06,
2434 class t_ARGS_07,
2435 class t_ARGS_08>
2436inline
2437Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2438 t_ARGS_02,
2439 t_ARGS_03,
2440 t_ARGS_04,
2441 t_ARGS_05,
2442 t_ARGS_06,
2443 t_ARGS_07,
2444 t_ARGS_08>
2445Format_ArgsUtil::makeFormatArgs(t_ARGS_01& fmt_args_01,
2446 t_ARGS_02& fmt_args_02,
2447 t_ARGS_03& fmt_args_03,
2448 t_ARGS_04& fmt_args_04,
2449 t_ARGS_05& fmt_args_05,
2450 t_ARGS_06& fmt_args_06,
2451 t_ARGS_07& fmt_args_07,
2452 t_ARGS_08& fmt_args_08)
2453{
2455 Format_ArgUtil::makeFormatArgArray<t_CONTEXT, t_ARGS_01,
2456 t_ARGS_02,
2457 t_ARGS_03,
2458 t_ARGS_04,
2459 t_ARGS_05,
2460 t_ARGS_06,
2461 t_ARGS_07,
2462 t_ARGS_08>(&arg_array,
2463 fmt_args_01,
2464 fmt_args_02,
2465 fmt_args_03,
2466 fmt_args_04,
2467 fmt_args_05,
2468 fmt_args_06,
2469 fmt_args_07,
2470 fmt_args_08);
2471 return Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2472 t_ARGS_02,
2473 t_ARGS_03,
2474 t_ARGS_04,
2475 t_ARGS_05,
2476 t_ARGS_06,
2477 t_ARGS_07,
2478 t_ARGS_08>(
2479 bslmf::MovableRefUtil::move(arg_array));
2480}
2481#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G >= 8
2482
2483#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G >= 9
2484template <class t_CONTEXT, class t_ARGS_01,
2485 class t_ARGS_02,
2486 class t_ARGS_03,
2487 class t_ARGS_04,
2488 class t_ARGS_05,
2489 class t_ARGS_06,
2490 class t_ARGS_07,
2491 class t_ARGS_08,
2492 class t_ARGS_09>
2493inline
2494Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2495 t_ARGS_02,
2496 t_ARGS_03,
2497 t_ARGS_04,
2498 t_ARGS_05,
2499 t_ARGS_06,
2500 t_ARGS_07,
2501 t_ARGS_08,
2502 t_ARGS_09>
2503Format_ArgsUtil::makeFormatArgs(t_ARGS_01& fmt_args_01,
2504 t_ARGS_02& fmt_args_02,
2505 t_ARGS_03& fmt_args_03,
2506 t_ARGS_04& fmt_args_04,
2507 t_ARGS_05& fmt_args_05,
2508 t_ARGS_06& fmt_args_06,
2509 t_ARGS_07& fmt_args_07,
2510 t_ARGS_08& fmt_args_08,
2511 t_ARGS_09& fmt_args_09)
2512{
2514 Format_ArgUtil::makeFormatArgArray<t_CONTEXT, t_ARGS_01,
2515 t_ARGS_02,
2516 t_ARGS_03,
2517 t_ARGS_04,
2518 t_ARGS_05,
2519 t_ARGS_06,
2520 t_ARGS_07,
2521 t_ARGS_08,
2522 t_ARGS_09>(&arg_array,
2523 fmt_args_01,
2524 fmt_args_02,
2525 fmt_args_03,
2526 fmt_args_04,
2527 fmt_args_05,
2528 fmt_args_06,
2529 fmt_args_07,
2530 fmt_args_08,
2531 fmt_args_09);
2532 return Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2533 t_ARGS_02,
2534 t_ARGS_03,
2535 t_ARGS_04,
2536 t_ARGS_05,
2537 t_ARGS_06,
2538 t_ARGS_07,
2539 t_ARGS_08,
2540 t_ARGS_09>(
2541 bslmf::MovableRefUtil::move(arg_array));
2542}
2543#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G >= 9
2544
2545#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G >= 10
2546template <class t_CONTEXT, class t_ARGS_01,
2547 class t_ARGS_02,
2548 class t_ARGS_03,
2549 class t_ARGS_04,
2550 class t_ARGS_05,
2551 class t_ARGS_06,
2552 class t_ARGS_07,
2553 class t_ARGS_08,
2554 class t_ARGS_09,
2555 class t_ARGS_10>
2556inline
2557Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2558 t_ARGS_02,
2559 t_ARGS_03,
2560 t_ARGS_04,
2561 t_ARGS_05,
2562 t_ARGS_06,
2563 t_ARGS_07,
2564 t_ARGS_08,
2565 t_ARGS_09,
2566 t_ARGS_10>
2567Format_ArgsUtil::makeFormatArgs(t_ARGS_01& fmt_args_01,
2568 t_ARGS_02& fmt_args_02,
2569 t_ARGS_03& fmt_args_03,
2570 t_ARGS_04& fmt_args_04,
2571 t_ARGS_05& fmt_args_05,
2572 t_ARGS_06& fmt_args_06,
2573 t_ARGS_07& fmt_args_07,
2574 t_ARGS_08& fmt_args_08,
2575 t_ARGS_09& fmt_args_09,
2576 t_ARGS_10& fmt_args_10)
2577{
2579 Format_ArgUtil::makeFormatArgArray<t_CONTEXT, t_ARGS_01,
2580 t_ARGS_02,
2581 t_ARGS_03,
2582 t_ARGS_04,
2583 t_ARGS_05,
2584 t_ARGS_06,
2585 t_ARGS_07,
2586 t_ARGS_08,
2587 t_ARGS_09,
2588 t_ARGS_10>(&arg_array,
2589 fmt_args_01,
2590 fmt_args_02,
2591 fmt_args_03,
2592 fmt_args_04,
2593 fmt_args_05,
2594 fmt_args_06,
2595 fmt_args_07,
2596 fmt_args_08,
2597 fmt_args_09,
2598 fmt_args_10);
2599 return Format_ArgsStore<t_CONTEXT, t_ARGS_01,
2600 t_ARGS_02,
2601 t_ARGS_03,
2602 t_ARGS_04,
2603 t_ARGS_05,
2604 t_ARGS_06,
2605 t_ARGS_07,
2606 t_ARGS_08,
2607 t_ARGS_09,
2608 t_ARGS_10>(
2609 bslmf::MovableRefUtil::move(arg_array));
2610}
2611#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_G >= 10
2612
2613#else
2614// The generated code below is a workaround for the absence of perfect
2615// forwarding in some compilers.
2616
2617template <class t_CONTEXT, class... t_ARGS>
2618inline
2619Format_ArgsStore<t_CONTEXT, t_ARGS...>
2620Format_ArgsUtil::makeFormatArgs(t_ARGS&... fmt_args)
2621{
2622 bsl::array<basic_format_arg<t_CONTEXT>, sizeof...(t_ARGS)> arg_array;
2623 Format_ArgUtil::makeFormatArgArray<t_CONTEXT, t_ARGS...>(&arg_array,
2624 fmt_args...);
2625 return Format_ArgsStore<t_CONTEXT, t_ARGS...>(
2626 bslmf::MovableRefUtil::move(arg_array));
2627}
2628
2629// }}} END GENERATED CODE
2630#endif
2631
2632template <class t_CONTEXT>
2633inline
2635 const basic_format_args<t_CONTEXT>& args)
2636{
2637 return args.size();
2638}
2639
2640
2641 // --------------
2642 // FREE FUNCTIONS
2643 // --------------
2644
2645// FREE FUNCTIONS
2646
2647#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
2648// {{{ BEGIN GENERATED CODE
2649// Command line: sim_cpp11_features.pl bslfmt_format_args.h
2650#ifndef BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT
2651#define BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT 10
2652#endif
2653#ifndef BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H
2654#define BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT
2655#endif
2656
2657#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 0
2658inline
2659Format_ArgsStore<format_context> make_format_args(
2660 )
2661{
2662 return Format_ArgsUtil::makeFormatArgs<format_context>();
2663}
2664#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 0
2665
2666#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 1
2667template <class t_ARGS_01>
2668inline
2669Format_ArgsStore<format_context, t_ARGS_01> make_format_args(
2670 t_ARGS_01& fmt_args_01)
2671{
2672 return Format_ArgsUtil::makeFormatArgs<format_context>(fmt_args_01);
2673}
2674#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 1
2675
2676#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 2
2677template <class t_ARGS_01,
2678 class t_ARGS_02>
2679inline
2680Format_ArgsStore<format_context, t_ARGS_01,
2681 t_ARGS_02> make_format_args(
2682 t_ARGS_01& fmt_args_01,
2683 t_ARGS_02& fmt_args_02)
2684{
2685 return Format_ArgsUtil::makeFormatArgs<format_context>(fmt_args_01,
2686 fmt_args_02);
2687}
2688#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 2
2689
2690#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 3
2691template <class t_ARGS_01,
2692 class t_ARGS_02,
2693 class t_ARGS_03>
2694inline
2695Format_ArgsStore<format_context, t_ARGS_01,
2696 t_ARGS_02,
2697 t_ARGS_03> make_format_args(
2698 t_ARGS_01& fmt_args_01,
2699 t_ARGS_02& fmt_args_02,
2700 t_ARGS_03& fmt_args_03)
2701{
2702 return Format_ArgsUtil::makeFormatArgs<format_context>(fmt_args_01,
2703 fmt_args_02,
2704 fmt_args_03);
2705}
2706#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 3
2707
2708#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 4
2709template <class t_ARGS_01,
2710 class t_ARGS_02,
2711 class t_ARGS_03,
2712 class t_ARGS_04>
2713inline
2714Format_ArgsStore<format_context, t_ARGS_01,
2715 t_ARGS_02,
2716 t_ARGS_03,
2717 t_ARGS_04> make_format_args(
2718 t_ARGS_01& fmt_args_01,
2719 t_ARGS_02& fmt_args_02,
2720 t_ARGS_03& fmt_args_03,
2721 t_ARGS_04& fmt_args_04)
2722{
2723 return Format_ArgsUtil::makeFormatArgs<format_context>(fmt_args_01,
2724 fmt_args_02,
2725 fmt_args_03,
2726 fmt_args_04);
2727}
2728#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 4
2729
2730#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 5
2731template <class t_ARGS_01,
2732 class t_ARGS_02,
2733 class t_ARGS_03,
2734 class t_ARGS_04,
2735 class t_ARGS_05>
2736inline
2737Format_ArgsStore<format_context, t_ARGS_01,
2738 t_ARGS_02,
2739 t_ARGS_03,
2740 t_ARGS_04,
2741 t_ARGS_05> make_format_args(
2742 t_ARGS_01& fmt_args_01,
2743 t_ARGS_02& fmt_args_02,
2744 t_ARGS_03& fmt_args_03,
2745 t_ARGS_04& fmt_args_04,
2746 t_ARGS_05& fmt_args_05)
2747{
2748 return Format_ArgsUtil::makeFormatArgs<format_context>(fmt_args_01,
2749 fmt_args_02,
2750 fmt_args_03,
2751 fmt_args_04,
2752 fmt_args_05);
2753}
2754#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 5
2755
2756#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 6
2757template <class t_ARGS_01,
2758 class t_ARGS_02,
2759 class t_ARGS_03,
2760 class t_ARGS_04,
2761 class t_ARGS_05,
2762 class t_ARGS_06>
2763inline
2764Format_ArgsStore<format_context, t_ARGS_01,
2765 t_ARGS_02,
2766 t_ARGS_03,
2767 t_ARGS_04,
2768 t_ARGS_05,
2769 t_ARGS_06> make_format_args(
2770 t_ARGS_01& fmt_args_01,
2771 t_ARGS_02& fmt_args_02,
2772 t_ARGS_03& fmt_args_03,
2773 t_ARGS_04& fmt_args_04,
2774 t_ARGS_05& fmt_args_05,
2775 t_ARGS_06& fmt_args_06)
2776{
2777 return Format_ArgsUtil::makeFormatArgs<format_context>(fmt_args_01,
2778 fmt_args_02,
2779 fmt_args_03,
2780 fmt_args_04,
2781 fmt_args_05,
2782 fmt_args_06);
2783}
2784#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 6
2785
2786#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 7
2787template <class t_ARGS_01,
2788 class t_ARGS_02,
2789 class t_ARGS_03,
2790 class t_ARGS_04,
2791 class t_ARGS_05,
2792 class t_ARGS_06,
2793 class t_ARGS_07>
2794inline
2795Format_ArgsStore<format_context, t_ARGS_01,
2796 t_ARGS_02,
2797 t_ARGS_03,
2798 t_ARGS_04,
2799 t_ARGS_05,
2800 t_ARGS_06,
2801 t_ARGS_07> make_format_args(
2802 t_ARGS_01& fmt_args_01,
2803 t_ARGS_02& fmt_args_02,
2804 t_ARGS_03& fmt_args_03,
2805 t_ARGS_04& fmt_args_04,
2806 t_ARGS_05& fmt_args_05,
2807 t_ARGS_06& fmt_args_06,
2808 t_ARGS_07& fmt_args_07)
2809{
2810 return Format_ArgsUtil::makeFormatArgs<format_context>(fmt_args_01,
2811 fmt_args_02,
2812 fmt_args_03,
2813 fmt_args_04,
2814 fmt_args_05,
2815 fmt_args_06,
2816 fmt_args_07);
2817}
2818#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 7
2819
2820#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 8
2821template <class t_ARGS_01,
2822 class t_ARGS_02,
2823 class t_ARGS_03,
2824 class t_ARGS_04,
2825 class t_ARGS_05,
2826 class t_ARGS_06,
2827 class t_ARGS_07,
2828 class t_ARGS_08>
2829inline
2830Format_ArgsStore<format_context, t_ARGS_01,
2831 t_ARGS_02,
2832 t_ARGS_03,
2833 t_ARGS_04,
2834 t_ARGS_05,
2835 t_ARGS_06,
2836 t_ARGS_07,
2837 t_ARGS_08> make_format_args(
2838 t_ARGS_01& fmt_args_01,
2839 t_ARGS_02& fmt_args_02,
2840 t_ARGS_03& fmt_args_03,
2841 t_ARGS_04& fmt_args_04,
2842 t_ARGS_05& fmt_args_05,
2843 t_ARGS_06& fmt_args_06,
2844 t_ARGS_07& fmt_args_07,
2845 t_ARGS_08& fmt_args_08)
2846{
2847 return Format_ArgsUtil::makeFormatArgs<format_context>(fmt_args_01,
2848 fmt_args_02,
2849 fmt_args_03,
2850 fmt_args_04,
2851 fmt_args_05,
2852 fmt_args_06,
2853 fmt_args_07,
2854 fmt_args_08);
2855}
2856#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 8
2857
2858#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 9
2859template <class t_ARGS_01,
2860 class t_ARGS_02,
2861 class t_ARGS_03,
2862 class t_ARGS_04,
2863 class t_ARGS_05,
2864 class t_ARGS_06,
2865 class t_ARGS_07,
2866 class t_ARGS_08,
2867 class t_ARGS_09>
2868inline
2869Format_ArgsStore<format_context, t_ARGS_01,
2870 t_ARGS_02,
2871 t_ARGS_03,
2872 t_ARGS_04,
2873 t_ARGS_05,
2874 t_ARGS_06,
2875 t_ARGS_07,
2876 t_ARGS_08,
2877 t_ARGS_09> make_format_args(
2878 t_ARGS_01& fmt_args_01,
2879 t_ARGS_02& fmt_args_02,
2880 t_ARGS_03& fmt_args_03,
2881 t_ARGS_04& fmt_args_04,
2882 t_ARGS_05& fmt_args_05,
2883 t_ARGS_06& fmt_args_06,
2884 t_ARGS_07& fmt_args_07,
2885 t_ARGS_08& fmt_args_08,
2886 t_ARGS_09& fmt_args_09)
2887{
2888 return Format_ArgsUtil::makeFormatArgs<format_context>(fmt_args_01,
2889 fmt_args_02,
2890 fmt_args_03,
2891 fmt_args_04,
2892 fmt_args_05,
2893 fmt_args_06,
2894 fmt_args_07,
2895 fmt_args_08,
2896 fmt_args_09);
2897}
2898#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 9
2899
2900#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 10
2901template <class t_ARGS_01,
2902 class t_ARGS_02,
2903 class t_ARGS_03,
2904 class t_ARGS_04,
2905 class t_ARGS_05,
2906 class t_ARGS_06,
2907 class t_ARGS_07,
2908 class t_ARGS_08,
2909 class t_ARGS_09,
2910 class t_ARGS_10>
2911inline
2912Format_ArgsStore<format_context, t_ARGS_01,
2913 t_ARGS_02,
2914 t_ARGS_03,
2915 t_ARGS_04,
2916 t_ARGS_05,
2917 t_ARGS_06,
2918 t_ARGS_07,
2919 t_ARGS_08,
2920 t_ARGS_09,
2921 t_ARGS_10> make_format_args(
2922 t_ARGS_01& fmt_args_01,
2923 t_ARGS_02& fmt_args_02,
2924 t_ARGS_03& fmt_args_03,
2925 t_ARGS_04& fmt_args_04,
2926 t_ARGS_05& fmt_args_05,
2927 t_ARGS_06& fmt_args_06,
2928 t_ARGS_07& fmt_args_07,
2929 t_ARGS_08& fmt_args_08,
2930 t_ARGS_09& fmt_args_09,
2931 t_ARGS_10& fmt_args_10)
2932{
2933 return Format_ArgsUtil::makeFormatArgs<format_context>(fmt_args_01,
2934 fmt_args_02,
2935 fmt_args_03,
2936 fmt_args_04,
2937 fmt_args_05,
2938 fmt_args_06,
2939 fmt_args_07,
2940 fmt_args_08,
2941 fmt_args_09,
2942 fmt_args_10);
2943}
2944#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 10
2945
2946
2947#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 0
2948inline
2949Format_ArgsStore<wformat_context> make_wformat_args(
2950 )
2951{
2952 return Format_ArgsUtil::makeFormatArgs<wformat_context>();
2953}
2954#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 0
2955
2956#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 1
2957template <class t_ARGS_01>
2958inline
2959Format_ArgsStore<wformat_context, t_ARGS_01> make_wformat_args(
2960 t_ARGS_01& fmt_args_01)
2961{
2962 return Format_ArgsUtil::makeFormatArgs<wformat_context>(fmt_args_01);
2963}
2964#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 1
2965
2966#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 2
2967template <class t_ARGS_01,
2968 class t_ARGS_02>
2969inline
2970Format_ArgsStore<wformat_context, t_ARGS_01,
2971 t_ARGS_02> make_wformat_args(
2972 t_ARGS_01& fmt_args_01,
2973 t_ARGS_02& fmt_args_02)
2974{
2975 return Format_ArgsUtil::makeFormatArgs<wformat_context>(fmt_args_01,
2976 fmt_args_02);
2977}
2978#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 2
2979
2980#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 3
2981template <class t_ARGS_01,
2982 class t_ARGS_02,
2983 class t_ARGS_03>
2984inline
2985Format_ArgsStore<wformat_context, t_ARGS_01,
2986 t_ARGS_02,
2987 t_ARGS_03> make_wformat_args(
2988 t_ARGS_01& fmt_args_01,
2989 t_ARGS_02& fmt_args_02,
2990 t_ARGS_03& fmt_args_03)
2991{
2992 return Format_ArgsUtil::makeFormatArgs<wformat_context>(fmt_args_01,
2993 fmt_args_02,
2994 fmt_args_03);
2995}
2996#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 3
2997
2998#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 4
2999template <class t_ARGS_01,
3000 class t_ARGS_02,
3001 class t_ARGS_03,
3002 class t_ARGS_04>
3003inline
3004Format_ArgsStore<wformat_context, t_ARGS_01,
3005 t_ARGS_02,
3006 t_ARGS_03,
3007 t_ARGS_04> make_wformat_args(
3008 t_ARGS_01& fmt_args_01,
3009 t_ARGS_02& fmt_args_02,
3010 t_ARGS_03& fmt_args_03,
3011 t_ARGS_04& fmt_args_04)
3012{
3013 return Format_ArgsUtil::makeFormatArgs<wformat_context>(fmt_args_01,
3014 fmt_args_02,
3015 fmt_args_03,
3016 fmt_args_04);
3017}
3018#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 4
3019
3020#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 5
3021template <class t_ARGS_01,
3022 class t_ARGS_02,
3023 class t_ARGS_03,
3024 class t_ARGS_04,
3025 class t_ARGS_05>
3026inline
3027Format_ArgsStore<wformat_context, t_ARGS_01,
3028 t_ARGS_02,
3029 t_ARGS_03,
3030 t_ARGS_04,
3031 t_ARGS_05> make_wformat_args(
3032 t_ARGS_01& fmt_args_01,
3033 t_ARGS_02& fmt_args_02,
3034 t_ARGS_03& fmt_args_03,
3035 t_ARGS_04& fmt_args_04,
3036 t_ARGS_05& fmt_args_05)
3037{
3038 return Format_ArgsUtil::makeFormatArgs<wformat_context>(fmt_args_01,
3039 fmt_args_02,
3040 fmt_args_03,
3041 fmt_args_04,
3042 fmt_args_05);
3043}
3044#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 5
3045
3046#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 6
3047template <class t_ARGS_01,
3048 class t_ARGS_02,
3049 class t_ARGS_03,
3050 class t_ARGS_04,
3051 class t_ARGS_05,
3052 class t_ARGS_06>
3053inline
3054Format_ArgsStore<wformat_context, t_ARGS_01,
3055 t_ARGS_02,
3056 t_ARGS_03,
3057 t_ARGS_04,
3058 t_ARGS_05,
3059 t_ARGS_06> make_wformat_args(
3060 t_ARGS_01& fmt_args_01,
3061 t_ARGS_02& fmt_args_02,
3062 t_ARGS_03& fmt_args_03,
3063 t_ARGS_04& fmt_args_04,
3064 t_ARGS_05& fmt_args_05,
3065 t_ARGS_06& fmt_args_06)
3066{
3067 return Format_ArgsUtil::makeFormatArgs<wformat_context>(fmt_args_01,
3068 fmt_args_02,
3069 fmt_args_03,
3070 fmt_args_04,
3071 fmt_args_05,
3072 fmt_args_06);
3073}
3074#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 6
3075
3076#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 7
3077template <class t_ARGS_01,
3078 class t_ARGS_02,
3079 class t_ARGS_03,
3080 class t_ARGS_04,
3081 class t_ARGS_05,
3082 class t_ARGS_06,
3083 class t_ARGS_07>
3084inline
3085Format_ArgsStore<wformat_context, t_ARGS_01,
3086 t_ARGS_02,
3087 t_ARGS_03,
3088 t_ARGS_04,
3089 t_ARGS_05,
3090 t_ARGS_06,
3091 t_ARGS_07> make_wformat_args(
3092 t_ARGS_01& fmt_args_01,
3093 t_ARGS_02& fmt_args_02,
3094 t_ARGS_03& fmt_args_03,
3095 t_ARGS_04& fmt_args_04,
3096 t_ARGS_05& fmt_args_05,
3097 t_ARGS_06& fmt_args_06,
3098 t_ARGS_07& fmt_args_07)
3099{
3100 return Format_ArgsUtil::makeFormatArgs<wformat_context>(fmt_args_01,
3101 fmt_args_02,
3102 fmt_args_03,
3103 fmt_args_04,
3104 fmt_args_05,
3105 fmt_args_06,
3106 fmt_args_07);
3107}
3108#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 7
3109
3110#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 8
3111template <class t_ARGS_01,
3112 class t_ARGS_02,
3113 class t_ARGS_03,
3114 class t_ARGS_04,
3115 class t_ARGS_05,
3116 class t_ARGS_06,
3117 class t_ARGS_07,
3118 class t_ARGS_08>
3119inline
3120Format_ArgsStore<wformat_context, t_ARGS_01,
3121 t_ARGS_02,
3122 t_ARGS_03,
3123 t_ARGS_04,
3124 t_ARGS_05,
3125 t_ARGS_06,
3126 t_ARGS_07,
3127 t_ARGS_08> make_wformat_args(
3128 t_ARGS_01& fmt_args_01,
3129 t_ARGS_02& fmt_args_02,
3130 t_ARGS_03& fmt_args_03,
3131 t_ARGS_04& fmt_args_04,
3132 t_ARGS_05& fmt_args_05,
3133 t_ARGS_06& fmt_args_06,
3134 t_ARGS_07& fmt_args_07,
3135 t_ARGS_08& fmt_args_08)
3136{
3137 return Format_ArgsUtil::makeFormatArgs<wformat_context>(fmt_args_01,
3138 fmt_args_02,
3139 fmt_args_03,
3140 fmt_args_04,
3141 fmt_args_05,
3142 fmt_args_06,
3143 fmt_args_07,
3144 fmt_args_08);
3145}
3146#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 8
3147
3148#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 9
3149template <class t_ARGS_01,
3150 class t_ARGS_02,
3151 class t_ARGS_03,
3152 class t_ARGS_04,
3153 class t_ARGS_05,
3154 class t_ARGS_06,
3155 class t_ARGS_07,
3156 class t_ARGS_08,
3157 class t_ARGS_09>
3158inline
3159Format_ArgsStore<wformat_context, t_ARGS_01,
3160 t_ARGS_02,
3161 t_ARGS_03,
3162 t_ARGS_04,
3163 t_ARGS_05,
3164 t_ARGS_06,
3165 t_ARGS_07,
3166 t_ARGS_08,
3167 t_ARGS_09> make_wformat_args(
3168 t_ARGS_01& fmt_args_01,
3169 t_ARGS_02& fmt_args_02,
3170 t_ARGS_03& fmt_args_03,
3171 t_ARGS_04& fmt_args_04,
3172 t_ARGS_05& fmt_args_05,
3173 t_ARGS_06& fmt_args_06,
3174 t_ARGS_07& fmt_args_07,
3175 t_ARGS_08& fmt_args_08,
3176 t_ARGS_09& fmt_args_09)
3177{
3178 return Format_ArgsUtil::makeFormatArgs<wformat_context>(fmt_args_01,
3179 fmt_args_02,
3180 fmt_args_03,
3181 fmt_args_04,
3182 fmt_args_05,
3183 fmt_args_06,
3184 fmt_args_07,
3185 fmt_args_08,
3186 fmt_args_09);
3187}
3188#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 9
3189
3190#if BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 10
3191template <class t_ARGS_01,
3192 class t_ARGS_02,
3193 class t_ARGS_03,
3194 class t_ARGS_04,
3195 class t_ARGS_05,
3196 class t_ARGS_06,
3197 class t_ARGS_07,
3198 class t_ARGS_08,
3199 class t_ARGS_09,
3200 class t_ARGS_10>
3201inline
3202Format_ArgsStore<wformat_context, t_ARGS_01,
3203 t_ARGS_02,
3204 t_ARGS_03,
3205 t_ARGS_04,
3206 t_ARGS_05,
3207 t_ARGS_06,
3208 t_ARGS_07,
3209 t_ARGS_08,
3210 t_ARGS_09,
3211 t_ARGS_10> make_wformat_args(
3212 t_ARGS_01& fmt_args_01,
3213 t_ARGS_02& fmt_args_02,
3214 t_ARGS_03& fmt_args_03,
3215 t_ARGS_04& fmt_args_04,
3216 t_ARGS_05& fmt_args_05,
3217 t_ARGS_06& fmt_args_06,
3218 t_ARGS_07& fmt_args_07,
3219 t_ARGS_08& fmt_args_08,
3220 t_ARGS_09& fmt_args_09,
3221 t_ARGS_10& fmt_args_10)
3222{
3223 return Format_ArgsUtil::makeFormatArgs<wformat_context>(fmt_args_01,
3224 fmt_args_02,
3225 fmt_args_03,
3226 fmt_args_04,
3227 fmt_args_05,
3228 fmt_args_06,
3229 fmt_args_07,
3230 fmt_args_08,
3231 fmt_args_09,
3232 fmt_args_10);
3233}
3234#endif // BSLFMT_FORMAT_ARGS_VARIADIC_LIMIT_H >= 10
3235
3236#else
3237// The generated code below is a workaround for the absence of perfect
3238// forwarding in some compilers.
3239
3240template <class... t_ARGS>
3241inline
3242Format_ArgsStore<format_context, t_ARGS...> make_format_args(
3243 t_ARGS&... fmt_args)
3244{
3245 return Format_ArgsUtil::makeFormatArgs<format_context>(fmt_args...);
3246}
3247
3248template <class... t_ARGS>
3249inline
3250Format_ArgsStore<wformat_context, t_ARGS...> make_wformat_args(
3251 t_ARGS&... fmt_args)
3252{
3253 return Format_ArgsUtil::makeFormatArgs<wformat_context>(fmt_args...);
3254}
3255
3256// }}} END GENERATED CODE
3257#endif
3258
3259} // close package namespace
3260
3261
3262#else // if ! defined(DEFINED_BSLFMT_FORMAT_ARGS_H)
3263# error Not valid except when included from bslfmt_format_args.h
3264#endif // ! defined(COMPILING_BSLFMT_FORMAT_ARGS_H)
3265
3266#endif // ! defined(INCLUDED_BSLFMT_FORMAT_ARGS_CPP03)
3267
3268// ----------------------------------------------------------------------------
3269// Copyright 2023 Bloomberg Finance L.P.
3270//
3271// Licensed under the Apache License, Version 2.0 (the "License");
3272// you may not use this file except in compliance with the License.
3273// You may obtain a copy of the License at
3274//
3275// http://www.apache.org/licenses/LICENSE-2.0
3276//
3277// Unless required by applicable law or agreed to in writing, software
3278// distributed under the License is distributed on an "AS IS" BASIS,
3279// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3280// See the License for the specific language governing permissions and
3281// limitations under the License.
3282// ----------------------------- END-OF-FILE ----------------------------------
3283
3284/** @} */
3285/** @} */
3286/** @} */
static void makeFormatArgArray(bsl::array< basic_format_arg< t_CONTEXT >, sizeof...(t_FMTARGS)> *out, t_FMTARGS &... fmt_args)
Definition bslfmt_format_arg.h:875
friend class basic_format_args
Definition bslfmt_format_args.h:223
friend class Format_ArgsUtil
Definition bslfmt_format_args.h:225
static Format_ArgsStore< t_CONTEXT, t_ARGS... > makeFormatArgs(t_ARGS &... fmt_args)
Definition bslfmt_format_args.h:431
static size_t formatArgsSize(const basic_format_args< t_CONTEXT > &args)
Definition bslfmt_format_args.h:444
basic_format_args() BSLS_KEYWORD_NOEXCEPT
Create a basic_format_args object which contains no arguments.
Definition bslfmt_format_args.h:383
friend class Format_ArgsUtil
Definition bslfmt_format_args.h:290
basic_format_arg< t_CONTEXT > get(size_t pos) const BSLS_KEYWORD_NOEXCEPT
Definition bslfmt_format_args.h:404
Definition bslmf_movableref.h:752
#define BSLS_KEYWORD_NOEXCEPT
Definition bsls_keyword.h:674
Definition bslfmt_enablestreamedformatter.h:130
basic_format_context< Format_ContextOutputIteratorRef< char >, char > format_context
Definition bslfmt_format_arg.h:170
Format_ArgsStore< format_context, t_ARGS... > make_format_args(t_ARGS &... fmt_args)
Definition bslfmt_format_args.h:461
basic_format_context< Format_ContextOutputIteratorRef< wchar_t >, wchar_t > wformat_context
Definition bslfmt_format_arg.h:173
basic_format_args< format_context > format_args
Definition bslfmt_format_args.h:197
basic_format_args< wformat_context > wformat_args
Definition bslfmt_format_args.h:199
Format_ArgsStore< wformat_context, t_ARGS... > make_wformat_args(t_ARGS &... fmt_args)
Definition bslfmt_format_args.h:469
Definition bslstl_array.h:293
static MovableRef< t_TYPE > move(t_TYPE &reference) BSLS_KEYWORD_NOEXCEPT
Definition bslmf_movableref.h:1067