BDE 4.39.x Production Release
Loading...
Searching...
No Matches
bslma_constructionutil_cpp03.h
Go to the documentation of this file.
1/// @file bslma_constructionutil_cpp03.h
2///
3/// The content of this file has been pre-processed for Doxygen.
4///
5
6
7// bslma_constructionutil_cpp03.h -*-C++-*-
8
9// Automatically generated file. **DO NOT EDIT**
10
11#ifndef INCLUDED_BSLMA_CONSTRUCTIONUTIL_CPP03
12#define INCLUDED_BSLMA_CONSTRUCTIONUTIL_CPP03
13
14/// @defgroup bslma_constructionutil_cpp03 bslma_constructionutil_cpp03
15/// @brief Provide C++03 implementation for bslma_constructionutil.h
16/// @addtogroup bsl
17/// @{
18/// @addtogroup bslma
19/// @{
20/// @addtogroup bslma_constructionutil_cpp03
21/// @{
22///
23/// <h1> Outline </h1>
24/// * <a href="#bslma_constructionutil_cpp03-purpose"> Purpose</a>
25/// * <a href="#bslma_constructionutil_cpp03-classes"> Classes </a>
26/// * <a href="#bslma_constructionutil_cpp03-description"> Description </a>
27///
28/// # Purpose {#bslma_constructionutil_cpp03-purpose}
29/// Provide C++03 implementation for bslma_constructionutil.h
30///
31/// # Classes {#bslma_constructionutil_cpp03-classes}
32/// See bslma_constructionutil.h for list of classes
33///
34/// @see bslma_constructionutil
35///
36/// # Description {#bslma_constructionutil_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 Tue Jun 2 16:00:03 2026
48/// Command line: sim_cpp11_features.pl bslma_constructionutil.h
49/// @}
50/** @} */
51/** @} */
52
53/** @addtogroup bsl
54 * @{
55 */
56/** @addtogroup bslma
57 * @{
58 */
59/** @addtogroup bslma_constructionutil_cpp03
60 * @{
61 */
62
63#ifdef COMPILING_BSLMA_CONSTRUCTIONUTIL_H
64
65
66namespace bslma {
67
68struct ConstructionUtil_Imp;
69
70 // =======================
71 // struct ConstructionUtil
72 // =======================
73
74/// This `struct` provides a namespace for utility functions that construct
75/// elements of (a template parameter) `TARGET_TYPE`.
76///
77/// See @ref bslma_constructionutil_cpp03
78struct ConstructionUtil {
79
80 private:
81 // PRIVATE TYPES
82
83 /// This `typedef` is a convenient alias for the implementation-specific
84 /// utility class defined in this component.
85 typedef ConstructionUtil_Imp Imp;
86
87 public:
88 // CLASS METHODS
89
90 /// Create a default-constructed object of (template parameter)
91 /// `TARGET_TYPE` at the specified `address`. If `allocator` is a
92 /// `bslma`-compatible allocator and `TARGET_TYPE` supports
93 /// `bslma`-style allocation, `allocator` is passed to the default
94 /// extended constructor; otherwise, `allocator` is ignored. If the
95 /// constructor throws, the memory at `address` is left in an unspecified state.
96 ///
97 /// \pre The behavior is undefined unless `address`
98 /// refers to a block that is of sufficient size and properly aligned
99 /// for objects of `TARGET_TYPE`.
100 template <class TARGET_TYPE, class ALLOCATOR>
101 static void construct(TARGET_TYPE *address, const ALLOCATOR& allocator);
102
103#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
104// {{{ BEGIN GENERATED CODE
105// Command line: sim_cpp11_features.pl bslma_constructionutil.h
106#ifndef BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT
107#define BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT 13
108#endif
109#ifndef BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A
110#define BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT
111#endif
112# ifndef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
113#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 0
114 template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
115 static void construct(TARGET_TYPE *address,
116 const ALLOCATOR& allocator,
117 ARG1& argument1);
118#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 0
119
120#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 1
121 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
122 static void construct(TARGET_TYPE *address,
123 const ALLOCATOR& allocator,
124 ARG1& argument1,
125 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01);
126#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 1
127
128#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 2
129 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
130 class ARGS_02>
131 static void construct(TARGET_TYPE *address,
132 const ALLOCATOR& allocator,
133 ARG1& argument1,
134 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
135 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02);
136#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 2
137
138#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 3
139 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
140 class ARGS_02,
141 class ARGS_03>
142 static void construct(TARGET_TYPE *address,
143 const ALLOCATOR& allocator,
144 ARG1& argument1,
145 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
146 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
147 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03);
148#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 3
149
150#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 4
151 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
152 class ARGS_02,
153 class ARGS_03,
154 class ARGS_04>
155 static void construct(TARGET_TYPE *address,
156 const ALLOCATOR& allocator,
157 ARG1& argument1,
158 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
159 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
160 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
161 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04);
162#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 4
163
164#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 5
165 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
166 class ARGS_02,
167 class ARGS_03,
168 class ARGS_04,
169 class ARGS_05>
170 static void construct(TARGET_TYPE *address,
171 const ALLOCATOR& allocator,
172 ARG1& argument1,
173 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
174 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
175 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
176 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
177 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05);
178#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 5
179
180#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 6
181 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
182 class ARGS_02,
183 class ARGS_03,
184 class ARGS_04,
185 class ARGS_05,
186 class ARGS_06>
187 static void construct(TARGET_TYPE *address,
188 const ALLOCATOR& allocator,
189 ARG1& argument1,
190 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
191 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
192 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
193 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
194 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
195 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06);
196#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 6
197
198#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 7
199 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
200 class ARGS_02,
201 class ARGS_03,
202 class ARGS_04,
203 class ARGS_05,
204 class ARGS_06,
205 class ARGS_07>
206 static void construct(TARGET_TYPE *address,
207 const ALLOCATOR& allocator,
208 ARG1& argument1,
209 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
210 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
211 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
212 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
213 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
214 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
215 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07);
216#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 7
217
218#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 8
219 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
220 class ARGS_02,
221 class ARGS_03,
222 class ARGS_04,
223 class ARGS_05,
224 class ARGS_06,
225 class ARGS_07,
226 class ARGS_08>
227 static void construct(TARGET_TYPE *address,
228 const ALLOCATOR& allocator,
229 ARG1& argument1,
230 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
231 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
232 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
233 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
234 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
235 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
236 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
237 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08);
238#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 8
239
240#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 9
241 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
242 class ARGS_02,
243 class ARGS_03,
244 class ARGS_04,
245 class ARGS_05,
246 class ARGS_06,
247 class ARGS_07,
248 class ARGS_08,
249 class ARGS_09>
250 static void construct(TARGET_TYPE *address,
251 const ALLOCATOR& allocator,
252 ARG1& argument1,
253 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
254 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
255 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
256 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
257 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
258 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
259 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
260 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
261 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09);
262#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 9
263
264#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 10
265 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
266 class ARGS_02,
267 class ARGS_03,
268 class ARGS_04,
269 class ARGS_05,
270 class ARGS_06,
271 class ARGS_07,
272 class ARGS_08,
273 class ARGS_09,
274 class ARGS_10>
275 static void construct(TARGET_TYPE *address,
276 const ALLOCATOR& allocator,
277 ARG1& argument1,
278 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
279 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
280 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
281 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
282 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
283 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
284 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
285 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
286 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
287 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10);
288#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 10
289
290#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 11
291 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
292 class ARGS_02,
293 class ARGS_03,
294 class ARGS_04,
295 class ARGS_05,
296 class ARGS_06,
297 class ARGS_07,
298 class ARGS_08,
299 class ARGS_09,
300 class ARGS_10,
301 class ARGS_11>
302 static void construct(TARGET_TYPE *address,
303 const ALLOCATOR& allocator,
304 ARG1& argument1,
305 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
306 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
307 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
308 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
309 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
310 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
311 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
312 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
313 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
314 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
315 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11);
316#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 11
317
318#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 12
319 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
320 class ARGS_02,
321 class ARGS_03,
322 class ARGS_04,
323 class ARGS_05,
324 class ARGS_06,
325 class ARGS_07,
326 class ARGS_08,
327 class ARGS_09,
328 class ARGS_10,
329 class ARGS_11,
330 class ARGS_12>
331 static void construct(TARGET_TYPE *address,
332 const ALLOCATOR& allocator,
333 ARG1& argument1,
334 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
335 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
336 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
337 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
338 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
339 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
340 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
341 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
342 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
343 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
344 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
345 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12);
346#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 12
347
348#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 13
349 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
350 class ARGS_02,
351 class ARGS_03,
352 class ARGS_04,
353 class ARGS_05,
354 class ARGS_06,
355 class ARGS_07,
356 class ARGS_08,
357 class ARGS_09,
358 class ARGS_10,
359 class ARGS_11,
360 class ARGS_12,
361 class ARGS_13>
362 static void construct(TARGET_TYPE *address,
363 const ALLOCATOR& allocator,
364 ARG1& argument1,
365 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
366 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
367 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
368 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
369 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
370 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
371 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
372 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
373 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
374 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
375 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
376 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
377 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13);
378#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 13
379
380# endif
381
382#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 0
383 template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
384 static void construct(TARGET_TYPE *address,
385 const ALLOCATOR& allocator,
386 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1);
387#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 0
388
389#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 1
390 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
391 static void construct(TARGET_TYPE *address,
392 const ALLOCATOR& allocator,
393 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
394 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01);
395#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 1
396
397#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 2
398 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
399 class ARGS_02>
400 static void construct(TARGET_TYPE *address,
401 const ALLOCATOR& allocator,
402 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
403 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
404 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02);
405#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 2
406
407#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 3
408 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
409 class ARGS_02,
410 class ARGS_03>
411 static void construct(TARGET_TYPE *address,
412 const ALLOCATOR& allocator,
413 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
414 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
415 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
416 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03);
417#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 3
418
419#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 4
420 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
421 class ARGS_02,
422 class ARGS_03,
423 class ARGS_04>
424 static void construct(TARGET_TYPE *address,
425 const ALLOCATOR& allocator,
426 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
427 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
428 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
429 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
430 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04);
431#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 4
432
433#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 5
434 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
435 class ARGS_02,
436 class ARGS_03,
437 class ARGS_04,
438 class ARGS_05>
439 static void construct(TARGET_TYPE *address,
440 const ALLOCATOR& allocator,
441 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
442 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
443 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
444 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
445 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
446 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05);
447#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 5
448
449#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 6
450 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
451 class ARGS_02,
452 class ARGS_03,
453 class ARGS_04,
454 class ARGS_05,
455 class ARGS_06>
456 static void construct(TARGET_TYPE *address,
457 const ALLOCATOR& allocator,
458 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
459 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
460 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
461 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
462 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
463 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
464 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06);
465#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 6
466
467#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 7
468 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
469 class ARGS_02,
470 class ARGS_03,
471 class ARGS_04,
472 class ARGS_05,
473 class ARGS_06,
474 class ARGS_07>
475 static void construct(TARGET_TYPE *address,
476 const ALLOCATOR& allocator,
477 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
478 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
479 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
480 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
481 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
482 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
483 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
484 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07);
485#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 7
486
487#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 8
488 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
489 class ARGS_02,
490 class ARGS_03,
491 class ARGS_04,
492 class ARGS_05,
493 class ARGS_06,
494 class ARGS_07,
495 class ARGS_08>
496 static void construct(TARGET_TYPE *address,
497 const ALLOCATOR& allocator,
498 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
499 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
500 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
501 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
502 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
503 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
504 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
505 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
506 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08);
507#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 8
508
509#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 9
510 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
511 class ARGS_02,
512 class ARGS_03,
513 class ARGS_04,
514 class ARGS_05,
515 class ARGS_06,
516 class ARGS_07,
517 class ARGS_08,
518 class ARGS_09>
519 static void construct(TARGET_TYPE *address,
520 const ALLOCATOR& allocator,
521 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
522 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
523 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
524 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
525 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
526 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
527 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
528 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
529 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
530 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09);
531#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 9
532
533#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 10
534 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
535 class ARGS_02,
536 class ARGS_03,
537 class ARGS_04,
538 class ARGS_05,
539 class ARGS_06,
540 class ARGS_07,
541 class ARGS_08,
542 class ARGS_09,
543 class ARGS_10>
544 static void construct(TARGET_TYPE *address,
545 const ALLOCATOR& allocator,
546 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
547 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
548 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
549 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
550 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
551 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
552 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
553 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
554 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
555 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
556 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10);
557#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 10
558
559#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 11
560 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
561 class ARGS_02,
562 class ARGS_03,
563 class ARGS_04,
564 class ARGS_05,
565 class ARGS_06,
566 class ARGS_07,
567 class ARGS_08,
568 class ARGS_09,
569 class ARGS_10,
570 class ARGS_11>
571 static void construct(TARGET_TYPE *address,
572 const ALLOCATOR& allocator,
573 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
574 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
575 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
576 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
577 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
578 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
579 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
580 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
581 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
582 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
583 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
584 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11);
585#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 11
586
587#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 12
588 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
589 class ARGS_02,
590 class ARGS_03,
591 class ARGS_04,
592 class ARGS_05,
593 class ARGS_06,
594 class ARGS_07,
595 class ARGS_08,
596 class ARGS_09,
597 class ARGS_10,
598 class ARGS_11,
599 class ARGS_12>
600 static void construct(TARGET_TYPE *address,
601 const ALLOCATOR& allocator,
602 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
603 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
604 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
605 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
606 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
607 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
608 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
609 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
610 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
611 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
612 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
613 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
614 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12);
615#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 12
616
617#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 13
618 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
619 class ARGS_02,
620 class ARGS_03,
621 class ARGS_04,
622 class ARGS_05,
623 class ARGS_06,
624 class ARGS_07,
625 class ARGS_08,
626 class ARGS_09,
627 class ARGS_10,
628 class ARGS_11,
629 class ARGS_12,
630 class ARGS_13>
631 static void construct(TARGET_TYPE *address,
632 const ALLOCATOR& allocator,
633 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
634 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
635 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
636 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
637 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
638 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
639 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
640 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
641 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
642 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
643 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
644 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
645 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
646 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13);
647#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_A >= 13
648
649#else
650// The generated code below is a workaround for the absence of perfect
651// forwarding in some compilers.
652# ifndef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
653 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
654 static void construct(TARGET_TYPE *address,
655 const ALLOCATOR& allocator,
656 ARG1& argument1,
657 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments);
658# endif
659
660 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
661 static void construct(TARGET_TYPE *address,
662 const ALLOCATOR& allocator,
663 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
664 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments);
665// }}} END GENERATED CODE
666#endif
667
668 /// Create an object of (template parameter) `TARGET_TYPE` at the
669 /// specified `address` by moving from the specified `original` object,
670 /// then destroy `original`. The specified `allocator` is unused
671 /// (except possibly in precondition checks). The constructed object
672 /// will have the same allocator (if any) as `original`. If
673 /// `bslmf::IsBitwiseMoveable<TARGET_TYPE>::value` is `true`, then the
674 /// entire operation is a simple `memcpy` -- no constructors or
675 /// destructors are invoked; otherwise, this method move-constructs an
676 /// object at `address` from the object at `original` then invokes the
677 /// destructor on `original`. If the move constructor throws an
678 /// exception, the memory at `address` is left in an uninitialized state
679 /// and `original` is left in a valid but unspecified state.
680 ///
681 /// \pre The behavior is undefined if `original` uses an allocator other than `allocator` to supply memory.
682 ///
683 /// \note Note that if `original` points to an
684 /// object of a type derived from `TARGET_TYPE` (i.e., a slicing move)
685 /// where `TARGET_TYPE` has a non-`virtual` destructor, then `original`
686 /// will be only partially destroyed.
687 template <class TARGET_TYPE, class ALLOCATOR>
688 static void destructiveMove(TARGET_TYPE *address,
689 const ALLOCATOR& allocator,
690 TARGET_TYPE *original);
691
692#if defined(BSLS_COMPILERFEATURES_GUARANTEED_COPY_ELISION)
693 /// Return, by value, an object of the specified (template parameter)
694 /// `TARGET_TYPE`, having default value. If `allocator` is a
695 /// `bslma`-compatible allocator and `TARGET_TYPE` supports
696 /// `bslma`-style allocation, `allocator` is passed to the extended
697 /// default constructor; otherwise, `allocator` is ignored.
698 ///
699 /// \note Note that this method is available only for compilers that reliably implement
700 /// copy/move elision (i.e., RVO) on the returned object. This
701 /// copy/move elision is required starting with C++17 and is widely
702 /// implemented, though optional, prior to C++17.
703 template <class TARGET_TYPE, class ALLOCATOR>
704 static TARGET_TYPE make(const ALLOCATOR& allocator);
705
706#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
707// {{{ BEGIN GENERATED CODE
708// Command line: sim_cpp11_features.pl bslma_constructionutil.h
709#ifndef BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT
710#define BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT 13
711#endif
712#ifndef BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B
713#define BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT
714#endif
715# ifndef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
716#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 0
717 template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
718 static TARGET_TYPE make(const ALLOCATOR& allocator,
719 ARG1& argument1);
720#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 0
721
722#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 1
723 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
724 static TARGET_TYPE make(const ALLOCATOR& allocator,
725 ARG1& argument1,
726 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01);
727#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 1
728
729#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 2
730 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
731 class ARGS_02>
732 static TARGET_TYPE make(const ALLOCATOR& allocator,
733 ARG1& argument1,
734 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
735 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02);
736#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 2
737
738#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 3
739 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
740 class ARGS_02,
741 class ARGS_03>
742 static TARGET_TYPE make(const ALLOCATOR& allocator,
743 ARG1& argument1,
744 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
745 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
746 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03);
747#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 3
748
749#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 4
750 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
751 class ARGS_02,
752 class ARGS_03,
753 class ARGS_04>
754 static TARGET_TYPE make(const ALLOCATOR& allocator,
755 ARG1& argument1,
756 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
757 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
758 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
759 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04);
760#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 4
761
762#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 5
763 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
764 class ARGS_02,
765 class ARGS_03,
766 class ARGS_04,
767 class ARGS_05>
768 static TARGET_TYPE make(const ALLOCATOR& allocator,
769 ARG1& argument1,
770 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
771 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
772 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
773 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
774 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05);
775#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 5
776
777#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 6
778 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
779 class ARGS_02,
780 class ARGS_03,
781 class ARGS_04,
782 class ARGS_05,
783 class ARGS_06>
784 static TARGET_TYPE make(const ALLOCATOR& allocator,
785 ARG1& argument1,
786 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
787 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
788 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
789 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
790 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
791 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06);
792#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 6
793
794#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 7
795 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
796 class ARGS_02,
797 class ARGS_03,
798 class ARGS_04,
799 class ARGS_05,
800 class ARGS_06,
801 class ARGS_07>
802 static TARGET_TYPE make(const ALLOCATOR& allocator,
803 ARG1& argument1,
804 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
805 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
806 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
807 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
808 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
809 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
810 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07);
811#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 7
812
813#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 8
814 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
815 class ARGS_02,
816 class ARGS_03,
817 class ARGS_04,
818 class ARGS_05,
819 class ARGS_06,
820 class ARGS_07,
821 class ARGS_08>
822 static TARGET_TYPE make(const ALLOCATOR& allocator,
823 ARG1& argument1,
824 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
825 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
826 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
827 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
828 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
829 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
830 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
831 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08);
832#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 8
833
834#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 9
835 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
836 class ARGS_02,
837 class ARGS_03,
838 class ARGS_04,
839 class ARGS_05,
840 class ARGS_06,
841 class ARGS_07,
842 class ARGS_08,
843 class ARGS_09>
844 static TARGET_TYPE make(const ALLOCATOR& allocator,
845 ARG1& argument1,
846 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
847 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
848 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
849 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
850 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
851 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
852 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
853 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
854 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09);
855#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 9
856
857#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 10
858 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
859 class ARGS_02,
860 class ARGS_03,
861 class ARGS_04,
862 class ARGS_05,
863 class ARGS_06,
864 class ARGS_07,
865 class ARGS_08,
866 class ARGS_09,
867 class ARGS_10>
868 static TARGET_TYPE make(const ALLOCATOR& allocator,
869 ARG1& argument1,
870 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
871 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
872 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
873 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
874 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
875 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
876 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
877 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
878 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
879 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10);
880#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 10
881
882#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 11
883 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
884 class ARGS_02,
885 class ARGS_03,
886 class ARGS_04,
887 class ARGS_05,
888 class ARGS_06,
889 class ARGS_07,
890 class ARGS_08,
891 class ARGS_09,
892 class ARGS_10,
893 class ARGS_11>
894 static TARGET_TYPE make(const ALLOCATOR& allocator,
895 ARG1& argument1,
896 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
897 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
898 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
899 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
900 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
901 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
902 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
903 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
904 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
905 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
906 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11);
907#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 11
908
909#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 12
910 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
911 class ARGS_02,
912 class ARGS_03,
913 class ARGS_04,
914 class ARGS_05,
915 class ARGS_06,
916 class ARGS_07,
917 class ARGS_08,
918 class ARGS_09,
919 class ARGS_10,
920 class ARGS_11,
921 class ARGS_12>
922 static TARGET_TYPE make(const ALLOCATOR& allocator,
923 ARG1& argument1,
924 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
925 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
926 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
927 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
928 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
929 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
930 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
931 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
932 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
933 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
934 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
935 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12);
936#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 12
937
938#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 13
939 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
940 class ARGS_02,
941 class ARGS_03,
942 class ARGS_04,
943 class ARGS_05,
944 class ARGS_06,
945 class ARGS_07,
946 class ARGS_08,
947 class ARGS_09,
948 class ARGS_10,
949 class ARGS_11,
950 class ARGS_12,
951 class ARGS_13>
952 static TARGET_TYPE make(const ALLOCATOR& allocator,
953 ARG1& argument1,
954 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
955 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
956 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
957 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
958 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
959 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
960 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
961 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
962 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
963 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
964 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
965 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
966 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13);
967#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 13
968
969# endif
970
971#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 0
972 template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
973 static TARGET_TYPE make(const ALLOCATOR& allocator,
974 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1);
975#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 0
976
977#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 1
978 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
979 static TARGET_TYPE make(const ALLOCATOR& allocator,
980 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
981 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01);
982#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 1
983
984#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 2
985 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
986 class ARGS_02>
987 static TARGET_TYPE make(const ALLOCATOR& allocator,
988 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
989 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
990 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02);
991#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 2
992
993#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 3
994 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
995 class ARGS_02,
996 class ARGS_03>
997 static TARGET_TYPE make(const ALLOCATOR& allocator,
998 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
999 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1000 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1001 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03);
1002#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 3
1003
1004#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 4
1005 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1006 class ARGS_02,
1007 class ARGS_03,
1008 class ARGS_04>
1009 static TARGET_TYPE make(const ALLOCATOR& allocator,
1010 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1011 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1012 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1013 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1014 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04);
1015#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 4
1016
1017#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 5
1018 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1019 class ARGS_02,
1020 class ARGS_03,
1021 class ARGS_04,
1022 class ARGS_05>
1023 static TARGET_TYPE make(const ALLOCATOR& allocator,
1024 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1025 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1026 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1027 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1028 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1029 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05);
1030#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 5
1031
1032#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 6
1033 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1034 class ARGS_02,
1035 class ARGS_03,
1036 class ARGS_04,
1037 class ARGS_05,
1038 class ARGS_06>
1039 static TARGET_TYPE make(const ALLOCATOR& allocator,
1040 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1041 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1042 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1043 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1044 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1045 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1046 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06);
1047#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 6
1048
1049#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 7
1050 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1051 class ARGS_02,
1052 class ARGS_03,
1053 class ARGS_04,
1054 class ARGS_05,
1055 class ARGS_06,
1056 class ARGS_07>
1057 static TARGET_TYPE make(const ALLOCATOR& allocator,
1058 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1059 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1060 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1061 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1062 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1063 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1064 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1065 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07);
1066#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 7
1067
1068#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 8
1069 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1070 class ARGS_02,
1071 class ARGS_03,
1072 class ARGS_04,
1073 class ARGS_05,
1074 class ARGS_06,
1075 class ARGS_07,
1076 class ARGS_08>
1077 static TARGET_TYPE make(const ALLOCATOR& allocator,
1078 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1079 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1080 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1081 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1082 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1083 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1084 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1085 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1086 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08);
1087#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 8
1088
1089#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 9
1090 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1091 class ARGS_02,
1092 class ARGS_03,
1093 class ARGS_04,
1094 class ARGS_05,
1095 class ARGS_06,
1096 class ARGS_07,
1097 class ARGS_08,
1098 class ARGS_09>
1099 static TARGET_TYPE make(const ALLOCATOR& allocator,
1100 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1101 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1102 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1103 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1104 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1105 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1106 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1107 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1108 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1109 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09);
1110#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 9
1111
1112#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 10
1113 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1114 class ARGS_02,
1115 class ARGS_03,
1116 class ARGS_04,
1117 class ARGS_05,
1118 class ARGS_06,
1119 class ARGS_07,
1120 class ARGS_08,
1121 class ARGS_09,
1122 class ARGS_10>
1123 static TARGET_TYPE make(const ALLOCATOR& allocator,
1124 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1125 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1126 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1127 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1128 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1129 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1130 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1131 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1132 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1133 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
1134 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10);
1135#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 10
1136
1137#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 11
1138 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1139 class ARGS_02,
1140 class ARGS_03,
1141 class ARGS_04,
1142 class ARGS_05,
1143 class ARGS_06,
1144 class ARGS_07,
1145 class ARGS_08,
1146 class ARGS_09,
1147 class ARGS_10,
1148 class ARGS_11>
1149 static TARGET_TYPE make(const ALLOCATOR& allocator,
1150 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1151 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1152 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1153 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1154 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1155 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1156 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1157 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1158 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1159 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
1160 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
1161 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11);
1162#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 11
1163
1164#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 12
1165 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1166 class ARGS_02,
1167 class ARGS_03,
1168 class ARGS_04,
1169 class ARGS_05,
1170 class ARGS_06,
1171 class ARGS_07,
1172 class ARGS_08,
1173 class ARGS_09,
1174 class ARGS_10,
1175 class ARGS_11,
1176 class ARGS_12>
1177 static TARGET_TYPE make(const ALLOCATOR& allocator,
1178 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1179 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1180 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1181 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1182 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1183 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1184 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1185 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1186 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1187 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
1188 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
1189 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
1190 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12);
1191#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 12
1192
1193#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 13
1194 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1195 class ARGS_02,
1196 class ARGS_03,
1197 class ARGS_04,
1198 class ARGS_05,
1199 class ARGS_06,
1200 class ARGS_07,
1201 class ARGS_08,
1202 class ARGS_09,
1203 class ARGS_10,
1204 class ARGS_11,
1205 class ARGS_12,
1206 class ARGS_13>
1207 static TARGET_TYPE make(const ALLOCATOR& allocator,
1208 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1209 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1210 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1211 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1212 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1213 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1214 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1215 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1216 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1217 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
1218 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
1219 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
1220 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
1221 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13);
1222#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_B >= 13
1223
1224#else
1225// The generated code below is a workaround for the absence of perfect
1226// forwarding in some compilers.
1227# ifndef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
1228 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
1229 static TARGET_TYPE make(const ALLOCATOR& allocator,
1230 ARG1& argument1,
1231 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments);
1232# endif
1233
1234 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
1235 static TARGET_TYPE make(const ALLOCATOR& allocator,
1236 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1237 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments);
1238// }}} END GENERATED CODE
1239#endif
1240#endif // defined(BSLS_COMPILERFEATURES_GUARANTEED_COPY_ELISION)
1241};
1242
1243 // ===========================
1244 // struct ConstructionUtil_Imp
1245 // ===========================
1246
1247/// This `struct` provides a namespace for a suite of utility functions that
1248/// are used to implement functions in `ConstructionUtil`. In particular,
1249/// they provide overloads, resolved at compile-time, for various features
1250/// (e.g., passing down the allocator to sub-elements of `pair`-like types)
1251/// and optimizations (e.g., bypassing the call to the constructor for
1252/// classes with trivial default and copy constructors). These functions
1253/// should not be used outside this component.
1254///
1255/// See @ref bslma_constructionutil_cpp03
1256struct ConstructionUtil_Imp {
1257
1258 // TYPES
1259
1260 /// These constants are used in the overloads below, when the last argument
1261 /// is of type `bsl::integral_constant<int, N> *`, indicating that
1262 /// `TARGET_TYPE` has the traits for which the enumerator equal to `N` is
1263 /// named.
1264 enum {
1265
1266 e_NIL_TRAITS ,
1269 e_USES_ALLOCATOR_ARG_T_TRAITS // Implies USES_ALLOCATOR
1270 };
1271
1272 // CLASS METHODS
1273
1274 /// Construct a default instance of (template parameter) `TARGET_TYPE`
1275 /// at the specified `address`, passing to the constructor the specified
1276 /// `allocator` using the leading or trailing allocator convention,
1277 /// according to the specified `integral_constant` tag, or ignoring
1278 /// `allocator` in the `e_NIL_TRAITS` case. If the constructor throws,
1279 /// the memory at `address` is left in an unspecified state.
1280 template <class TARGET_TYPE, class ALLOCATOR>
1281 static void construct(
1282 TARGET_TYPE *address,
1283 const ALLOCATOR& allocator,
1285 template <class TARGET_TYPE, class ALLOCATOR>
1286 static void construct(
1287 TARGET_TYPE *address,
1288 const ALLOCATOR& allocator,
1290 template <class TARGET_TYPE, class ALLOCATOR>
1291 static void construct(
1292 TARGET_TYPE *address,
1293 const ALLOCATOR& allocator,
1295
1296#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
1297// {{{ BEGIN GENERATED CODE
1298// Command line: sim_cpp11_features.pl bslma_constructionutil.h
1299#ifndef BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT
1300#define BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT 13
1301#endif
1302#ifndef BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C
1303#define BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT
1304#endif
1305# ifndef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
1306#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 0
1307 template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
1308 static void construct(
1309 TARGET_TYPE *address,
1310 const ALLOCATOR& allocator,
1312 ARG1& argument1);
1313#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 0
1314
1315#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 1
1316 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
1317 static void construct(
1318 TARGET_TYPE *address,
1319 const ALLOCATOR& allocator,
1321 ARG1& argument1,
1322 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01);
1323#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 1
1324
1325#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 2
1326 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1327 class ARGS_02>
1328 static void construct(
1329 TARGET_TYPE *address,
1330 const ALLOCATOR& allocator,
1332 ARG1& argument1,
1333 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1334 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02);
1335#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 2
1336
1337#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 3
1338 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1339 class ARGS_02,
1340 class ARGS_03>
1341 static void construct(
1342 TARGET_TYPE *address,
1343 const ALLOCATOR& allocator,
1345 ARG1& argument1,
1346 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1347 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1348 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03);
1349#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 3
1350
1351#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 4
1352 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1353 class ARGS_02,
1354 class ARGS_03,
1355 class ARGS_04>
1356 static void construct(
1357 TARGET_TYPE *address,
1358 const ALLOCATOR& allocator,
1360 ARG1& argument1,
1361 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1362 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1363 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1364 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04);
1365#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 4
1366
1367#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 5
1368 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1369 class ARGS_02,
1370 class ARGS_03,
1371 class ARGS_04,
1372 class ARGS_05>
1373 static void construct(
1374 TARGET_TYPE *address,
1375 const ALLOCATOR& allocator,
1377 ARG1& argument1,
1378 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1379 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1380 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1381 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1382 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05);
1383#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 5
1384
1385#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 6
1386 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1387 class ARGS_02,
1388 class ARGS_03,
1389 class ARGS_04,
1390 class ARGS_05,
1391 class ARGS_06>
1392 static void construct(
1393 TARGET_TYPE *address,
1394 const ALLOCATOR& allocator,
1396 ARG1& argument1,
1397 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1398 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1399 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1400 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1401 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1402 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06);
1403#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 6
1404
1405#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 7
1406 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1407 class ARGS_02,
1408 class ARGS_03,
1409 class ARGS_04,
1410 class ARGS_05,
1411 class ARGS_06,
1412 class ARGS_07>
1413 static void construct(
1414 TARGET_TYPE *address,
1415 const ALLOCATOR& allocator,
1417 ARG1& argument1,
1418 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1419 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1420 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1421 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1422 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1423 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1424 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07);
1425#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 7
1426
1427#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 8
1428 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1429 class ARGS_02,
1430 class ARGS_03,
1431 class ARGS_04,
1432 class ARGS_05,
1433 class ARGS_06,
1434 class ARGS_07,
1435 class ARGS_08>
1436 static void construct(
1437 TARGET_TYPE *address,
1438 const ALLOCATOR& allocator,
1440 ARG1& argument1,
1441 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1442 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1443 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1444 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1445 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1446 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1447 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1448 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08);
1449#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 8
1450
1451#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 9
1452 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1453 class ARGS_02,
1454 class ARGS_03,
1455 class ARGS_04,
1456 class ARGS_05,
1457 class ARGS_06,
1458 class ARGS_07,
1459 class ARGS_08,
1460 class ARGS_09>
1461 static void construct(
1462 TARGET_TYPE *address,
1463 const ALLOCATOR& allocator,
1465 ARG1& argument1,
1466 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1467 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1468 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1469 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1470 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1471 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1472 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1473 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1474 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09);
1475#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 9
1476
1477#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 10
1478 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1479 class ARGS_02,
1480 class ARGS_03,
1481 class ARGS_04,
1482 class ARGS_05,
1483 class ARGS_06,
1484 class ARGS_07,
1485 class ARGS_08,
1486 class ARGS_09,
1487 class ARGS_10>
1488 static void construct(
1489 TARGET_TYPE *address,
1490 const ALLOCATOR& allocator,
1492 ARG1& argument1,
1493 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1494 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1495 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1496 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1497 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1498 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1499 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1500 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1501 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
1502 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10);
1503#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 10
1504
1505#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 11
1506 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1507 class ARGS_02,
1508 class ARGS_03,
1509 class ARGS_04,
1510 class ARGS_05,
1511 class ARGS_06,
1512 class ARGS_07,
1513 class ARGS_08,
1514 class ARGS_09,
1515 class ARGS_10,
1516 class ARGS_11>
1517 static void construct(
1518 TARGET_TYPE *address,
1519 const ALLOCATOR& allocator,
1521 ARG1& argument1,
1522 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1523 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1524 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1525 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1526 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1527 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1528 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1529 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1530 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
1531 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
1532 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11);
1533#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 11
1534
1535#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 12
1536 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1537 class ARGS_02,
1538 class ARGS_03,
1539 class ARGS_04,
1540 class ARGS_05,
1541 class ARGS_06,
1542 class ARGS_07,
1543 class ARGS_08,
1544 class ARGS_09,
1545 class ARGS_10,
1546 class ARGS_11,
1547 class ARGS_12>
1548 static void construct(
1549 TARGET_TYPE *address,
1550 const ALLOCATOR& allocator,
1552 ARG1& argument1,
1553 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1554 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1555 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1556 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1557 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1558 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1559 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1560 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1561 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
1562 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
1563 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
1564 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12);
1565#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 12
1566
1567#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 13
1568 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1569 class ARGS_02,
1570 class ARGS_03,
1571 class ARGS_04,
1572 class ARGS_05,
1573 class ARGS_06,
1574 class ARGS_07,
1575 class ARGS_08,
1576 class ARGS_09,
1577 class ARGS_10,
1578 class ARGS_11,
1579 class ARGS_12,
1580 class ARGS_13>
1581 static void construct(
1582 TARGET_TYPE *address,
1583 const ALLOCATOR& allocator,
1585 ARG1& argument1,
1586 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1587 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1588 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1589 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1590 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1591 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1592 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1593 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1594 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
1595 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
1596 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
1597 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
1598 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13);
1599#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 13
1600
1601#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 0
1602 template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
1603 static void construct(
1604 TARGET_TYPE *address,
1605 const ALLOCATOR& allocator,
1607 ARG1& argument1);
1608#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 0
1609
1610#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 1
1611 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
1612 static void construct(
1613 TARGET_TYPE *address,
1614 const ALLOCATOR& allocator,
1616 ARG1& argument1,
1617 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01);
1618#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 1
1619
1620#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 2
1621 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1622 class ARGS_02>
1623 static void construct(
1624 TARGET_TYPE *address,
1625 const ALLOCATOR& allocator,
1627 ARG1& argument1,
1628 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1629 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02);
1630#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 2
1631
1632#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 3
1633 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1634 class ARGS_02,
1635 class ARGS_03>
1636 static void construct(
1637 TARGET_TYPE *address,
1638 const ALLOCATOR& allocator,
1640 ARG1& argument1,
1641 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1642 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1643 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03);
1644#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 3
1645
1646#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 4
1647 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1648 class ARGS_02,
1649 class ARGS_03,
1650 class ARGS_04>
1651 static void construct(
1652 TARGET_TYPE *address,
1653 const ALLOCATOR& allocator,
1655 ARG1& argument1,
1656 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1657 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1658 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1659 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04);
1660#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 4
1661
1662#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 5
1663 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1664 class ARGS_02,
1665 class ARGS_03,
1666 class ARGS_04,
1667 class ARGS_05>
1668 static void construct(
1669 TARGET_TYPE *address,
1670 const ALLOCATOR& allocator,
1672 ARG1& argument1,
1673 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1674 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1675 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1676 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1677 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05);
1678#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 5
1679
1680#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 6
1681 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1682 class ARGS_02,
1683 class ARGS_03,
1684 class ARGS_04,
1685 class ARGS_05,
1686 class ARGS_06>
1687 static void construct(
1688 TARGET_TYPE *address,
1689 const ALLOCATOR& allocator,
1691 ARG1& argument1,
1692 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1693 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1694 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1695 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1696 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1697 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06);
1698#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 6
1699
1700#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 7
1701 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1702 class ARGS_02,
1703 class ARGS_03,
1704 class ARGS_04,
1705 class ARGS_05,
1706 class ARGS_06,
1707 class ARGS_07>
1708 static void construct(
1709 TARGET_TYPE *address,
1710 const ALLOCATOR& allocator,
1712 ARG1& argument1,
1713 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1714 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1715 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1716 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1717 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1718 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1719 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07);
1720#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 7
1721
1722#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 8
1723 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1724 class ARGS_02,
1725 class ARGS_03,
1726 class ARGS_04,
1727 class ARGS_05,
1728 class ARGS_06,
1729 class ARGS_07,
1730 class ARGS_08>
1731 static void construct(
1732 TARGET_TYPE *address,
1733 const ALLOCATOR& allocator,
1735 ARG1& argument1,
1736 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1737 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1738 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1739 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1740 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1741 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1742 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1743 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08);
1744#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 8
1745
1746#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 9
1747 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1748 class ARGS_02,
1749 class ARGS_03,
1750 class ARGS_04,
1751 class ARGS_05,
1752 class ARGS_06,
1753 class ARGS_07,
1754 class ARGS_08,
1755 class ARGS_09>
1756 static void construct(
1757 TARGET_TYPE *address,
1758 const ALLOCATOR& allocator,
1760 ARG1& argument1,
1761 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1762 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1763 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1764 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1765 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1766 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1767 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1768 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1769 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09);
1770#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 9
1771
1772#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 10
1773 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1774 class ARGS_02,
1775 class ARGS_03,
1776 class ARGS_04,
1777 class ARGS_05,
1778 class ARGS_06,
1779 class ARGS_07,
1780 class ARGS_08,
1781 class ARGS_09,
1782 class ARGS_10>
1783 static void construct(
1784 TARGET_TYPE *address,
1785 const ALLOCATOR& allocator,
1787 ARG1& argument1,
1788 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1789 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1790 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1791 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1792 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1793 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1794 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1795 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1796 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
1797 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10);
1798#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 10
1799
1800#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 11
1801 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1802 class ARGS_02,
1803 class ARGS_03,
1804 class ARGS_04,
1805 class ARGS_05,
1806 class ARGS_06,
1807 class ARGS_07,
1808 class ARGS_08,
1809 class ARGS_09,
1810 class ARGS_10,
1811 class ARGS_11>
1812 static void construct(
1813 TARGET_TYPE *address,
1814 const ALLOCATOR& allocator,
1816 ARG1& argument1,
1817 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1818 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1819 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1820 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1821 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1822 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1823 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1824 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1825 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
1826 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
1827 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11);
1828#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 11
1829
1830#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 12
1831 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1832 class ARGS_02,
1833 class ARGS_03,
1834 class ARGS_04,
1835 class ARGS_05,
1836 class ARGS_06,
1837 class ARGS_07,
1838 class ARGS_08,
1839 class ARGS_09,
1840 class ARGS_10,
1841 class ARGS_11,
1842 class ARGS_12>
1843 static void construct(
1844 TARGET_TYPE *address,
1845 const ALLOCATOR& allocator,
1847 ARG1& argument1,
1848 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1849 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1850 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1851 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1852 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1853 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1854 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1855 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1856 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
1857 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
1858 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
1859 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12);
1860#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 12
1861
1862#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 13
1863 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1864 class ARGS_02,
1865 class ARGS_03,
1866 class ARGS_04,
1867 class ARGS_05,
1868 class ARGS_06,
1869 class ARGS_07,
1870 class ARGS_08,
1871 class ARGS_09,
1872 class ARGS_10,
1873 class ARGS_11,
1874 class ARGS_12,
1875 class ARGS_13>
1876 static void construct(
1877 TARGET_TYPE *address,
1878 const ALLOCATOR& allocator,
1880 ARG1& argument1,
1881 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1882 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1883 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1884 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1885 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1886 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1887 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1888 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1889 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
1890 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
1891 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
1892 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
1893 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13);
1894#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 13
1895
1896#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 0
1897 template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
1898 static void construct(
1899 TARGET_TYPE *address,
1900 const ALLOCATOR& allocator,
1902 ARG1& argument1);
1903#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 0
1904
1905#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 1
1906 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
1907 static void construct(
1908 TARGET_TYPE *address,
1909 const ALLOCATOR& allocator,
1911 ARG1& argument1,
1912 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01);
1913#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 1
1914
1915#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 2
1916 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1917 class ARGS_02>
1918 static void construct(
1919 TARGET_TYPE *address,
1920 const ALLOCATOR& allocator,
1922 ARG1& argument1,
1923 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1924 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02);
1925#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 2
1926
1927#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 3
1928 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1929 class ARGS_02,
1930 class ARGS_03>
1931 static void construct(
1932 TARGET_TYPE *address,
1933 const ALLOCATOR& allocator,
1935 ARG1& argument1,
1936 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1937 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1938 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03);
1939#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 3
1940
1941#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 4
1942 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1943 class ARGS_02,
1944 class ARGS_03,
1945 class ARGS_04>
1946 static void construct(
1947 TARGET_TYPE *address,
1948 const ALLOCATOR& allocator,
1950 ARG1& argument1,
1951 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1952 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1953 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1954 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04);
1955#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 4
1956
1957#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 5
1958 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1959 class ARGS_02,
1960 class ARGS_03,
1961 class ARGS_04,
1962 class ARGS_05>
1963 static void construct(
1964 TARGET_TYPE *address,
1965 const ALLOCATOR& allocator,
1967 ARG1& argument1,
1968 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1969 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1970 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1971 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1972 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05);
1973#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 5
1974
1975#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 6
1976 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1977 class ARGS_02,
1978 class ARGS_03,
1979 class ARGS_04,
1980 class ARGS_05,
1981 class ARGS_06>
1982 static void construct(
1983 TARGET_TYPE *address,
1984 const ALLOCATOR& allocator,
1986 ARG1& argument1,
1987 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1988 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1989 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1990 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1991 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1992 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06);
1993#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 6
1994
1995#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 7
1996 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
1997 class ARGS_02,
1998 class ARGS_03,
1999 class ARGS_04,
2000 class ARGS_05,
2001 class ARGS_06,
2002 class ARGS_07>
2003 static void construct(
2004 TARGET_TYPE *address,
2005 const ALLOCATOR& allocator,
2007 ARG1& argument1,
2008 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2009 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2010 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2011 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2012 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2013 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2014 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07);
2015#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 7
2016
2017#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 8
2018 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2019 class ARGS_02,
2020 class ARGS_03,
2021 class ARGS_04,
2022 class ARGS_05,
2023 class ARGS_06,
2024 class ARGS_07,
2025 class ARGS_08>
2026 static void construct(
2027 TARGET_TYPE *address,
2028 const ALLOCATOR& allocator,
2030 ARG1& argument1,
2031 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2032 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2033 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2034 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2035 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2036 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2037 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2038 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08);
2039#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 8
2040
2041#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 9
2042 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2043 class ARGS_02,
2044 class ARGS_03,
2045 class ARGS_04,
2046 class ARGS_05,
2047 class ARGS_06,
2048 class ARGS_07,
2049 class ARGS_08,
2050 class ARGS_09>
2051 static void construct(
2052 TARGET_TYPE *address,
2053 const ALLOCATOR& allocator,
2055 ARG1& argument1,
2056 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2057 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2058 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2059 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2060 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2061 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2062 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2063 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2064 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09);
2065#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 9
2066
2067#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 10
2068 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2069 class ARGS_02,
2070 class ARGS_03,
2071 class ARGS_04,
2072 class ARGS_05,
2073 class ARGS_06,
2074 class ARGS_07,
2075 class ARGS_08,
2076 class ARGS_09,
2077 class ARGS_10>
2078 static void construct(
2079 TARGET_TYPE *address,
2080 const ALLOCATOR& allocator,
2082 ARG1& argument1,
2083 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2084 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2085 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2086 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2087 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2088 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2089 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2090 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2091 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
2092 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10);
2093#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 10
2094
2095#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 11
2096 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2097 class ARGS_02,
2098 class ARGS_03,
2099 class ARGS_04,
2100 class ARGS_05,
2101 class ARGS_06,
2102 class ARGS_07,
2103 class ARGS_08,
2104 class ARGS_09,
2105 class ARGS_10,
2106 class ARGS_11>
2107 static void construct(
2108 TARGET_TYPE *address,
2109 const ALLOCATOR& allocator,
2111 ARG1& argument1,
2112 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2113 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2114 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2115 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2116 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2117 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2118 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2119 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2120 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
2121 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
2122 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11);
2123#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 11
2124
2125#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 12
2126 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2127 class ARGS_02,
2128 class ARGS_03,
2129 class ARGS_04,
2130 class ARGS_05,
2131 class ARGS_06,
2132 class ARGS_07,
2133 class ARGS_08,
2134 class ARGS_09,
2135 class ARGS_10,
2136 class ARGS_11,
2137 class ARGS_12>
2138 static void construct(
2139 TARGET_TYPE *address,
2140 const ALLOCATOR& allocator,
2142 ARG1& argument1,
2143 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2144 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2145 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2146 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2147 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2148 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2149 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2150 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2151 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
2152 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
2153 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
2154 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12);
2155#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 12
2156
2157#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 13
2158 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2159 class ARGS_02,
2160 class ARGS_03,
2161 class ARGS_04,
2162 class ARGS_05,
2163 class ARGS_06,
2164 class ARGS_07,
2165 class ARGS_08,
2166 class ARGS_09,
2167 class ARGS_10,
2168 class ARGS_11,
2169 class ARGS_12,
2170 class ARGS_13>
2171 static void construct(
2172 TARGET_TYPE *address,
2173 const ALLOCATOR& allocator,
2175 ARG1& argument1,
2176 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2177 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2178 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2179 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2180 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2181 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2182 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2183 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2184 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
2185 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
2186 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
2187 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
2188 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13);
2189#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 13
2190
2191# endif
2192
2193#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 0
2194 template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
2195 static void construct(
2196 TARGET_TYPE *address,
2197 const ALLOCATOR& allocator,
2199 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1);
2200#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 0
2201
2202#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 1
2203 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
2204 static void construct(
2205 TARGET_TYPE *address,
2206 const ALLOCATOR& allocator,
2208 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2209 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01);
2210#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 1
2211
2212#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 2
2213 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2214 class ARGS_02>
2215 static void construct(
2216 TARGET_TYPE *address,
2217 const ALLOCATOR& allocator,
2219 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2220 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2221 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02);
2222#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 2
2223
2224#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 3
2225 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2226 class ARGS_02,
2227 class ARGS_03>
2228 static void construct(
2229 TARGET_TYPE *address,
2230 const ALLOCATOR& allocator,
2232 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2233 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2234 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2235 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03);
2236#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 3
2237
2238#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 4
2239 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2240 class ARGS_02,
2241 class ARGS_03,
2242 class ARGS_04>
2243 static void construct(
2244 TARGET_TYPE *address,
2245 const ALLOCATOR& allocator,
2247 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2248 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2249 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2250 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2251 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04);
2252#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 4
2253
2254#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 5
2255 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2256 class ARGS_02,
2257 class ARGS_03,
2258 class ARGS_04,
2259 class ARGS_05>
2260 static void construct(
2261 TARGET_TYPE *address,
2262 const ALLOCATOR& allocator,
2264 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2265 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2266 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2267 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2268 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2269 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05);
2270#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 5
2271
2272#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 6
2273 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2274 class ARGS_02,
2275 class ARGS_03,
2276 class ARGS_04,
2277 class ARGS_05,
2278 class ARGS_06>
2279 static void construct(
2280 TARGET_TYPE *address,
2281 const ALLOCATOR& allocator,
2283 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2284 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2285 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2286 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2287 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2288 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2289 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06);
2290#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 6
2291
2292#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 7
2293 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2294 class ARGS_02,
2295 class ARGS_03,
2296 class ARGS_04,
2297 class ARGS_05,
2298 class ARGS_06,
2299 class ARGS_07>
2300 static void construct(
2301 TARGET_TYPE *address,
2302 const ALLOCATOR& allocator,
2304 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2305 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2306 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2307 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2308 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2309 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2310 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2311 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07);
2312#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 7
2313
2314#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 8
2315 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2316 class ARGS_02,
2317 class ARGS_03,
2318 class ARGS_04,
2319 class ARGS_05,
2320 class ARGS_06,
2321 class ARGS_07,
2322 class ARGS_08>
2323 static void construct(
2324 TARGET_TYPE *address,
2325 const ALLOCATOR& allocator,
2327 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2328 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2329 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2330 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2331 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2332 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2333 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2334 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2335 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08);
2336#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 8
2337
2338#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 9
2339 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2340 class ARGS_02,
2341 class ARGS_03,
2342 class ARGS_04,
2343 class ARGS_05,
2344 class ARGS_06,
2345 class ARGS_07,
2346 class ARGS_08,
2347 class ARGS_09>
2348 static void construct(
2349 TARGET_TYPE *address,
2350 const ALLOCATOR& allocator,
2352 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2353 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2354 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2355 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2356 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2357 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2358 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2359 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2360 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2361 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09);
2362#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 9
2363
2364#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 10
2365 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2366 class ARGS_02,
2367 class ARGS_03,
2368 class ARGS_04,
2369 class ARGS_05,
2370 class ARGS_06,
2371 class ARGS_07,
2372 class ARGS_08,
2373 class ARGS_09,
2374 class ARGS_10>
2375 static void construct(
2376 TARGET_TYPE *address,
2377 const ALLOCATOR& allocator,
2379 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2380 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2381 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2382 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2383 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2384 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2385 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2386 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2387 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2388 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
2389 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10);
2390#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 10
2391
2392#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 11
2393 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2394 class ARGS_02,
2395 class ARGS_03,
2396 class ARGS_04,
2397 class ARGS_05,
2398 class ARGS_06,
2399 class ARGS_07,
2400 class ARGS_08,
2401 class ARGS_09,
2402 class ARGS_10,
2403 class ARGS_11>
2404 static void construct(
2405 TARGET_TYPE *address,
2406 const ALLOCATOR& allocator,
2408 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2409 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2410 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2411 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2412 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2413 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2414 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2415 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2416 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2417 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
2418 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
2419 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11);
2420#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 11
2421
2422#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 12
2423 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2424 class ARGS_02,
2425 class ARGS_03,
2426 class ARGS_04,
2427 class ARGS_05,
2428 class ARGS_06,
2429 class ARGS_07,
2430 class ARGS_08,
2431 class ARGS_09,
2432 class ARGS_10,
2433 class ARGS_11,
2434 class ARGS_12>
2435 static void construct(
2436 TARGET_TYPE *address,
2437 const ALLOCATOR& allocator,
2439 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2440 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2441 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2442 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2443 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2444 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2445 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2446 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2447 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2448 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
2449 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
2450 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
2451 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12);
2452#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 12
2453
2454#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 13
2455 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2456 class ARGS_02,
2457 class ARGS_03,
2458 class ARGS_04,
2459 class ARGS_05,
2460 class ARGS_06,
2461 class ARGS_07,
2462 class ARGS_08,
2463 class ARGS_09,
2464 class ARGS_10,
2465 class ARGS_11,
2466 class ARGS_12,
2467 class ARGS_13>
2468 static void construct(
2469 TARGET_TYPE *address,
2470 const ALLOCATOR& allocator,
2472 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2473 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2474 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2475 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2476 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2477 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2478 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2479 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2480 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2481 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
2482 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
2483 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
2484 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
2485 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13);
2486#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 13
2487
2488#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 0
2489 template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
2490 static void construct(
2491 TARGET_TYPE *address,
2492 const ALLOCATOR& allocator,
2494 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1);
2495#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 0
2496
2497#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 1
2498 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
2499 static void construct(
2500 TARGET_TYPE *address,
2501 const ALLOCATOR& allocator,
2503 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2504 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01);
2505#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 1
2506
2507#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 2
2508 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2509 class ARGS_02>
2510 static void construct(
2511 TARGET_TYPE *address,
2512 const ALLOCATOR& allocator,
2514 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2515 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2516 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02);
2517#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 2
2518
2519#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 3
2520 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2521 class ARGS_02,
2522 class ARGS_03>
2523 static void construct(
2524 TARGET_TYPE *address,
2525 const ALLOCATOR& allocator,
2527 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2528 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2529 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2530 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03);
2531#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 3
2532
2533#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 4
2534 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2535 class ARGS_02,
2536 class ARGS_03,
2537 class ARGS_04>
2538 static void construct(
2539 TARGET_TYPE *address,
2540 const ALLOCATOR& allocator,
2542 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2543 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2544 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2545 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2546 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04);
2547#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 4
2548
2549#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 5
2550 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2551 class ARGS_02,
2552 class ARGS_03,
2553 class ARGS_04,
2554 class ARGS_05>
2555 static void construct(
2556 TARGET_TYPE *address,
2557 const ALLOCATOR& allocator,
2559 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2560 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2561 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2562 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2563 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2564 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05);
2565#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 5
2566
2567#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 6
2568 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2569 class ARGS_02,
2570 class ARGS_03,
2571 class ARGS_04,
2572 class ARGS_05,
2573 class ARGS_06>
2574 static void construct(
2575 TARGET_TYPE *address,
2576 const ALLOCATOR& allocator,
2578 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2579 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2580 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2581 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2582 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2583 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2584 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06);
2585#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 6
2586
2587#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 7
2588 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2589 class ARGS_02,
2590 class ARGS_03,
2591 class ARGS_04,
2592 class ARGS_05,
2593 class ARGS_06,
2594 class ARGS_07>
2595 static void construct(
2596 TARGET_TYPE *address,
2597 const ALLOCATOR& allocator,
2599 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2600 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2601 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2602 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2603 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2604 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2605 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2606 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07);
2607#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 7
2608
2609#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 8
2610 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2611 class ARGS_02,
2612 class ARGS_03,
2613 class ARGS_04,
2614 class ARGS_05,
2615 class ARGS_06,
2616 class ARGS_07,
2617 class ARGS_08>
2618 static void construct(
2619 TARGET_TYPE *address,
2620 const ALLOCATOR& allocator,
2622 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2623 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2624 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2625 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2626 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2627 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2628 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2629 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2630 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08);
2631#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 8
2632
2633#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 9
2634 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2635 class ARGS_02,
2636 class ARGS_03,
2637 class ARGS_04,
2638 class ARGS_05,
2639 class ARGS_06,
2640 class ARGS_07,
2641 class ARGS_08,
2642 class ARGS_09>
2643 static void construct(
2644 TARGET_TYPE *address,
2645 const ALLOCATOR& allocator,
2647 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2648 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2649 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2650 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2651 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2652 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2653 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2654 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2655 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2656 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09);
2657#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 9
2658
2659#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 10
2660 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2661 class ARGS_02,
2662 class ARGS_03,
2663 class ARGS_04,
2664 class ARGS_05,
2665 class ARGS_06,
2666 class ARGS_07,
2667 class ARGS_08,
2668 class ARGS_09,
2669 class ARGS_10>
2670 static void construct(
2671 TARGET_TYPE *address,
2672 const ALLOCATOR& allocator,
2674 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2675 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2676 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2677 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2678 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2679 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2680 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2681 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2682 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2683 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
2684 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10);
2685#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 10
2686
2687#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 11
2688 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2689 class ARGS_02,
2690 class ARGS_03,
2691 class ARGS_04,
2692 class ARGS_05,
2693 class ARGS_06,
2694 class ARGS_07,
2695 class ARGS_08,
2696 class ARGS_09,
2697 class ARGS_10,
2698 class ARGS_11>
2699 static void construct(
2700 TARGET_TYPE *address,
2701 const ALLOCATOR& allocator,
2703 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2704 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2705 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2706 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2707 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2708 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2709 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2710 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2711 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2712 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
2713 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
2714 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11);
2715#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 11
2716
2717#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 12
2718 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2719 class ARGS_02,
2720 class ARGS_03,
2721 class ARGS_04,
2722 class ARGS_05,
2723 class ARGS_06,
2724 class ARGS_07,
2725 class ARGS_08,
2726 class ARGS_09,
2727 class ARGS_10,
2728 class ARGS_11,
2729 class ARGS_12>
2730 static void construct(
2731 TARGET_TYPE *address,
2732 const ALLOCATOR& allocator,
2734 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2735 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2736 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2737 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2738 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2739 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2740 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2741 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2742 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2743 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
2744 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
2745 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
2746 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12);
2747#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 12
2748
2749#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 13
2750 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2751 class ARGS_02,
2752 class ARGS_03,
2753 class ARGS_04,
2754 class ARGS_05,
2755 class ARGS_06,
2756 class ARGS_07,
2757 class ARGS_08,
2758 class ARGS_09,
2759 class ARGS_10,
2760 class ARGS_11,
2761 class ARGS_12,
2762 class ARGS_13>
2763 static void construct(
2764 TARGET_TYPE *address,
2765 const ALLOCATOR& allocator,
2767 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2768 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2769 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2770 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2771 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2772 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2773 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2774 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2775 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2776 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
2777 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
2778 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
2779 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
2780 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13);
2781#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 13
2782
2783#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 0
2784 template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
2785 static void construct(
2786 TARGET_TYPE *address,
2787 const ALLOCATOR& allocator,
2789 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1);
2790#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 0
2791
2792#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 1
2793 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
2794 static void construct(
2795 TARGET_TYPE *address,
2796 const ALLOCATOR& allocator,
2798 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2799 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01);
2800#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 1
2801
2802#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 2
2803 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2804 class ARGS_02>
2805 static void construct(
2806 TARGET_TYPE *address,
2807 const ALLOCATOR& allocator,
2809 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2810 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2811 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02);
2812#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 2
2813
2814#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 3
2815 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2816 class ARGS_02,
2817 class ARGS_03>
2818 static void construct(
2819 TARGET_TYPE *address,
2820 const ALLOCATOR& allocator,
2822 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2823 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2824 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2825 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03);
2826#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 3
2827
2828#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 4
2829 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2830 class ARGS_02,
2831 class ARGS_03,
2832 class ARGS_04>
2833 static void construct(
2834 TARGET_TYPE *address,
2835 const ALLOCATOR& allocator,
2837 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2838 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2839 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2840 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2841 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04);
2842#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 4
2843
2844#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 5
2845 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2846 class ARGS_02,
2847 class ARGS_03,
2848 class ARGS_04,
2849 class ARGS_05>
2850 static void construct(
2851 TARGET_TYPE *address,
2852 const ALLOCATOR& allocator,
2854 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2855 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2856 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2857 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2858 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2859 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05);
2860#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 5
2861
2862#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 6
2863 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2864 class ARGS_02,
2865 class ARGS_03,
2866 class ARGS_04,
2867 class ARGS_05,
2868 class ARGS_06>
2869 static void construct(
2870 TARGET_TYPE *address,
2871 const ALLOCATOR& allocator,
2873 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2874 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2875 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2876 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2877 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2878 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2879 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06);
2880#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 6
2881
2882#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 7
2883 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2884 class ARGS_02,
2885 class ARGS_03,
2886 class ARGS_04,
2887 class ARGS_05,
2888 class ARGS_06,
2889 class ARGS_07>
2890 static void construct(
2891 TARGET_TYPE *address,
2892 const ALLOCATOR& allocator,
2894 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2895 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2896 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2897 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2898 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2899 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2900 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2901 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07);
2902#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 7
2903
2904#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 8
2905 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2906 class ARGS_02,
2907 class ARGS_03,
2908 class ARGS_04,
2909 class ARGS_05,
2910 class ARGS_06,
2911 class ARGS_07,
2912 class ARGS_08>
2913 static void construct(
2914 TARGET_TYPE *address,
2915 const ALLOCATOR& allocator,
2917 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2918 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2919 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2920 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2921 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2922 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2923 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2924 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2925 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08);
2926#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 8
2927
2928#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 9
2929 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2930 class ARGS_02,
2931 class ARGS_03,
2932 class ARGS_04,
2933 class ARGS_05,
2934 class ARGS_06,
2935 class ARGS_07,
2936 class ARGS_08,
2937 class ARGS_09>
2938 static void construct(
2939 TARGET_TYPE *address,
2940 const ALLOCATOR& allocator,
2942 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2943 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2944 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2945 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2946 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2947 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2948 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2949 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2950 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2951 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09);
2952#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 9
2953
2954#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 10
2955 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2956 class ARGS_02,
2957 class ARGS_03,
2958 class ARGS_04,
2959 class ARGS_05,
2960 class ARGS_06,
2961 class ARGS_07,
2962 class ARGS_08,
2963 class ARGS_09,
2964 class ARGS_10>
2965 static void construct(
2966 TARGET_TYPE *address,
2967 const ALLOCATOR& allocator,
2969 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2970 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2971 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2972 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2973 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2974 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2975 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2976 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2977 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2978 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
2979 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10);
2980#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 10
2981
2982#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 11
2983 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
2984 class ARGS_02,
2985 class ARGS_03,
2986 class ARGS_04,
2987 class ARGS_05,
2988 class ARGS_06,
2989 class ARGS_07,
2990 class ARGS_08,
2991 class ARGS_09,
2992 class ARGS_10,
2993 class ARGS_11>
2994 static void construct(
2995 TARGET_TYPE *address,
2996 const ALLOCATOR& allocator,
2998 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2999 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3000 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3001 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3002 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3003 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3004 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3005 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
3006 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
3007 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
3008 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
3009 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11);
3010#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 11
3011
3012#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 12
3013 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3014 class ARGS_02,
3015 class ARGS_03,
3016 class ARGS_04,
3017 class ARGS_05,
3018 class ARGS_06,
3019 class ARGS_07,
3020 class ARGS_08,
3021 class ARGS_09,
3022 class ARGS_10,
3023 class ARGS_11,
3024 class ARGS_12>
3025 static void construct(
3026 TARGET_TYPE *address,
3027 const ALLOCATOR& allocator,
3029 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
3030 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3031 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3032 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3033 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3034 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3035 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3036 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
3037 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
3038 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
3039 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
3040 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
3041 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12);
3042#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 12
3043
3044#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 13
3045 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3046 class ARGS_02,
3047 class ARGS_03,
3048 class ARGS_04,
3049 class ARGS_05,
3050 class ARGS_06,
3051 class ARGS_07,
3052 class ARGS_08,
3053 class ARGS_09,
3054 class ARGS_10,
3055 class ARGS_11,
3056 class ARGS_12,
3057 class ARGS_13>
3058 static void construct(
3059 TARGET_TYPE *address,
3060 const ALLOCATOR& allocator,
3062 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
3063 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3064 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3065 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3066 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3067 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3068 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3069 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
3070 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
3071 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
3072 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
3073 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
3074 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
3075 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13);
3076#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_C >= 13
3077
3078#else
3079// The generated code below is a workaround for the absence of perfect
3080// forwarding in some compilers.
3081# ifndef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
3082 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
3083 static void construct(
3084 TARGET_TYPE *address,
3085 const ALLOCATOR& allocator,
3087 ARG1& argument1,
3088 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments);
3089 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
3090 static void construct(
3091 TARGET_TYPE *address,
3092 const ALLOCATOR& allocator,
3094 ARG1& argument1,
3095 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments);
3096 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
3097 static void construct(
3098 TARGET_TYPE *address,
3099 const ALLOCATOR& allocator,
3101 ARG1& argument1,
3102 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments);
3103# endif
3104
3105 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
3106 static void construct(
3107 TARGET_TYPE *address,
3108 const ALLOCATOR& allocator,
3110 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
3111 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments);
3112 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
3113 static void construct(
3114 TARGET_TYPE *address,
3115 const ALLOCATOR& allocator,
3117 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
3118 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments);
3119 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
3120 static void construct(
3121 TARGET_TYPE *address,
3122 const ALLOCATOR& allocator,
3124 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
3125 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments);
3126// }}} END GENERATED CODE
3127#endif
3128
3129 /// Move the bitwise movable object of (template parameter)
3130 /// `TARGET_TYPE` at the specified `original` address to the specified
3131 /// `address`, eliding the call to the move constructor and destructor
3132 /// in favor of performing a bitwise copy. The specified `allocator`
3133 /// argument is ignored (except possibly for precondition checks).
3134 ///
3135 /// \pre The behavior is undefined if `original` uses an allocator other than
3136 /// `allocator` to supply memory.
3137 template <class TARGET_TYPE, class ALLOCATOR>
3138 static void destructiveMove(
3139 TARGET_TYPE *address,
3140 const ALLOCATOR& allocator,
3142 TARGET_TYPE *original);
3143
3144 /// Create an object of (template parameter) `TARGET_TYPE` at the
3145 /// specified `address` by move construction from the specified
3146 /// `original` object, then destroy `original`. The specified
3147 /// `allocator` is unused (except possibly in precondition checks). The
3148 /// constructed object will have the same allocator (if any) as
3149 /// `original`. If the move constructor throws an exception, the memory
3150 /// at `address` is left in an uninitialized state and `original` is left in a valid but unspecified state.
3151 ///
3152 /// \pre The behavior is undefined if
3153 /// `original` uses an allocator other than `allocator` to supply memory.
3154 ///
3155 /// \note Note that, if `original` points to an object of a type
3156 /// derived from `TARGET_TYPE` (i.e., a slicing move) where
3157 /// `TARGET_TYPE` has a non-`virtual` destructor, then `original` will
3158 /// be only partially destroyed.
3159 template <class TARGET_TYPE, class ALLOCATOR>
3160 static void destructiveMove(
3161 TARGET_TYPE *address,
3162 const ALLOCATOR& allocator,
3164 TARGET_TYPE *original);
3165
3166#if defined(BSLS_COMPILERFEATURES_GUARANTEED_COPY_ELISION)
3167 /// Return, by value, a default-constructed object of (template
3168 /// parameter) `TARGET_TYPE`, passing the specified `allocator` to the
3169 /// constructor using the leading or trailing allocator convention,
3170 /// according to the specified `integral_constant` tag, or ignoring
3171 /// `allocator` in the `e_NIL_TRAITS` case.
3172 template <class TARGET_TYPE, class ALLOCATOR>
3173 static TARGET_TYPE make(
3174 const ALLOCATOR& allocator,
3176 template <class TARGET_TYPE, class ALLOCATOR>
3177 static TARGET_TYPE make(
3178 const ALLOCATOR& allocator,
3180 template <class TARGET_TYPE, class ALLOCATOR>
3181 static TARGET_TYPE make(
3182 const ALLOCATOR& allocator,
3184
3185#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
3186// {{{ BEGIN GENERATED CODE
3187// Command line: sim_cpp11_features.pl bslma_constructionutil.h
3188#ifndef BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT
3189#define BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT 13
3190#endif
3191#ifndef BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D
3192#define BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT
3193#endif
3194# ifndef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
3195#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 0
3196 template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
3197 static TARGET_TYPE make(
3198 const ALLOCATOR& allocator,
3200 ARG1& argument1);
3201#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 0
3202
3203#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 1
3204 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
3205 static TARGET_TYPE make(
3206 const ALLOCATOR& allocator,
3208 ARG1& argument1,
3209 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01);
3210#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 1
3211
3212#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 2
3213 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3214 class ARGS_02>
3215 static TARGET_TYPE make(
3216 const ALLOCATOR& allocator,
3218 ARG1& argument1,
3219 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3220 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02);
3221#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 2
3222
3223#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 3
3224 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3225 class ARGS_02,
3226 class ARGS_03>
3227 static TARGET_TYPE make(
3228 const ALLOCATOR& allocator,
3230 ARG1& argument1,
3231 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3232 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3233 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03);
3234#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 3
3235
3236#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 4
3237 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3238 class ARGS_02,
3239 class ARGS_03,
3240 class ARGS_04>
3241 static TARGET_TYPE make(
3242 const ALLOCATOR& allocator,
3244 ARG1& argument1,
3245 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3246 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3247 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3248 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04);
3249#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 4
3250
3251#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 5
3252 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3253 class ARGS_02,
3254 class ARGS_03,
3255 class ARGS_04,
3256 class ARGS_05>
3257 static TARGET_TYPE make(
3258 const ALLOCATOR& allocator,
3260 ARG1& argument1,
3261 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3262 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3263 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3264 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3265 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05);
3266#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 5
3267
3268#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 6
3269 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3270 class ARGS_02,
3271 class ARGS_03,
3272 class ARGS_04,
3273 class ARGS_05,
3274 class ARGS_06>
3275 static TARGET_TYPE make(
3276 const ALLOCATOR& allocator,
3278 ARG1& argument1,
3279 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3280 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3281 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3282 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3283 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3284 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06);
3285#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 6
3286
3287#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 7
3288 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3289 class ARGS_02,
3290 class ARGS_03,
3291 class ARGS_04,
3292 class ARGS_05,
3293 class ARGS_06,
3294 class ARGS_07>
3295 static TARGET_TYPE make(
3296 const ALLOCATOR& allocator,
3298 ARG1& argument1,
3299 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3300 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3301 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3302 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3303 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3304 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3305 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07);
3306#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 7
3307
3308#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 8
3309 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3310 class ARGS_02,
3311 class ARGS_03,
3312 class ARGS_04,
3313 class ARGS_05,
3314 class ARGS_06,
3315 class ARGS_07,
3316 class ARGS_08>
3317 static TARGET_TYPE make(
3318 const ALLOCATOR& allocator,
3320 ARG1& argument1,
3321 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3322 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3323 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3324 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3325 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3326 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3327 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
3328 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08);
3329#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 8
3330
3331#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 9
3332 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3333 class ARGS_02,
3334 class ARGS_03,
3335 class ARGS_04,
3336 class ARGS_05,
3337 class ARGS_06,
3338 class ARGS_07,
3339 class ARGS_08,
3340 class ARGS_09>
3341 static TARGET_TYPE make(
3342 const ALLOCATOR& allocator,
3344 ARG1& argument1,
3345 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3346 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3347 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3348 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3349 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3350 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3351 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
3352 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
3353 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09);
3354#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 9
3355
3356#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 10
3357 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3358 class ARGS_02,
3359 class ARGS_03,
3360 class ARGS_04,
3361 class ARGS_05,
3362 class ARGS_06,
3363 class ARGS_07,
3364 class ARGS_08,
3365 class ARGS_09,
3366 class ARGS_10>
3367 static TARGET_TYPE make(
3368 const ALLOCATOR& allocator,
3370 ARG1& argument1,
3371 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3372 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3373 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3374 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3375 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3376 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3377 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
3378 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
3379 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
3380 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10);
3381#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 10
3382
3383#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 11
3384 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3385 class ARGS_02,
3386 class ARGS_03,
3387 class ARGS_04,
3388 class ARGS_05,
3389 class ARGS_06,
3390 class ARGS_07,
3391 class ARGS_08,
3392 class ARGS_09,
3393 class ARGS_10,
3394 class ARGS_11>
3395 static TARGET_TYPE make(
3396 const ALLOCATOR& allocator,
3398 ARG1& argument1,
3399 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3400 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3401 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3402 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3403 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3404 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3405 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
3406 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
3407 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
3408 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
3409 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11);
3410#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 11
3411
3412#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 12
3413 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3414 class ARGS_02,
3415 class ARGS_03,
3416 class ARGS_04,
3417 class ARGS_05,
3418 class ARGS_06,
3419 class ARGS_07,
3420 class ARGS_08,
3421 class ARGS_09,
3422 class ARGS_10,
3423 class ARGS_11,
3424 class ARGS_12>
3425 static TARGET_TYPE make(
3426 const ALLOCATOR& allocator,
3428 ARG1& argument1,
3429 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3430 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3431 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3432 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3433 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3434 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3435 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
3436 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
3437 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
3438 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
3439 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
3440 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12);
3441#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 12
3442
3443#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 13
3444 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3445 class ARGS_02,
3446 class ARGS_03,
3447 class ARGS_04,
3448 class ARGS_05,
3449 class ARGS_06,
3450 class ARGS_07,
3451 class ARGS_08,
3452 class ARGS_09,
3453 class ARGS_10,
3454 class ARGS_11,
3455 class ARGS_12,
3456 class ARGS_13>
3457 static TARGET_TYPE make(
3458 const ALLOCATOR& allocator,
3460 ARG1& argument1,
3461 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3462 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3463 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3464 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3465 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3466 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3467 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
3468 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
3469 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
3470 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
3471 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
3472 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
3473 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13);
3474#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 13
3475
3476#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 0
3477 template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
3478 static TARGET_TYPE make(
3479 const ALLOCATOR& allocator,
3481 ARG1& argument1);
3482#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 0
3483
3484#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 1
3485 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
3486 static TARGET_TYPE make(
3487 const ALLOCATOR& allocator,
3489 ARG1& argument1,
3490 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01);
3491#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 1
3492
3493#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 2
3494 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3495 class ARGS_02>
3496 static TARGET_TYPE make(
3497 const ALLOCATOR& allocator,
3499 ARG1& argument1,
3500 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3501 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02);
3502#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 2
3503
3504#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 3
3505 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3506 class ARGS_02,
3507 class ARGS_03>
3508 static TARGET_TYPE make(
3509 const ALLOCATOR& allocator,
3511 ARG1& argument1,
3512 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3513 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3514 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03);
3515#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 3
3516
3517#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 4
3518 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3519 class ARGS_02,
3520 class ARGS_03,
3521 class ARGS_04>
3522 static TARGET_TYPE make(
3523 const ALLOCATOR& allocator,
3525 ARG1& argument1,
3526 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3527 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3528 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3529 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04);
3530#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 4
3531
3532#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 5
3533 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3534 class ARGS_02,
3535 class ARGS_03,
3536 class ARGS_04,
3537 class ARGS_05>
3538 static TARGET_TYPE make(
3539 const ALLOCATOR& allocator,
3541 ARG1& argument1,
3542 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3543 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3544 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3545 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3546 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05);
3547#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 5
3548
3549#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 6
3550 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3551 class ARGS_02,
3552 class ARGS_03,
3553 class ARGS_04,
3554 class ARGS_05,
3555 class ARGS_06>
3556 static TARGET_TYPE make(
3557 const ALLOCATOR& allocator,
3559 ARG1& argument1,
3560 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3561 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3562 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3563 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3564 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3565 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06);
3566#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 6
3567
3568#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 7
3569 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3570 class ARGS_02,
3571 class ARGS_03,
3572 class ARGS_04,
3573 class ARGS_05,
3574 class ARGS_06,
3575 class ARGS_07>
3576 static TARGET_TYPE make(
3577 const ALLOCATOR& allocator,
3579 ARG1& argument1,
3580 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3581 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3582 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3583 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3584 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3585 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3586 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07);
3587#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 7
3588
3589#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 8
3590 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3591 class ARGS_02,
3592 class ARGS_03,
3593 class ARGS_04,
3594 class ARGS_05,
3595 class ARGS_06,
3596 class ARGS_07,
3597 class ARGS_08>
3598 static TARGET_TYPE make(
3599 const ALLOCATOR& allocator,
3601 ARG1& argument1,
3602 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3603 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3604 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3605 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3606 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3607 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3608 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
3609 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08);
3610#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 8
3611
3612#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 9
3613 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3614 class ARGS_02,
3615 class ARGS_03,
3616 class ARGS_04,
3617 class ARGS_05,
3618 class ARGS_06,
3619 class ARGS_07,
3620 class ARGS_08,
3621 class ARGS_09>
3622 static TARGET_TYPE make(
3623 const ALLOCATOR& allocator,
3625 ARG1& argument1,
3626 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3627 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3628 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3629 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3630 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3631 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3632 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
3633 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
3634 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09);
3635#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 9
3636
3637#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 10
3638 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3639 class ARGS_02,
3640 class ARGS_03,
3641 class ARGS_04,
3642 class ARGS_05,
3643 class ARGS_06,
3644 class ARGS_07,
3645 class ARGS_08,
3646 class ARGS_09,
3647 class ARGS_10>
3648 static TARGET_TYPE make(
3649 const ALLOCATOR& allocator,
3651 ARG1& argument1,
3652 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3653 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3654 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3655 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3656 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3657 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3658 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
3659 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
3660 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
3661 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10);
3662#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 10
3663
3664#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 11
3665 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3666 class ARGS_02,
3667 class ARGS_03,
3668 class ARGS_04,
3669 class ARGS_05,
3670 class ARGS_06,
3671 class ARGS_07,
3672 class ARGS_08,
3673 class ARGS_09,
3674 class ARGS_10,
3675 class ARGS_11>
3676 static TARGET_TYPE make(
3677 const ALLOCATOR& allocator,
3679 ARG1& argument1,
3680 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3681 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3682 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3683 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3684 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3685 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3686 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
3687 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
3688 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
3689 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
3690 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11);
3691#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 11
3692
3693#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 12
3694 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3695 class ARGS_02,
3696 class ARGS_03,
3697 class ARGS_04,
3698 class ARGS_05,
3699 class ARGS_06,
3700 class ARGS_07,
3701 class ARGS_08,
3702 class ARGS_09,
3703 class ARGS_10,
3704 class ARGS_11,
3705 class ARGS_12>
3706 static TARGET_TYPE make(
3707 const ALLOCATOR& allocator,
3709 ARG1& argument1,
3710 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3711 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3712 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3713 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3714 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3715 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3716 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
3717 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
3718 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
3719 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
3720 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
3721 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12);
3722#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 12
3723
3724#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 13
3725 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3726 class ARGS_02,
3727 class ARGS_03,
3728 class ARGS_04,
3729 class ARGS_05,
3730 class ARGS_06,
3731 class ARGS_07,
3732 class ARGS_08,
3733 class ARGS_09,
3734 class ARGS_10,
3735 class ARGS_11,
3736 class ARGS_12,
3737 class ARGS_13>
3738 static TARGET_TYPE make(
3739 const ALLOCATOR& allocator,
3741 ARG1& argument1,
3742 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3743 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3744 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3745 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3746 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3747 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3748 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
3749 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
3750 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
3751 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
3752 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
3753 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
3754 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13);
3755#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 13
3756
3757#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 0
3758 template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
3759 static TARGET_TYPE make(
3760 const ALLOCATOR& allocator,
3762 ARG1& argument1);
3763#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 0
3764
3765#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 1
3766 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
3767 static TARGET_TYPE make(
3768 const ALLOCATOR& allocator,
3770 ARG1& argument1,
3771 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01);
3772#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 1
3773
3774#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 2
3775 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3776 class ARGS_02>
3777 static TARGET_TYPE make(
3778 const ALLOCATOR& allocator,
3780 ARG1& argument1,
3781 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3782 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02);
3783#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 2
3784
3785#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 3
3786 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3787 class ARGS_02,
3788 class ARGS_03>
3789 static TARGET_TYPE make(
3790 const ALLOCATOR& allocator,
3792 ARG1& argument1,
3793 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3794 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3795 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03);
3796#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 3
3797
3798#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 4
3799 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3800 class ARGS_02,
3801 class ARGS_03,
3802 class ARGS_04>
3803 static TARGET_TYPE make(
3804 const ALLOCATOR& allocator,
3806 ARG1& argument1,
3807 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3808 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3809 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3810 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04);
3811#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 4
3812
3813#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 5
3814 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3815 class ARGS_02,
3816 class ARGS_03,
3817 class ARGS_04,
3818 class ARGS_05>
3819 static TARGET_TYPE make(
3820 const ALLOCATOR& allocator,
3822 ARG1& argument1,
3823 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3824 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3825 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3826 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3827 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05);
3828#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 5
3829
3830#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 6
3831 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3832 class ARGS_02,
3833 class ARGS_03,
3834 class ARGS_04,
3835 class ARGS_05,
3836 class ARGS_06>
3837 static TARGET_TYPE make(
3838 const ALLOCATOR& allocator,
3840 ARG1& argument1,
3841 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3842 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3843 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3844 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3845 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3846 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06);
3847#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 6
3848
3849#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 7
3850 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3851 class ARGS_02,
3852 class ARGS_03,
3853 class ARGS_04,
3854 class ARGS_05,
3855 class ARGS_06,
3856 class ARGS_07>
3857 static TARGET_TYPE make(
3858 const ALLOCATOR& allocator,
3860 ARG1& argument1,
3861 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3862 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3863 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3864 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3865 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3866 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3867 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07);
3868#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 7
3869
3870#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 8
3871 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3872 class ARGS_02,
3873 class ARGS_03,
3874 class ARGS_04,
3875 class ARGS_05,
3876 class ARGS_06,
3877 class ARGS_07,
3878 class ARGS_08>
3879 static TARGET_TYPE make(
3880 const ALLOCATOR& allocator,
3882 ARG1& argument1,
3883 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3884 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3885 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3886 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3887 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3888 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3889 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
3890 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08);
3891#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 8
3892
3893#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 9
3894 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3895 class ARGS_02,
3896 class ARGS_03,
3897 class ARGS_04,
3898 class ARGS_05,
3899 class ARGS_06,
3900 class ARGS_07,
3901 class ARGS_08,
3902 class ARGS_09>
3903 static TARGET_TYPE make(
3904 const ALLOCATOR& allocator,
3906 ARG1& argument1,
3907 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3908 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3909 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3910 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3911 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3912 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3913 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
3914 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
3915 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09);
3916#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 9
3917
3918#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 10
3919 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3920 class ARGS_02,
3921 class ARGS_03,
3922 class ARGS_04,
3923 class ARGS_05,
3924 class ARGS_06,
3925 class ARGS_07,
3926 class ARGS_08,
3927 class ARGS_09,
3928 class ARGS_10>
3929 static TARGET_TYPE make(
3930 const ALLOCATOR& allocator,
3932 ARG1& argument1,
3933 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3934 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3935 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3936 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3937 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3938 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3939 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
3940 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
3941 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
3942 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10);
3943#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 10
3944
3945#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 11
3946 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3947 class ARGS_02,
3948 class ARGS_03,
3949 class ARGS_04,
3950 class ARGS_05,
3951 class ARGS_06,
3952 class ARGS_07,
3953 class ARGS_08,
3954 class ARGS_09,
3955 class ARGS_10,
3956 class ARGS_11>
3957 static TARGET_TYPE make(
3958 const ALLOCATOR& allocator,
3960 ARG1& argument1,
3961 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3962 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3963 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3964 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3965 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3966 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3967 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
3968 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
3969 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
3970 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
3971 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11);
3972#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 11
3973
3974#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 12
3975 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
3976 class ARGS_02,
3977 class ARGS_03,
3978 class ARGS_04,
3979 class ARGS_05,
3980 class ARGS_06,
3981 class ARGS_07,
3982 class ARGS_08,
3983 class ARGS_09,
3984 class ARGS_10,
3985 class ARGS_11,
3986 class ARGS_12>
3987 static TARGET_TYPE make(
3988 const ALLOCATOR& allocator,
3990 ARG1& argument1,
3991 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3992 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3993 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3994 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3995 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3996 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3997 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
3998 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
3999 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
4000 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
4001 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
4002 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12);
4003#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 12
4004
4005#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 13
4006 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4007 class ARGS_02,
4008 class ARGS_03,
4009 class ARGS_04,
4010 class ARGS_05,
4011 class ARGS_06,
4012 class ARGS_07,
4013 class ARGS_08,
4014 class ARGS_09,
4015 class ARGS_10,
4016 class ARGS_11,
4017 class ARGS_12,
4018 class ARGS_13>
4019 static TARGET_TYPE make(
4020 const ALLOCATOR& allocator,
4022 ARG1& argument1,
4023 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4024 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4025 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4026 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4027 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4028 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
4029 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
4030 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
4031 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
4032 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
4033 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
4034 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
4035 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13);
4036#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 13
4037
4038# endif
4039
4040#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 0
4041 template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
4042 static TARGET_TYPE make(
4043 const ALLOCATOR& allocator,
4045 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1);
4046#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 0
4047
4048#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 1
4049 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
4050 static TARGET_TYPE make(
4051 const ALLOCATOR& allocator,
4053 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4054 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01);
4055#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 1
4056
4057#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 2
4058 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4059 class ARGS_02>
4060 static TARGET_TYPE make(
4061 const ALLOCATOR& allocator,
4063 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4064 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4065 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02);
4066#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 2
4067
4068#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 3
4069 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4070 class ARGS_02,
4071 class ARGS_03>
4072 static TARGET_TYPE make(
4073 const ALLOCATOR& allocator,
4075 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4076 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4077 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4078 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03);
4079#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 3
4080
4081#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 4
4082 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4083 class ARGS_02,
4084 class ARGS_03,
4085 class ARGS_04>
4086 static TARGET_TYPE make(
4087 const ALLOCATOR& allocator,
4089 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4090 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4091 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4092 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4093 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04);
4094#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 4
4095
4096#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 5
4097 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4098 class ARGS_02,
4099 class ARGS_03,
4100 class ARGS_04,
4101 class ARGS_05>
4102 static TARGET_TYPE make(
4103 const ALLOCATOR& allocator,
4105 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4106 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4107 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4108 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4109 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4110 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05);
4111#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 5
4112
4113#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 6
4114 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4115 class ARGS_02,
4116 class ARGS_03,
4117 class ARGS_04,
4118 class ARGS_05,
4119 class ARGS_06>
4120 static TARGET_TYPE make(
4121 const ALLOCATOR& allocator,
4123 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4124 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4125 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4126 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4127 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4128 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4129 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06);
4130#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 6
4131
4132#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 7
4133 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4134 class ARGS_02,
4135 class ARGS_03,
4136 class ARGS_04,
4137 class ARGS_05,
4138 class ARGS_06,
4139 class ARGS_07>
4140 static TARGET_TYPE make(
4141 const ALLOCATOR& allocator,
4143 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4144 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4145 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4146 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4147 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4148 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4149 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
4150 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07);
4151#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 7
4152
4153#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 8
4154 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4155 class ARGS_02,
4156 class ARGS_03,
4157 class ARGS_04,
4158 class ARGS_05,
4159 class ARGS_06,
4160 class ARGS_07,
4161 class ARGS_08>
4162 static TARGET_TYPE make(
4163 const ALLOCATOR& allocator,
4165 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4166 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4167 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4168 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4169 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4170 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4171 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
4172 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
4173 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08);
4174#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 8
4175
4176#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 9
4177 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4178 class ARGS_02,
4179 class ARGS_03,
4180 class ARGS_04,
4181 class ARGS_05,
4182 class ARGS_06,
4183 class ARGS_07,
4184 class ARGS_08,
4185 class ARGS_09>
4186 static TARGET_TYPE make(
4187 const ALLOCATOR& allocator,
4189 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4190 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4191 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4192 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4193 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4194 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4195 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
4196 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
4197 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
4198 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09);
4199#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 9
4200
4201#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 10
4202 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4203 class ARGS_02,
4204 class ARGS_03,
4205 class ARGS_04,
4206 class ARGS_05,
4207 class ARGS_06,
4208 class ARGS_07,
4209 class ARGS_08,
4210 class ARGS_09,
4211 class ARGS_10>
4212 static TARGET_TYPE make(
4213 const ALLOCATOR& allocator,
4215 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4216 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4217 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4218 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4219 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4220 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4221 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
4222 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
4223 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
4224 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
4225 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10);
4226#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 10
4227
4228#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 11
4229 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4230 class ARGS_02,
4231 class ARGS_03,
4232 class ARGS_04,
4233 class ARGS_05,
4234 class ARGS_06,
4235 class ARGS_07,
4236 class ARGS_08,
4237 class ARGS_09,
4238 class ARGS_10,
4239 class ARGS_11>
4240 static TARGET_TYPE make(
4241 const ALLOCATOR& allocator,
4243 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4244 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4245 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4246 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4247 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4248 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4249 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
4250 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
4251 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
4252 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
4253 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
4254 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11);
4255#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 11
4256
4257#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 12
4258 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4259 class ARGS_02,
4260 class ARGS_03,
4261 class ARGS_04,
4262 class ARGS_05,
4263 class ARGS_06,
4264 class ARGS_07,
4265 class ARGS_08,
4266 class ARGS_09,
4267 class ARGS_10,
4268 class ARGS_11,
4269 class ARGS_12>
4270 static TARGET_TYPE make(
4271 const ALLOCATOR& allocator,
4273 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4274 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4275 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4276 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4277 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4278 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4279 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
4280 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
4281 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
4282 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
4283 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
4284 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
4285 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12);
4286#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 12
4287
4288#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 13
4289 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4290 class ARGS_02,
4291 class ARGS_03,
4292 class ARGS_04,
4293 class ARGS_05,
4294 class ARGS_06,
4295 class ARGS_07,
4296 class ARGS_08,
4297 class ARGS_09,
4298 class ARGS_10,
4299 class ARGS_11,
4300 class ARGS_12,
4301 class ARGS_13>
4302 static TARGET_TYPE make(
4303 const ALLOCATOR& allocator,
4305 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4306 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4307 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4308 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4309 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4310 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4311 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
4312 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
4313 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
4314 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
4315 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
4316 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
4317 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
4318 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13);
4319#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 13
4320
4321#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 0
4322 template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
4323 static TARGET_TYPE make(
4324 const ALLOCATOR& allocator,
4326 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1);
4327#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 0
4328
4329#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 1
4330 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
4331 static TARGET_TYPE make(
4332 const ALLOCATOR& allocator,
4334 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4335 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01);
4336#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 1
4337
4338#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 2
4339 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4340 class ARGS_02>
4341 static TARGET_TYPE make(
4342 const ALLOCATOR& allocator,
4344 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4345 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4346 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02);
4347#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 2
4348
4349#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 3
4350 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4351 class ARGS_02,
4352 class ARGS_03>
4353 static TARGET_TYPE make(
4354 const ALLOCATOR& allocator,
4356 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4357 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4358 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4359 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03);
4360#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 3
4361
4362#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 4
4363 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4364 class ARGS_02,
4365 class ARGS_03,
4366 class ARGS_04>
4367 static TARGET_TYPE make(
4368 const ALLOCATOR& allocator,
4370 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4371 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4372 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4373 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4374 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04);
4375#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 4
4376
4377#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 5
4378 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4379 class ARGS_02,
4380 class ARGS_03,
4381 class ARGS_04,
4382 class ARGS_05>
4383 static TARGET_TYPE make(
4384 const ALLOCATOR& allocator,
4386 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4387 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4388 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4389 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4390 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4391 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05);
4392#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 5
4393
4394#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 6
4395 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4396 class ARGS_02,
4397 class ARGS_03,
4398 class ARGS_04,
4399 class ARGS_05,
4400 class ARGS_06>
4401 static TARGET_TYPE make(
4402 const ALLOCATOR& allocator,
4404 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4405 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4406 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4407 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4408 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4409 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4410 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06);
4411#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 6
4412
4413#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 7
4414 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4415 class ARGS_02,
4416 class ARGS_03,
4417 class ARGS_04,
4418 class ARGS_05,
4419 class ARGS_06,
4420 class ARGS_07>
4421 static TARGET_TYPE make(
4422 const ALLOCATOR& allocator,
4424 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4425 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4426 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4427 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4428 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4429 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4430 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
4431 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07);
4432#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 7
4433
4434#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 8
4435 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4436 class ARGS_02,
4437 class ARGS_03,
4438 class ARGS_04,
4439 class ARGS_05,
4440 class ARGS_06,
4441 class ARGS_07,
4442 class ARGS_08>
4443 static TARGET_TYPE make(
4444 const ALLOCATOR& allocator,
4446 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4447 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4448 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4449 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4450 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4451 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4452 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
4453 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
4454 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08);
4455#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 8
4456
4457#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 9
4458 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4459 class ARGS_02,
4460 class ARGS_03,
4461 class ARGS_04,
4462 class ARGS_05,
4463 class ARGS_06,
4464 class ARGS_07,
4465 class ARGS_08,
4466 class ARGS_09>
4467 static TARGET_TYPE make(
4468 const ALLOCATOR& allocator,
4470 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4471 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4472 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4473 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4474 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4475 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4476 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
4477 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
4478 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
4479 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09);
4480#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 9
4481
4482#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 10
4483 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4484 class ARGS_02,
4485 class ARGS_03,
4486 class ARGS_04,
4487 class ARGS_05,
4488 class ARGS_06,
4489 class ARGS_07,
4490 class ARGS_08,
4491 class ARGS_09,
4492 class ARGS_10>
4493 static TARGET_TYPE make(
4494 const ALLOCATOR& allocator,
4496 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4497 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4498 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4499 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4500 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4501 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4502 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
4503 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
4504 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
4505 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
4506 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10);
4507#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 10
4508
4509#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 11
4510 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4511 class ARGS_02,
4512 class ARGS_03,
4513 class ARGS_04,
4514 class ARGS_05,
4515 class ARGS_06,
4516 class ARGS_07,
4517 class ARGS_08,
4518 class ARGS_09,
4519 class ARGS_10,
4520 class ARGS_11>
4521 static TARGET_TYPE make(
4522 const ALLOCATOR& allocator,
4524 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4525 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4526 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4527 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4528 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4529 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4530 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
4531 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
4532 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
4533 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
4534 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
4535 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11);
4536#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 11
4537
4538#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 12
4539 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4540 class ARGS_02,
4541 class ARGS_03,
4542 class ARGS_04,
4543 class ARGS_05,
4544 class ARGS_06,
4545 class ARGS_07,
4546 class ARGS_08,
4547 class ARGS_09,
4548 class ARGS_10,
4549 class ARGS_11,
4550 class ARGS_12>
4551 static TARGET_TYPE make(
4552 const ALLOCATOR& allocator,
4554 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4555 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4556 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4557 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4558 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4559 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4560 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
4561 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
4562 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
4563 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
4564 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
4565 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
4566 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12);
4567#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 12
4568
4569#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 13
4570 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4571 class ARGS_02,
4572 class ARGS_03,
4573 class ARGS_04,
4574 class ARGS_05,
4575 class ARGS_06,
4576 class ARGS_07,
4577 class ARGS_08,
4578 class ARGS_09,
4579 class ARGS_10,
4580 class ARGS_11,
4581 class ARGS_12,
4582 class ARGS_13>
4583 static TARGET_TYPE make(
4584 const ALLOCATOR& allocator,
4586 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4587 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4588 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4589 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4590 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4591 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4592 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
4593 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
4594 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
4595 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
4596 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
4597 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
4598 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
4599 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13);
4600#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 13
4601
4602#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 0
4603 template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
4604 static TARGET_TYPE make(
4605 const ALLOCATOR& allocator,
4607 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1);
4608#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 0
4609
4610#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 1
4611 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
4612 static TARGET_TYPE make(
4613 const ALLOCATOR& allocator,
4615 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4616 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01);
4617#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 1
4618
4619#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 2
4620 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4621 class ARGS_02>
4622 static TARGET_TYPE make(
4623 const ALLOCATOR& allocator,
4625 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4626 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4627 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02);
4628#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 2
4629
4630#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 3
4631 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4632 class ARGS_02,
4633 class ARGS_03>
4634 static TARGET_TYPE make(
4635 const ALLOCATOR& allocator,
4637 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4638 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4639 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4640 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03);
4641#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 3
4642
4643#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 4
4644 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4645 class ARGS_02,
4646 class ARGS_03,
4647 class ARGS_04>
4648 static TARGET_TYPE make(
4649 const ALLOCATOR& allocator,
4651 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4652 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4653 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4654 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4655 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04);
4656#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 4
4657
4658#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 5
4659 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4660 class ARGS_02,
4661 class ARGS_03,
4662 class ARGS_04,
4663 class ARGS_05>
4664 static TARGET_TYPE make(
4665 const ALLOCATOR& allocator,
4667 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4668 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4669 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4670 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4671 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4672 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05);
4673#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 5
4674
4675#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 6
4676 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4677 class ARGS_02,
4678 class ARGS_03,
4679 class ARGS_04,
4680 class ARGS_05,
4681 class ARGS_06>
4682 static TARGET_TYPE make(
4683 const ALLOCATOR& allocator,
4685 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4686 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4687 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4688 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4689 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4690 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4691 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06);
4692#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 6
4693
4694#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 7
4695 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4696 class ARGS_02,
4697 class ARGS_03,
4698 class ARGS_04,
4699 class ARGS_05,
4700 class ARGS_06,
4701 class ARGS_07>
4702 static TARGET_TYPE make(
4703 const ALLOCATOR& allocator,
4705 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4706 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4707 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4708 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4709 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4710 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4711 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
4712 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07);
4713#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 7
4714
4715#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 8
4716 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4717 class ARGS_02,
4718 class ARGS_03,
4719 class ARGS_04,
4720 class ARGS_05,
4721 class ARGS_06,
4722 class ARGS_07,
4723 class ARGS_08>
4724 static TARGET_TYPE make(
4725 const ALLOCATOR& allocator,
4727 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4728 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4729 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4730 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4731 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4732 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4733 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
4734 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
4735 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08);
4736#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 8
4737
4738#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 9
4739 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4740 class ARGS_02,
4741 class ARGS_03,
4742 class ARGS_04,
4743 class ARGS_05,
4744 class ARGS_06,
4745 class ARGS_07,
4746 class ARGS_08,
4747 class ARGS_09>
4748 static TARGET_TYPE make(
4749 const ALLOCATOR& allocator,
4751 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4752 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4753 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4754 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4755 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4756 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4757 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
4758 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
4759 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
4760 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09);
4761#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 9
4762
4763#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 10
4764 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4765 class ARGS_02,
4766 class ARGS_03,
4767 class ARGS_04,
4768 class ARGS_05,
4769 class ARGS_06,
4770 class ARGS_07,
4771 class ARGS_08,
4772 class ARGS_09,
4773 class ARGS_10>
4774 static TARGET_TYPE make(
4775 const ALLOCATOR& allocator,
4777 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4778 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4779 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4780 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4781 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4782 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4783 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
4784 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
4785 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
4786 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
4787 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10);
4788#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 10
4789
4790#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 11
4791 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4792 class ARGS_02,
4793 class ARGS_03,
4794 class ARGS_04,
4795 class ARGS_05,
4796 class ARGS_06,
4797 class ARGS_07,
4798 class ARGS_08,
4799 class ARGS_09,
4800 class ARGS_10,
4801 class ARGS_11>
4802 static TARGET_TYPE make(
4803 const ALLOCATOR& allocator,
4805 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4806 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4807 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4808 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4809 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4810 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4811 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
4812 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
4813 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
4814 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
4815 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
4816 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11);
4817#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 11
4818
4819#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 12
4820 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4821 class ARGS_02,
4822 class ARGS_03,
4823 class ARGS_04,
4824 class ARGS_05,
4825 class ARGS_06,
4826 class ARGS_07,
4827 class ARGS_08,
4828 class ARGS_09,
4829 class ARGS_10,
4830 class ARGS_11,
4831 class ARGS_12>
4832 static TARGET_TYPE make(
4833 const ALLOCATOR& allocator,
4835 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4836 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4837 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4838 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4839 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4840 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4841 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
4842 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
4843 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
4844 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
4845 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
4846 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
4847 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12);
4848#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 12
4849
4850#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 13
4851 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
4852 class ARGS_02,
4853 class ARGS_03,
4854 class ARGS_04,
4855 class ARGS_05,
4856 class ARGS_06,
4857 class ARGS_07,
4858 class ARGS_08,
4859 class ARGS_09,
4860 class ARGS_10,
4861 class ARGS_11,
4862 class ARGS_12,
4863 class ARGS_13>
4864 static TARGET_TYPE make(
4865 const ALLOCATOR& allocator,
4867 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4868 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
4869 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
4870 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
4871 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
4872 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
4873 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
4874 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
4875 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
4876 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
4877 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
4878 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
4879 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
4880 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13);
4881#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_D >= 13
4882
4883#else
4884// The generated code below is a workaround for the absence of perfect
4885// forwarding in some compilers.
4886# ifndef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
4887 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
4888 static TARGET_TYPE make(
4889 const ALLOCATOR& allocator,
4891 ARG1& argument1,
4892 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments);
4893 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
4894 static TARGET_TYPE make(
4895 const ALLOCATOR& allocator,
4897 ARG1& argument1,
4898 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments);
4899 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
4900 static TARGET_TYPE make(
4901 const ALLOCATOR& allocator,
4903 ARG1& argument1,
4904 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments);
4905# endif
4906
4907 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
4908 static TARGET_TYPE make(
4909 const ALLOCATOR& allocator,
4911 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4912 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments);
4913 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
4914 static TARGET_TYPE make(
4915 const ALLOCATOR& allocator,
4917 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4918 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments);
4919 template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
4920 static TARGET_TYPE make(
4921 const ALLOCATOR& allocator,
4923 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
4924 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments);
4925
4926// }}} END GENERATED CODE
4927#endif
4928#endif // defined(BSLS_COMPILERFEATURES_GUARANTEED_COPY_ELISION)
4929};
4930
4931// ============================================================================
4932// TEMPLATE IMPLEMENTATIONS
4933// ============================================================================
4934
4935 // -----------------------------------------------
4936 // struct template ConstructionUtil_IsAllocatorPtr
4937 // -----------------------------------------------
4938
4939/// Metafunction that inherits from `true_type` if the `ALLOC` type is a
4940/// pointer to `bslma::Allocator` or a class derived from it and
4941/// `false_type` otherwise.
4942template <class ALLOC>
4943struct ConstructionUtil_IsAllocatorPtr;
4944
4945/// This primary template is instantiated only for non-pointer type `ALLOC`
4946/// and always evaluates false.
4947template <class ALLOC>
4948struct ConstructionUtil_IsAllocatorPtr : bsl::false_type {
4949};
4950
4951/// This partial specialization is for pointer type `ALLOC *` and evaulates
4952/// true if and only if `ALLOC` is derived from `bslma::Allocator`.
4953template <class ALLOC>
4954struct ConstructionUtil_IsAllocatorPtr<ALLOC *>
4956};
4957
4958 // ---------------------------------------------------
4959 // struct template ConstructionUtil_ConstructionTraits
4960 // ---------------------------------------------------
4961
4962/// Metafunction yielding one of the following three `value` constants:
4963///
4964///: e_USES_ALLOCATOR_ARG_T_TRAITS `TARGET_TYPE` supports an allocator as
4965///: its second constructor argument, after
4966///: `bsl::allocator_arg`.
4967///:
4968///: e_USES_ALLOCATOR_TRAITS `TARGET_TYPE` supports an allocator as
4969///: its last constructor argument.
4970///:
4971///: e_NIL_TRAITS `TARGET_TYPE` does not support an
4972///: allocator and/or `ALLOCATOR` is `void*`
4973///: `int`, or any other non-allocator
4974///: scalar. The allocator argument to
4975///: `construct` will be ignored.
4976///
4977/// `ALLOCATOR` is compatible with an AA `TARGET_TYPE` if `ALLOCATOR` is
4978/// convertible to the allocator type expected by `TARGET_TYPE`'s
4979/// constructors. There are three special cases of incompatible `ALLOCATOR`
4980/// types:
4981///
4982/// 1. If `TARGET_TYPE` expects an allocator of type `bslma::Allocator *`
4983/// this metafunction yields either `e_USES_ALLOCATOR_ARG_T_TRAITS` or
4984/// `e_USES_ALLOCATOR_TRAITS`, even if `ALLOCATOR` is not compatible with
4985/// `TARGET_TYPE`. The `construct` method will attempt to extract the
4986/// `bslma::Allocator *` from the allocator using its `mechanism`
4987/// accessor. If there is no `mechanism` accessor, compilation will
4988/// fail.
4989/// 2. Otherwise, if `bslma::UsesBslmaAllocator<TARGET_TYPE>::value` is
4990/// `true`, this metafunction yields either
4991/// `e_USES_ALLOCATOR_ARG_T_TRAITS` or `e_USES_ALLOCATOR_TRAITS`, even if
4992/// `ALLOCATOR` is not compatible with `TARGET_TYPE`, resulting in a
4993/// compilation error within `construct`.
4994/// 3. Otherwise, if `ALLOCATOR` is incompatible with `TARGET_TYPE`, then
4995/// `ALLOCATOR` is ignored and this metafunction yields `e_NIL_TRAITS`,
4996/// as though `TARGET_TYPE` were not AA.
4997///
4998/// The first two special cases allow mixing and matching between
4999/// `bsl::allocator` and `bslma::Allocator *` in both directions, but will
5000/// fail for other allocator types. The failure is desirable to prevent
5001/// code accidentally passing an incorrect allocator type.
5002///
5003/// The third special case is inconsistent with the other two so as to allow
5004/// third-party classes that use third-party allocators to be treated as
5005/// non-AA within containers that use BDE allocators.
5006///
5007/// This metafunction also yields a `type` of 'bsl::integral_constant<value,
5008/// int>'.
5009///
5010/// See @ref bslma_constructionutil_cpp03
5011template <class TARGET_TYPE, class ALLOCATOR>
5012struct ConstructionUtil_ConstructionTrait {
5013
5014 private:
5015 // PRIVATE TYPES
5016 typedef ConstructionUtil_Imp Imp;
5017
5018 public:
5019 // PUBLIC TYPES
5020 enum {
5027 : Imp::e_USES_ALLOCATOR_TRAITS)
5028 : Imp::e_NIL_TRAITS
5029 };
5030
5032};
5033
5034
5035 // -------------------------------------------------
5036 // struct template ConstructionUtil_AllocAdaptorUtil
5037 // -------------------------------------------------
5038
5039template <class TYPE,
5040 bool HAS_ALLOC_TYPE = HasAllocatorType<TYPE>::value,
5041 bool IS_BSLMA_AA = UsesBslmaAllocator<TYPE>::value>
5042struct ConstructionUtil_AllocAdaptorUtil;
5043
5044/// This utility class template provides a static `adapt` method that adapts
5045/// an allocator object to the type expected by `TYPE`. This primary
5046/// template is instantiated only for a non-AA `TYPE`; such types do not
5047/// expect an allocator, so no `adapt` method is defined.
5048template <class TYPE>
5049struct ConstructionUtil_AllocAdaptorUtil<TYPE, false, false> {
5050};
5051
5052/// This utility class template provides a static `adapt` method that adapts
5053/// an allocator object to the type expected by `TYPE`. This partial
5054/// specialization is instantiated for types that expect an allocator of
5055/// type `bslma::Allocator *`.
5056template <class TYPE>
5057struct ConstructionUtil_AllocAdaptorUtil<TYPE, false, true> {
5058
5059 /// Return the `bslma::Allocator` pointer held by the specified `a`
5060 /// object of non-pointer class. Compilation will fail if type `ALLOC`
5061 /// does not provide a `mechanism()` accessor returning a pointer to
5062 /// type convertible to `bslma::Allocator *`.
5063 template <class ALLOC>
5064 static bslma::Allocator *adapt(const ALLOC& a) { return a.mechanism(); }
5065
5066 /// Return the specified `alloc_p` pointer, implicitly converted to
5067 /// `bslma::Allocator *`. Compilation will fail unless `ALLOC` is
5068 /// derived from `bslma::Allocator`.
5069 template <class ALLOC>
5070 static bslma::Allocator *adapt(ALLOC *const &alloc_p) { return alloc_p; }
5071};
5072
5073/// This utility class template provides a static `adapt` method that adapts
5074/// an allocator object to the type expected by `TYPE`. This partial
5075/// specialization is instantiated for types that expect an allocator of
5076/// type `TYPE::allocator_type`.
5077template <class TYPE, bool IS_BSLMA_AA>
5078struct ConstructionUtil_AllocAdaptorUtil<TYPE, true, IS_BSLMA_AA> {
5079
5080 /// Return the specified `a` allocator, implicitly converted to
5081 /// `TYPE::allocator_type`. Compilation will fail if implicit
5082 /// conversion to the return type is invalid.
5083 template <class ALLOC>
5084 static typename TYPE::allocator_type adapt(const ALLOC& a) { return a; }
5085};
5086
5087
5088 // -----------------------
5089 // struct ConstructionUtil
5090 // -----------------------
5091
5092// CLASS METHODS
5093template <class TARGET_TYPE, class ALLOCATOR>
5094inline
5095void
5096ConstructionUtil::construct(TARGET_TYPE *address,
5097 const ALLOCATOR& allocator)
5098{
5099 typedef typename
5101
5102 Imp::construct(address, allocator, Trait());
5103}
5104
5105#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
5106// {{{ BEGIN GENERATED CODE
5107// Command line: sim_cpp11_features.pl bslma_constructionutil.h
5108#ifndef BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT
5109#define BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT 13
5110#endif
5111#ifndef BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E
5112#define BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT
5113#endif
5114# ifndef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
5115#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 0
5116template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
5117inline
5118void
5119ConstructionUtil::construct(TARGET_TYPE *address,
5120 const ALLOCATOR& allocator,
5121 ARG1& argument1)
5122{
5123 typedef typename
5125
5126 Imp::construct(address,
5127 allocator,
5128 Trait(),
5129 argument1);
5130}
5131#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 0
5132
5133#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 1
5134template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
5135inline
5136void
5137ConstructionUtil::construct(TARGET_TYPE *address,
5138 const ALLOCATOR& allocator,
5139 ARG1& argument1,
5140 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01)
5141{
5142 typedef typename
5144
5145 Imp::construct(address,
5146 allocator,
5147 Trait(),
5148 argument1,
5149 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01));
5150}
5151#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 1
5152
5153#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 2
5154template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
5155 class ARGS_02>
5156inline
5157void
5158ConstructionUtil::construct(TARGET_TYPE *address,
5159 const ALLOCATOR& allocator,
5160 ARG1& argument1,
5161 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
5162 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02)
5163{
5164 typedef typename
5166
5167 Imp::construct(address,
5168 allocator,
5169 Trait(),
5170 argument1,
5171 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
5172 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02));
5173}
5174#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 2
5175
5176#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 3
5177template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
5178 class ARGS_02,
5179 class ARGS_03>
5180inline
5181void
5182ConstructionUtil::construct(TARGET_TYPE *address,
5183 const ALLOCATOR& allocator,
5184 ARG1& argument1,
5185 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
5186 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
5187 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03)
5188{
5189 typedef typename
5191
5192 Imp::construct(address,
5193 allocator,
5194 Trait(),
5195 argument1,
5196 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
5197 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
5198 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03));
5199}
5200#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 3
5201
5202#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 4
5203template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
5204 class ARGS_02,
5205 class ARGS_03,
5206 class ARGS_04>
5207inline
5208void
5209ConstructionUtil::construct(TARGET_TYPE *address,
5210 const ALLOCATOR& allocator,
5211 ARG1& argument1,
5212 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
5213 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
5214 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
5215 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04)
5216{
5217 typedef typename
5219
5220 Imp::construct(address,
5221 allocator,
5222 Trait(),
5223 argument1,
5224 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
5225 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
5226 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
5227 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04));
5228}
5229#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 4
5230
5231#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 5
5232template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
5233 class ARGS_02,
5234 class ARGS_03,
5235 class ARGS_04,
5236 class ARGS_05>
5237inline
5238void
5239ConstructionUtil::construct(TARGET_TYPE *address,
5240 const ALLOCATOR& allocator,
5241 ARG1& argument1,
5242 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
5243 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
5244 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
5245 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
5246 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05)
5247{
5248 typedef typename
5250
5251 Imp::construct(address,
5252 allocator,
5253 Trait(),
5254 argument1,
5255 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
5256 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
5257 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
5258 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
5259 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05));
5260}
5261#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 5
5262
5263#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 6
5264template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
5265 class ARGS_02,
5266 class ARGS_03,
5267 class ARGS_04,
5268 class ARGS_05,
5269 class ARGS_06>
5270inline
5271void
5272ConstructionUtil::construct(TARGET_TYPE *address,
5273 const ALLOCATOR& allocator,
5274 ARG1& argument1,
5275 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
5276 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
5277 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
5278 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
5279 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
5280 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06)
5281{
5282 typedef typename
5284
5285 Imp::construct(address,
5286 allocator,
5287 Trait(),
5288 argument1,
5289 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
5290 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
5291 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
5292 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
5293 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
5294 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06));
5295}
5296#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 6
5297
5298#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 7
5299template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
5300 class ARGS_02,
5301 class ARGS_03,
5302 class ARGS_04,
5303 class ARGS_05,
5304 class ARGS_06,
5305 class ARGS_07>
5306inline
5307void
5308ConstructionUtil::construct(TARGET_TYPE *address,
5309 const ALLOCATOR& allocator,
5310 ARG1& argument1,
5311 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
5312 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
5313 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
5314 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
5315 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
5316 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
5317 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07)
5318{
5319 typedef typename
5321
5322 Imp::construct(address,
5323 allocator,
5324 Trait(),
5325 argument1,
5326 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
5327 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
5328 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
5329 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
5330 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
5331 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
5332 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07));
5333}
5334#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 7
5335
5336#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 8
5337template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
5338 class ARGS_02,
5339 class ARGS_03,
5340 class ARGS_04,
5341 class ARGS_05,
5342 class ARGS_06,
5343 class ARGS_07,
5344 class ARGS_08>
5345inline
5346void
5347ConstructionUtil::construct(TARGET_TYPE *address,
5348 const ALLOCATOR& allocator,
5349 ARG1& argument1,
5350 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
5351 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
5352 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
5353 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
5354 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
5355 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
5356 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
5357 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08)
5358{
5359 typedef typename
5361
5362 Imp::construct(address,
5363 allocator,
5364 Trait(),
5365 argument1,
5366 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
5367 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
5368 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
5369 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
5370 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
5371 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
5372 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
5373 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08));
5374}
5375#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 8
5376
5377#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 9
5378template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
5379 class ARGS_02,
5380 class ARGS_03,
5381 class ARGS_04,
5382 class ARGS_05,
5383 class ARGS_06,
5384 class ARGS_07,
5385 class ARGS_08,
5386 class ARGS_09>
5387inline
5388void
5389ConstructionUtil::construct(TARGET_TYPE *address,
5390 const ALLOCATOR& allocator,
5391 ARG1& argument1,
5392 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
5393 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
5394 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
5395 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
5396 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
5397 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
5398 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
5399 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
5400 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09)
5401{
5402 typedef typename
5404
5405 Imp::construct(address,
5406 allocator,
5407 Trait(),
5408 argument1,
5409 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
5410 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
5411 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
5412 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
5413 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
5414 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
5415 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
5416 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
5417 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09));
5418}
5419#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 9
5420
5421#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 10
5422template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
5423 class ARGS_02,
5424 class ARGS_03,
5425 class ARGS_04,
5426 class ARGS_05,
5427 class ARGS_06,
5428 class ARGS_07,
5429 class ARGS_08,
5430 class ARGS_09,
5431 class ARGS_10>
5432inline
5433void
5434ConstructionUtil::construct(TARGET_TYPE *address,
5435 const ALLOCATOR& allocator,
5436 ARG1& argument1,
5437 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
5438 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
5439 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
5440 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
5441 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
5442 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
5443 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
5444 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
5445 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
5446 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10)
5447{
5448 typedef typename
5450
5451 Imp::construct(address,
5452 allocator,
5453 Trait(),
5454 argument1,
5455 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
5456 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
5457 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
5458 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
5459 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
5460 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
5461 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
5462 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
5463 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
5464 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10));
5465}
5466#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 10
5467
5468#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 11
5469template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
5470 class ARGS_02,
5471 class ARGS_03,
5472 class ARGS_04,
5473 class ARGS_05,
5474 class ARGS_06,
5475 class ARGS_07,
5476 class ARGS_08,
5477 class ARGS_09,
5478 class ARGS_10,
5479 class ARGS_11>
5480inline
5481void
5482ConstructionUtil::construct(TARGET_TYPE *address,
5483 const ALLOCATOR& allocator,
5484 ARG1& argument1,
5485 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
5486 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
5487 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
5488 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
5489 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
5490 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
5491 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
5492 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
5493 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
5494 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
5495 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11)
5496{
5497 typedef typename
5499
5500 Imp::construct(address,
5501 allocator,
5502 Trait(),
5503 argument1,
5504 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
5505 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
5506 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
5507 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
5508 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
5509 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
5510 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
5511 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
5512 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
5513 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
5514 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11));
5515}
5516#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 11
5517
5518#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 12
5519template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
5520 class ARGS_02,
5521 class ARGS_03,
5522 class ARGS_04,
5523 class ARGS_05,
5524 class ARGS_06,
5525 class ARGS_07,
5526 class ARGS_08,
5527 class ARGS_09,
5528 class ARGS_10,
5529 class ARGS_11,
5530 class ARGS_12>
5531inline
5532void
5533ConstructionUtil::construct(TARGET_TYPE *address,
5534 const ALLOCATOR& allocator,
5535 ARG1& argument1,
5536 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
5537 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
5538 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
5539 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
5540 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
5541 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
5542 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
5543 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
5544 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
5545 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
5546 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
5547 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12)
5548{
5549 typedef typename
5551
5552 Imp::construct(address,
5553 allocator,
5554 Trait(),
5555 argument1,
5556 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
5557 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
5558 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
5559 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
5560 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
5561 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
5562 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
5563 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
5564 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
5565 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
5566 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
5567 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12));
5568}
5569#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 12
5570
5571#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 13
5572template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
5573 class ARGS_02,
5574 class ARGS_03,
5575 class ARGS_04,
5576 class ARGS_05,
5577 class ARGS_06,
5578 class ARGS_07,
5579 class ARGS_08,
5580 class ARGS_09,
5581 class ARGS_10,
5582 class ARGS_11,
5583 class ARGS_12,
5584 class ARGS_13>
5585inline
5586void
5587ConstructionUtil::construct(TARGET_TYPE *address,
5588 const ALLOCATOR& allocator,
5589 ARG1& argument1,
5590 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
5591 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
5592 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
5593 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
5594 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
5595 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
5596 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
5597 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
5598 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
5599 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
5600 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
5601 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
5602 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13)
5603{
5604 typedef typename
5606
5607 Imp::construct(address,
5608 allocator,
5609 Trait(),
5610 argument1,
5611 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
5612 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
5613 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
5614 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
5615 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
5616 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
5617 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
5618 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
5619 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
5620 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
5621 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
5622 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
5623 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13));
5624}
5625#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 13
5626
5627# endif
5628
5629#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 0
5630template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
5631inline
5632void
5633ConstructionUtil::construct(TARGET_TYPE *address,
5634 const ALLOCATOR& allocator,
5635 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1)
5636{
5637 typedef typename
5639
5640 Imp::construct(address,
5641 allocator,
5642 Trait(),
5643 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1));
5644}
5645#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 0
5646
5647#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 1
5648template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
5649inline
5650void
5651ConstructionUtil::construct(TARGET_TYPE *address,
5652 const ALLOCATOR& allocator,
5653 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
5654 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01)
5655{
5656 typedef typename
5658
5659 Imp::construct(address,
5660 allocator,
5661 Trait(),
5662 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
5663 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01));
5664}
5665#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 1
5666
5667#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 2
5668template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
5669 class ARGS_02>
5670inline
5671void
5672ConstructionUtil::construct(TARGET_TYPE *address,
5673 const ALLOCATOR& allocator,
5674 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
5675 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
5676 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02)
5677{
5678 typedef typename
5680
5681 Imp::construct(address,
5682 allocator,
5683 Trait(),
5684 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
5685 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
5686 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02));
5687}
5688#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 2
5689
5690#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 3
5691template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
5692 class ARGS_02,
5693 class ARGS_03>
5694inline
5695void
5696ConstructionUtil::construct(TARGET_TYPE *address,
5697 const ALLOCATOR& allocator,
5698 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
5699 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
5700 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
5701 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03)
5702{
5703 typedef typename
5705
5706 Imp::construct(address,
5707 allocator,
5708 Trait(),
5709 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
5710 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
5711 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
5712 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03));
5713}
5714#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 3
5715
5716#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 4
5717template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
5718 class ARGS_02,
5719 class ARGS_03,
5720 class ARGS_04>
5721inline
5722void
5723ConstructionUtil::construct(TARGET_TYPE *address,
5724 const ALLOCATOR& allocator,
5725 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
5726 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
5727 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
5728 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
5729 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04)
5730{
5731 typedef typename
5733
5734 Imp::construct(address,
5735 allocator,
5736 Trait(),
5737 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
5738 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
5739 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
5740 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
5741 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04));
5742}
5743#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 4
5744
5745#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 5
5746template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
5747 class ARGS_02,
5748 class ARGS_03,
5749 class ARGS_04,
5750 class ARGS_05>
5751inline
5752void
5753ConstructionUtil::construct(TARGET_TYPE *address,
5754 const ALLOCATOR& allocator,
5755 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
5756 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
5757 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
5758 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
5759 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
5760 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05)
5761{
5762 typedef typename
5764
5765 Imp::construct(address,
5766 allocator,
5767 Trait(),
5768 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
5769 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
5770 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
5771 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
5772 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
5773 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05));
5774}
5775#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 5
5776
5777#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 6
5778template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
5779 class ARGS_02,
5780 class ARGS_03,
5781 class ARGS_04,
5782 class ARGS_05,
5783 class ARGS_06>
5784inline
5785void
5786ConstructionUtil::construct(TARGET_TYPE *address,
5787 const ALLOCATOR& allocator,
5788 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
5789 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
5790 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
5791 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
5792 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
5793 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
5794 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06)
5795{
5796 typedef typename
5798
5799 Imp::construct(address,
5800 allocator,
5801 Trait(),
5802 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
5803 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
5804 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
5805 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
5806 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
5807 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
5808 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06));
5809}
5810#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 6
5811
5812#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 7
5813template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
5814 class ARGS_02,
5815 class ARGS_03,
5816 class ARGS_04,
5817 class ARGS_05,
5818 class ARGS_06,
5819 class ARGS_07>
5820inline
5821void
5822ConstructionUtil::construct(TARGET_TYPE *address,
5823 const ALLOCATOR& allocator,
5824 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
5825 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
5826 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
5827 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
5828 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
5829 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
5830 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
5831 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07)
5832{
5833 typedef typename
5835
5836 Imp::construct(address,
5837 allocator,
5838 Trait(),
5839 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
5840 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
5841 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
5842 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
5843 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
5844 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
5845 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
5846 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07));
5847}
5848#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 7
5849
5850#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 8
5851template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
5852 class ARGS_02,
5853 class ARGS_03,
5854 class ARGS_04,
5855 class ARGS_05,
5856 class ARGS_06,
5857 class ARGS_07,
5858 class ARGS_08>
5859inline
5860void
5861ConstructionUtil::construct(TARGET_TYPE *address,
5862 const ALLOCATOR& allocator,
5863 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
5864 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
5865 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
5866 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
5867 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
5868 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
5869 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
5870 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
5871 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08)
5872{
5873 typedef typename
5875
5876 Imp::construct(address,
5877 allocator,
5878 Trait(),
5879 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
5880 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
5881 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
5882 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
5883 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
5884 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
5885 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
5886 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
5887 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08));
5888}
5889#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 8
5890
5891#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 9
5892template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
5893 class ARGS_02,
5894 class ARGS_03,
5895 class ARGS_04,
5896 class ARGS_05,
5897 class ARGS_06,
5898 class ARGS_07,
5899 class ARGS_08,
5900 class ARGS_09>
5901inline
5902void
5903ConstructionUtil::construct(TARGET_TYPE *address,
5904 const ALLOCATOR& allocator,
5905 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
5906 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
5907 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
5908 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
5909 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
5910 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
5911 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
5912 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
5913 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
5914 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09)
5915{
5916 typedef typename
5918
5919 Imp::construct(address,
5920 allocator,
5921 Trait(),
5922 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
5923 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
5924 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
5925 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
5926 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
5927 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
5928 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
5929 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
5930 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
5931 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09));
5932}
5933#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 9
5934
5935#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 10
5936template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
5937 class ARGS_02,
5938 class ARGS_03,
5939 class ARGS_04,
5940 class ARGS_05,
5941 class ARGS_06,
5942 class ARGS_07,
5943 class ARGS_08,
5944 class ARGS_09,
5945 class ARGS_10>
5946inline
5947void
5948ConstructionUtil::construct(TARGET_TYPE *address,
5949 const ALLOCATOR& allocator,
5950 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
5951 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
5952 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
5953 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
5954 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
5955 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
5956 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
5957 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
5958 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
5959 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
5960 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10)
5961{
5962 typedef typename
5964
5965 Imp::construct(address,
5966 allocator,
5967 Trait(),
5968 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
5969 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
5970 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
5971 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
5972 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
5973 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
5974 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
5975 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
5976 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
5977 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
5978 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10));
5979}
5980#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 10
5981
5982#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 11
5983template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
5984 class ARGS_02,
5985 class ARGS_03,
5986 class ARGS_04,
5987 class ARGS_05,
5988 class ARGS_06,
5989 class ARGS_07,
5990 class ARGS_08,
5991 class ARGS_09,
5992 class ARGS_10,
5993 class ARGS_11>
5994inline
5995void
5996ConstructionUtil::construct(TARGET_TYPE *address,
5997 const ALLOCATOR& allocator,
5998 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
5999 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
6000 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
6001 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
6002 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
6003 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
6004 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
6005 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
6006 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
6007 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
6008 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
6009 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11)
6010{
6011 typedef typename
6013
6014 Imp::construct(address,
6015 allocator,
6016 Trait(),
6017 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
6018 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
6019 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
6020 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
6021 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
6022 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
6023 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
6024 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
6025 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
6026 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
6027 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
6028 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11));
6029}
6030#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 11
6031
6032#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 12
6033template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
6034 class ARGS_02,
6035 class ARGS_03,
6036 class ARGS_04,
6037 class ARGS_05,
6038 class ARGS_06,
6039 class ARGS_07,
6040 class ARGS_08,
6041 class ARGS_09,
6042 class ARGS_10,
6043 class ARGS_11,
6044 class ARGS_12>
6045inline
6046void
6047ConstructionUtil::construct(TARGET_TYPE *address,
6048 const ALLOCATOR& allocator,
6049 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
6050 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
6051 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
6052 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
6053 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
6054 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
6055 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
6056 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
6057 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
6058 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
6059 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
6060 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
6061 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12)
6062{
6063 typedef typename
6065
6066 Imp::construct(address,
6067 allocator,
6068 Trait(),
6069 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
6070 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
6071 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
6072 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
6073 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
6074 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
6075 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
6076 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
6077 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
6078 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
6079 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
6080 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
6081 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12));
6082}
6083#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 12
6084
6085#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 13
6086template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
6087 class ARGS_02,
6088 class ARGS_03,
6089 class ARGS_04,
6090 class ARGS_05,
6091 class ARGS_06,
6092 class ARGS_07,
6093 class ARGS_08,
6094 class ARGS_09,
6095 class ARGS_10,
6096 class ARGS_11,
6097 class ARGS_12,
6098 class ARGS_13>
6099inline
6100void
6101ConstructionUtil::construct(TARGET_TYPE *address,
6102 const ALLOCATOR& allocator,
6103 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
6104 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
6105 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
6106 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
6107 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
6108 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
6109 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
6110 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
6111 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
6112 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
6113 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
6114 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
6115 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
6116 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13)
6117{
6118 typedef typename
6120
6121 Imp::construct(address,
6122 allocator,
6123 Trait(),
6124 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
6125 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
6126 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
6127 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
6128 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
6129 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
6130 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
6131 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
6132 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
6133 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
6134 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
6135 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
6136 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
6137 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13));
6138}
6139#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_E >= 13
6140
6141#else
6142// The generated code below is a workaround for the absence of perfect
6143// forwarding in some compilers.
6144# ifndef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
6145template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
6146inline
6147void
6148ConstructionUtil::construct(TARGET_TYPE *address,
6149 const ALLOCATOR& allocator,
6150 ARG1& argument1,
6151 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments)
6152{
6153 typedef typename
6155
6156 Imp::construct(address,
6157 allocator,
6158 Trait(),
6159 argument1,
6160 BSLS_COMPILERFEATURES_FORWARD(ARGS, arguments)...);
6161}
6162# endif
6163
6164template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
6165inline
6166void
6167ConstructionUtil::construct(TARGET_TYPE *address,
6168 const ALLOCATOR& allocator,
6169 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
6170 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments)
6171{
6172 typedef typename
6174
6175 Imp::construct(address,
6176 allocator,
6177 Trait(),
6178 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
6179 BSLS_COMPILERFEATURES_FORWARD(ARGS, arguments)...);
6180}
6181// }}} END GENERATED CODE
6182#endif
6183
6184template <class TARGET_TYPE, class ALLOCATOR>
6185inline
6186void
6187ConstructionUtil::destructiveMove(TARGET_TYPE *address,
6188 const ALLOCATOR& allocator,
6189 TARGET_TYPE *original)
6190{
6191 BSLS_ASSERT_SAFE(address);
6192 BSLS_ASSERT_SAFE(original);
6193
6194 enum {
6198 };
6199
6200 Imp::destructiveMove(address,
6201 allocator,
6203 original);
6204}
6205
6206#if defined(BSLS_COMPILERFEATURES_GUARANTEED_COPY_ELISION)
6207// Suppress bde_verify warnings about return-by-value in this region.
6208// BDE_VERIFY pragma: push
6209// BDE_VERIFY pragma: -AR01: Type using allocator is returned by value
6210
6211template <class TARGET_TYPE, class ALLOCATOR>
6212inline
6213TARGET_TYPE
6214ConstructionUtil::make(const ALLOCATOR& allocator)
6215{
6216 typedef typename
6218
6219 return Imp::make<TARGET_TYPE>(allocator, Trait());
6220}
6221
6222#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
6223// {{{ BEGIN GENERATED CODE
6224// Command line: sim_cpp11_features.pl bslma_constructionutil.h
6225#ifndef BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT
6226#define BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT 13
6227#endif
6228#ifndef BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F
6229#define BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT
6230#endif
6231# ifndef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
6232#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 0
6233template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
6234inline
6235TARGET_TYPE
6236ConstructionUtil::make(const ALLOCATOR& allocator,
6237 ARG1& argument1)
6238{
6239 typedef typename
6241
6242 return Imp::make<TARGET_TYPE>(
6243 allocator,
6244 Trait(),
6245 argument1);
6246}
6247#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 0
6248
6249#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 1
6250template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
6251inline
6252TARGET_TYPE
6253ConstructionUtil::make(const ALLOCATOR& allocator,
6254 ARG1& argument1,
6255 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01)
6256{
6257 typedef typename
6259
6260 return Imp::make<TARGET_TYPE>(
6261 allocator,
6262 Trait(),
6263 argument1,
6264 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01));
6265}
6266#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 1
6267
6268#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 2
6269template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
6270 class ARGS_02>
6271inline
6272TARGET_TYPE
6273ConstructionUtil::make(const ALLOCATOR& allocator,
6274 ARG1& argument1,
6275 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
6276 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02)
6277{
6278 typedef typename
6280
6281 return Imp::make<TARGET_TYPE>(
6282 allocator,
6283 Trait(),
6284 argument1,
6285 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
6286 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02));
6287}
6288#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 2
6289
6290#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 3
6291template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
6292 class ARGS_02,
6293 class ARGS_03>
6294inline
6295TARGET_TYPE
6296ConstructionUtil::make(const ALLOCATOR& allocator,
6297 ARG1& argument1,
6298 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
6299 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
6300 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03)
6301{
6302 typedef typename
6304
6305 return Imp::make<TARGET_TYPE>(
6306 allocator,
6307 Trait(),
6308 argument1,
6309 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
6310 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
6311 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03));
6312}
6313#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 3
6314
6315#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 4
6316template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
6317 class ARGS_02,
6318 class ARGS_03,
6319 class ARGS_04>
6320inline
6321TARGET_TYPE
6322ConstructionUtil::make(const ALLOCATOR& allocator,
6323 ARG1& argument1,
6324 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
6325 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
6326 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
6327 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04)
6328{
6329 typedef typename
6331
6332 return Imp::make<TARGET_TYPE>(
6333 allocator,
6334 Trait(),
6335 argument1,
6336 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
6337 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
6338 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
6339 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04));
6340}
6341#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 4
6342
6343#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 5
6344template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
6345 class ARGS_02,
6346 class ARGS_03,
6347 class ARGS_04,
6348 class ARGS_05>
6349inline
6350TARGET_TYPE
6351ConstructionUtil::make(const ALLOCATOR& allocator,
6352 ARG1& argument1,
6353 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
6354 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
6355 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
6356 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
6357 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05)
6358{
6359 typedef typename
6361
6362 return Imp::make<TARGET_TYPE>(
6363 allocator,
6364 Trait(),
6365 argument1,
6366 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
6367 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
6368 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
6369 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
6370 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05));
6371}
6372#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 5
6373
6374#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 6
6375template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
6376 class ARGS_02,
6377 class ARGS_03,
6378 class ARGS_04,
6379 class ARGS_05,
6380 class ARGS_06>
6381inline
6382TARGET_TYPE
6383ConstructionUtil::make(const ALLOCATOR& allocator,
6384 ARG1& argument1,
6385 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
6386 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
6387 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
6388 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
6389 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
6390 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06)
6391{
6392 typedef typename
6394
6395 return Imp::make<TARGET_TYPE>(
6396 allocator,
6397 Trait(),
6398 argument1,
6399 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
6400 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
6401 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
6402 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
6403 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
6404 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06));
6405}
6406#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 6
6407
6408#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 7
6409template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
6410 class ARGS_02,
6411 class ARGS_03,
6412 class ARGS_04,
6413 class ARGS_05,
6414 class ARGS_06,
6415 class ARGS_07>
6416inline
6417TARGET_TYPE
6418ConstructionUtil::make(const ALLOCATOR& allocator,
6419 ARG1& argument1,
6420 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
6421 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
6422 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
6423 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
6424 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
6425 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
6426 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07)
6427{
6428 typedef typename
6430
6431 return Imp::make<TARGET_TYPE>(
6432 allocator,
6433 Trait(),
6434 argument1,
6435 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
6436 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
6437 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
6438 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
6439 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
6440 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
6441 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07));
6442}
6443#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 7
6444
6445#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 8
6446template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
6447 class ARGS_02,
6448 class ARGS_03,
6449 class ARGS_04,
6450 class ARGS_05,
6451 class ARGS_06,
6452 class ARGS_07,
6453 class ARGS_08>
6454inline
6455TARGET_TYPE
6456ConstructionUtil::make(const ALLOCATOR& allocator,
6457 ARG1& argument1,
6458 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
6459 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
6460 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
6461 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
6462 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
6463 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
6464 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
6465 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08)
6466{
6467 typedef typename
6469
6470 return Imp::make<TARGET_TYPE>(
6471 allocator,
6472 Trait(),
6473 argument1,
6474 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
6475 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
6476 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
6477 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
6478 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
6479 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
6480 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
6481 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08));
6482}
6483#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 8
6484
6485#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 9
6486template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
6487 class ARGS_02,
6488 class ARGS_03,
6489 class ARGS_04,
6490 class ARGS_05,
6491 class ARGS_06,
6492 class ARGS_07,
6493 class ARGS_08,
6494 class ARGS_09>
6495inline
6496TARGET_TYPE
6497ConstructionUtil::make(const ALLOCATOR& allocator,
6498 ARG1& argument1,
6499 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
6500 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
6501 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
6502 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
6503 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
6504 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
6505 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
6506 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
6507 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09)
6508{
6509 typedef typename
6511
6512 return Imp::make<TARGET_TYPE>(
6513 allocator,
6514 Trait(),
6515 argument1,
6516 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
6517 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
6518 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
6519 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
6520 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
6521 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
6522 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
6523 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
6524 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09));
6525}
6526#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 9
6527
6528#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 10
6529template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
6530 class ARGS_02,
6531 class ARGS_03,
6532 class ARGS_04,
6533 class ARGS_05,
6534 class ARGS_06,
6535 class ARGS_07,
6536 class ARGS_08,
6537 class ARGS_09,
6538 class ARGS_10>
6539inline
6540TARGET_TYPE
6541ConstructionUtil::make(const ALLOCATOR& allocator,
6542 ARG1& argument1,
6543 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
6544 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
6545 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
6546 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
6547 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
6548 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
6549 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
6550 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
6551 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
6552 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10)
6553{
6554 typedef typename
6556
6557 return Imp::make<TARGET_TYPE>(
6558 allocator,
6559 Trait(),
6560 argument1,
6561 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
6562 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
6563 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
6564 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
6565 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
6566 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
6567 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
6568 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
6569 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
6570 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10));
6571}
6572#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 10
6573
6574#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 11
6575template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
6576 class ARGS_02,
6577 class ARGS_03,
6578 class ARGS_04,
6579 class ARGS_05,
6580 class ARGS_06,
6581 class ARGS_07,
6582 class ARGS_08,
6583 class ARGS_09,
6584 class ARGS_10,
6585 class ARGS_11>
6586inline
6587TARGET_TYPE
6588ConstructionUtil::make(const ALLOCATOR& allocator,
6589 ARG1& argument1,
6590 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
6591 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
6592 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
6593 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
6594 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
6595 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
6596 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
6597 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
6598 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
6599 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
6600 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11)
6601{
6602 typedef typename
6604
6605 return Imp::make<TARGET_TYPE>(
6606 allocator,
6607 Trait(),
6608 argument1,
6609 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
6610 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
6611 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
6612 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
6613 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
6614 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
6615 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
6616 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
6617 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
6618 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
6619 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11));
6620}
6621#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 11
6622
6623#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 12
6624template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
6625 class ARGS_02,
6626 class ARGS_03,
6627 class ARGS_04,
6628 class ARGS_05,
6629 class ARGS_06,
6630 class ARGS_07,
6631 class ARGS_08,
6632 class ARGS_09,
6633 class ARGS_10,
6634 class ARGS_11,
6635 class ARGS_12>
6636inline
6637TARGET_TYPE
6638ConstructionUtil::make(const ALLOCATOR& allocator,
6639 ARG1& argument1,
6640 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
6641 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
6642 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
6643 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
6644 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
6645 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
6646 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
6647 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
6648 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
6649 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
6650 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
6651 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12)
6652{
6653 typedef typename
6655
6656 return Imp::make<TARGET_TYPE>(
6657 allocator,
6658 Trait(),
6659 argument1,
6660 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
6661 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
6662 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
6663 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
6664 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
6665 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
6666 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
6667 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
6668 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
6669 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
6670 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
6671 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12));
6672}
6673#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 12
6674
6675#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 13
6676template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
6677 class ARGS_02,
6678 class ARGS_03,
6679 class ARGS_04,
6680 class ARGS_05,
6681 class ARGS_06,
6682 class ARGS_07,
6683 class ARGS_08,
6684 class ARGS_09,
6685 class ARGS_10,
6686 class ARGS_11,
6687 class ARGS_12,
6688 class ARGS_13>
6689inline
6690TARGET_TYPE
6691ConstructionUtil::make(const ALLOCATOR& allocator,
6692 ARG1& argument1,
6693 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
6694 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
6695 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
6696 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
6697 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
6698 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
6699 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
6700 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
6701 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
6702 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
6703 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
6704 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
6705 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13)
6706{
6707 typedef typename
6709
6710 return Imp::make<TARGET_TYPE>(
6711 allocator,
6712 Trait(),
6713 argument1,
6714 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
6715 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
6716 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
6717 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
6718 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
6719 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
6720 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
6721 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
6722 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
6723 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
6724 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
6725 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
6726 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13));
6727}
6728#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 13
6729
6730# endif
6731
6732#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 0
6733template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
6734inline
6735TARGET_TYPE
6736ConstructionUtil::make(const ALLOCATOR& allocator,
6737 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1)
6738{
6739 typedef typename
6741
6742 return Imp::make<TARGET_TYPE>(
6743 allocator,
6744 Trait(),
6745 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1));
6746}
6747#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 0
6748
6749#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 1
6750template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
6751inline
6752TARGET_TYPE
6753ConstructionUtil::make(const ALLOCATOR& allocator,
6754 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
6755 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01)
6756{
6757 typedef typename
6759
6760 return Imp::make<TARGET_TYPE>(
6761 allocator,
6762 Trait(),
6763 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
6764 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01));
6765}
6766#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 1
6767
6768#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 2
6769template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
6770 class ARGS_02>
6771inline
6772TARGET_TYPE
6773ConstructionUtil::make(const ALLOCATOR& allocator,
6774 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
6775 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
6776 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02)
6777{
6778 typedef typename
6780
6781 return Imp::make<TARGET_TYPE>(
6782 allocator,
6783 Trait(),
6784 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
6785 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
6786 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02));
6787}
6788#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 2
6789
6790#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 3
6791template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
6792 class ARGS_02,
6793 class ARGS_03>
6794inline
6795TARGET_TYPE
6796ConstructionUtil::make(const ALLOCATOR& allocator,
6797 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
6798 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
6799 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
6800 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03)
6801{
6802 typedef typename
6804
6805 return Imp::make<TARGET_TYPE>(
6806 allocator,
6807 Trait(),
6808 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
6809 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
6810 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
6811 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03));
6812}
6813#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 3
6814
6815#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 4
6816template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
6817 class ARGS_02,
6818 class ARGS_03,
6819 class ARGS_04>
6820inline
6821TARGET_TYPE
6822ConstructionUtil::make(const ALLOCATOR& allocator,
6823 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
6824 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
6825 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
6826 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
6827 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04)
6828{
6829 typedef typename
6831
6832 return Imp::make<TARGET_TYPE>(
6833 allocator,
6834 Trait(),
6835 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
6836 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
6837 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
6838 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
6839 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04));
6840}
6841#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 4
6842
6843#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 5
6844template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
6845 class ARGS_02,
6846 class ARGS_03,
6847 class ARGS_04,
6848 class ARGS_05>
6849inline
6850TARGET_TYPE
6851ConstructionUtil::make(const ALLOCATOR& allocator,
6852 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
6853 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
6854 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
6855 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
6856 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
6857 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05)
6858{
6859 typedef typename
6861
6862 return Imp::make<TARGET_TYPE>(
6863 allocator,
6864 Trait(),
6865 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
6866 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
6867 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
6868 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
6869 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
6870 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05));
6871}
6872#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 5
6873
6874#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 6
6875template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
6876 class ARGS_02,
6877 class ARGS_03,
6878 class ARGS_04,
6879 class ARGS_05,
6880 class ARGS_06>
6881inline
6882TARGET_TYPE
6883ConstructionUtil::make(const ALLOCATOR& allocator,
6884 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
6885 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
6886 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
6887 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
6888 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
6889 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
6890 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06)
6891{
6892 typedef typename
6894
6895 return Imp::make<TARGET_TYPE>(
6896 allocator,
6897 Trait(),
6898 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
6899 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
6900 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
6901 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
6902 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
6903 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
6904 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06));
6905}
6906#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 6
6907
6908#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 7
6909template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
6910 class ARGS_02,
6911 class ARGS_03,
6912 class ARGS_04,
6913 class ARGS_05,
6914 class ARGS_06,
6915 class ARGS_07>
6916inline
6917TARGET_TYPE
6918ConstructionUtil::make(const ALLOCATOR& allocator,
6919 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
6920 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
6921 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
6922 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
6923 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
6924 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
6925 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
6926 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07)
6927{
6928 typedef typename
6930
6931 return Imp::make<TARGET_TYPE>(
6932 allocator,
6933 Trait(),
6934 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
6935 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
6936 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
6937 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
6938 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
6939 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
6940 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
6941 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07));
6942}
6943#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 7
6944
6945#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 8
6946template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
6947 class ARGS_02,
6948 class ARGS_03,
6949 class ARGS_04,
6950 class ARGS_05,
6951 class ARGS_06,
6952 class ARGS_07,
6953 class ARGS_08>
6954inline
6955TARGET_TYPE
6956ConstructionUtil::make(const ALLOCATOR& allocator,
6957 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
6958 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
6959 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
6960 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
6961 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
6962 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
6963 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
6964 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
6965 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08)
6966{
6967 typedef typename
6969
6970 return Imp::make<TARGET_TYPE>(
6971 allocator,
6972 Trait(),
6973 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
6974 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
6975 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
6976 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
6977 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
6978 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
6979 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
6980 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
6981 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08));
6982}
6983#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 8
6984
6985#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 9
6986template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
6987 class ARGS_02,
6988 class ARGS_03,
6989 class ARGS_04,
6990 class ARGS_05,
6991 class ARGS_06,
6992 class ARGS_07,
6993 class ARGS_08,
6994 class ARGS_09>
6995inline
6996TARGET_TYPE
6997ConstructionUtil::make(const ALLOCATOR& allocator,
6998 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
6999 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
7000 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
7001 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
7002 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
7003 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
7004 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
7005 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
7006 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
7007 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09)
7008{
7009 typedef typename
7011
7012 return Imp::make<TARGET_TYPE>(
7013 allocator,
7014 Trait(),
7015 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
7016 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
7017 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
7018 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
7019 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
7020 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
7021 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
7022 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
7023 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
7024 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09));
7025}
7026#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 9
7027
7028#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 10
7029template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
7030 class ARGS_02,
7031 class ARGS_03,
7032 class ARGS_04,
7033 class ARGS_05,
7034 class ARGS_06,
7035 class ARGS_07,
7036 class ARGS_08,
7037 class ARGS_09,
7038 class ARGS_10>
7039inline
7040TARGET_TYPE
7041ConstructionUtil::make(const ALLOCATOR& allocator,
7042 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
7043 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
7044 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
7045 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
7046 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
7047 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
7048 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
7049 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
7050 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
7051 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
7052 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10)
7053{
7054 typedef typename
7056
7057 return Imp::make<TARGET_TYPE>(
7058 allocator,
7059 Trait(),
7060 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
7061 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
7062 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
7063 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
7064 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
7065 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
7066 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
7067 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
7068 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
7069 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
7070 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10));
7071}
7072#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 10
7073
7074#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 11
7075template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
7076 class ARGS_02,
7077 class ARGS_03,
7078 class ARGS_04,
7079 class ARGS_05,
7080 class ARGS_06,
7081 class ARGS_07,
7082 class ARGS_08,
7083 class ARGS_09,
7084 class ARGS_10,
7085 class ARGS_11>
7086inline
7087TARGET_TYPE
7088ConstructionUtil::make(const ALLOCATOR& allocator,
7089 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
7090 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
7091 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
7092 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
7093 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
7094 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
7095 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
7096 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
7097 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
7098 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
7099 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
7100 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11)
7101{
7102 typedef typename
7104
7105 return Imp::make<TARGET_TYPE>(
7106 allocator,
7107 Trait(),
7108 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
7109 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
7110 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
7111 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
7112 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
7113 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
7114 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
7115 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
7116 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
7117 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
7118 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
7119 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11));
7120}
7121#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 11
7122
7123#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 12
7124template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
7125 class ARGS_02,
7126 class ARGS_03,
7127 class ARGS_04,
7128 class ARGS_05,
7129 class ARGS_06,
7130 class ARGS_07,
7131 class ARGS_08,
7132 class ARGS_09,
7133 class ARGS_10,
7134 class ARGS_11,
7135 class ARGS_12>
7136inline
7137TARGET_TYPE
7138ConstructionUtil::make(const ALLOCATOR& allocator,
7139 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
7140 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
7141 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
7142 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
7143 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
7144 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
7145 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
7146 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
7147 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
7148 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
7149 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
7150 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
7151 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12)
7152{
7153 typedef typename
7155
7156 return Imp::make<TARGET_TYPE>(
7157 allocator,
7158 Trait(),
7159 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
7160 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
7161 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
7162 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
7163 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
7164 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
7165 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
7166 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
7167 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
7168 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
7169 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
7170 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
7171 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12));
7172}
7173#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 12
7174
7175#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 13
7176template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
7177 class ARGS_02,
7178 class ARGS_03,
7179 class ARGS_04,
7180 class ARGS_05,
7181 class ARGS_06,
7182 class ARGS_07,
7183 class ARGS_08,
7184 class ARGS_09,
7185 class ARGS_10,
7186 class ARGS_11,
7187 class ARGS_12,
7188 class ARGS_13>
7189inline
7190TARGET_TYPE
7191ConstructionUtil::make(const ALLOCATOR& allocator,
7192 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
7193 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
7194 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
7195 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
7196 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
7197 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
7198 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
7199 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
7200 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
7201 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
7202 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
7203 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
7204 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
7205 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13)
7206{
7207 typedef typename
7209
7210 return Imp::make<TARGET_TYPE>(
7211 allocator,
7212 Trait(),
7213 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
7214 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
7215 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
7216 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
7217 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
7218 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
7219 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
7220 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
7221 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
7222 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
7223 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
7224 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
7225 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
7226 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13));
7227}
7228#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_F >= 13
7229
7230#else
7231// The generated code below is a workaround for the absence of perfect
7232// forwarding in some compilers.
7233# ifndef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
7234template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
7235inline
7236TARGET_TYPE
7237ConstructionUtil::make(const ALLOCATOR& allocator,
7238 ARG1& argument1,
7239 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments)
7240{
7241 typedef typename
7243
7244 return Imp::make<TARGET_TYPE>(
7245 allocator,
7246 Trait(),
7247 argument1,
7248 BSLS_COMPILERFEATURES_FORWARD(ARGS, arguments)...);
7249}
7250# endif
7251
7252template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
7253inline
7254TARGET_TYPE
7255ConstructionUtil::make(const ALLOCATOR& allocator,
7256 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
7257 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments)
7258{
7259 typedef typename
7261
7262 return Imp::make<TARGET_TYPE>(
7263 allocator,
7264 Trait(),
7265 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
7266 BSLS_COMPILERFEATURES_FORWARD(ARGS, arguments)...);
7267}
7268// }}} END GENERATED CODE
7269#endif
7270
7271// BDE_VERIFY pragma: pop
7272#endif // defined(BSLS_COMPILERFEATURES_GUARANTEED_COPY_ELISION)
7273
7274 // ---------------------------
7275 // struct ConstructionUtil_Imp
7276 // ---------------------------
7277
7278// CLASS METHODS
7279template <class TARGET_TYPE, class ALLOCATOR>
7280inline
7281void
7283 TARGET_TYPE *address,
7284 const ALLOCATOR& allocator,
7286{
7287 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
7288 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
7289 bsl::allocator_arg,
7290 AllocUtil::adapt(allocator));
7291}
7292
7293template <class TARGET_TYPE, class ALLOCATOR>
7294inline
7295void
7297 TARGET_TYPE *address,
7298 const ALLOCATOR& allocator,
7300{
7301 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
7302 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
7303 AllocUtil::adapt(allocator));
7304}
7305
7306template <class TARGET_TYPE, class ALLOCATOR>
7307inline
7308void
7310 TARGET_TYPE *address,
7311 const ALLOCATOR& ,
7313{
7314 ::new (PointerUtil::voidify(address)) TARGET_TYPE();
7315}
7316
7317#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
7318// {{{ BEGIN GENERATED CODE
7319// Command line: sim_cpp11_features.pl bslma_constructionutil.h
7320#ifndef BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT
7321#define BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT 13
7322#endif
7323#ifndef BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G
7324#define BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT
7325#endif
7326# ifndef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
7327#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 0
7328template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
7329inline
7330void
7332 TARGET_TYPE *address,
7333 const ALLOCATOR& allocator,
7335 ARG1& argument1)
7336{
7337 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
7338 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
7339 bsl::allocator_arg,
7340 AllocUtil::adapt(allocator),
7341 argument1);
7342}
7343#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 0
7344
7345#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 1
7346template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
7347inline
7348void
7350 TARGET_TYPE *address,
7351 const ALLOCATOR& allocator,
7353 ARG1& argument1,
7354 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01)
7355{
7356 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
7357 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
7358 bsl::allocator_arg,
7359 AllocUtil::adapt(allocator),
7360 argument1,
7361 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01));
7362}
7363#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 1
7364
7365#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 2
7366template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
7367 class ARGS_02>
7368inline
7369void
7371 TARGET_TYPE *address,
7372 const ALLOCATOR& allocator,
7374 ARG1& argument1,
7375 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
7376 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02)
7377{
7378 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
7379 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
7380 bsl::allocator_arg,
7381 AllocUtil::adapt(allocator),
7382 argument1,
7383 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
7384 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02));
7385}
7386#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 2
7387
7388#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 3
7389template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
7390 class ARGS_02,
7391 class ARGS_03>
7392inline
7393void
7395 TARGET_TYPE *address,
7396 const ALLOCATOR& allocator,
7398 ARG1& argument1,
7399 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
7400 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
7401 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03)
7402{
7403 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
7404 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
7405 bsl::allocator_arg,
7406 AllocUtil::adapt(allocator),
7407 argument1,
7408 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
7409 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
7410 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03));
7411}
7412#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 3
7413
7414#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 4
7415template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
7416 class ARGS_02,
7417 class ARGS_03,
7418 class ARGS_04>
7419inline
7420void
7422 TARGET_TYPE *address,
7423 const ALLOCATOR& allocator,
7425 ARG1& argument1,
7426 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
7427 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
7428 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
7429 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04)
7430{
7431 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
7432 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
7433 bsl::allocator_arg,
7434 AllocUtil::adapt(allocator),
7435 argument1,
7436 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
7437 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
7438 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
7439 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04));
7440}
7441#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 4
7442
7443#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 5
7444template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
7445 class ARGS_02,
7446 class ARGS_03,
7447 class ARGS_04,
7448 class ARGS_05>
7449inline
7450void
7452 TARGET_TYPE *address,
7453 const ALLOCATOR& allocator,
7455 ARG1& argument1,
7456 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
7457 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
7458 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
7459 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
7460 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05)
7461{
7462 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
7463 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
7464 bsl::allocator_arg,
7465 AllocUtil::adapt(allocator),
7466 argument1,
7467 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
7468 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
7469 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
7470 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
7471 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05));
7472}
7473#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 5
7474
7475#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 6
7476template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
7477 class ARGS_02,
7478 class ARGS_03,
7479 class ARGS_04,
7480 class ARGS_05,
7481 class ARGS_06>
7482inline
7483void
7485 TARGET_TYPE *address,
7486 const ALLOCATOR& allocator,
7488 ARG1& argument1,
7489 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
7490 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
7491 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
7492 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
7493 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
7494 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06)
7495{
7496 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
7497 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
7498 bsl::allocator_arg,
7499 AllocUtil::adapt(allocator),
7500 argument1,
7501 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
7502 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
7503 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
7504 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
7505 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
7506 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06));
7507}
7508#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 6
7509
7510#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 7
7511template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
7512 class ARGS_02,
7513 class ARGS_03,
7514 class ARGS_04,
7515 class ARGS_05,
7516 class ARGS_06,
7517 class ARGS_07>
7518inline
7519void
7521 TARGET_TYPE *address,
7522 const ALLOCATOR& allocator,
7524 ARG1& argument1,
7525 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
7526 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
7527 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
7528 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
7529 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
7530 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
7531 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07)
7532{
7533 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
7534 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
7535 bsl::allocator_arg,
7536 AllocUtil::adapt(allocator),
7537 argument1,
7538 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
7539 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
7540 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
7541 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
7542 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
7543 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
7544 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07));
7545}
7546#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 7
7547
7548#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 8
7549template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
7550 class ARGS_02,
7551 class ARGS_03,
7552 class ARGS_04,
7553 class ARGS_05,
7554 class ARGS_06,
7555 class ARGS_07,
7556 class ARGS_08>
7557inline
7558void
7560 TARGET_TYPE *address,
7561 const ALLOCATOR& allocator,
7563 ARG1& argument1,
7564 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
7565 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
7566 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
7567 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
7568 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
7569 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
7570 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
7571 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08)
7572{
7573 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
7574 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
7575 bsl::allocator_arg,
7576 AllocUtil::adapt(allocator),
7577 argument1,
7578 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
7579 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
7580 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
7581 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
7582 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
7583 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
7584 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
7585 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08));
7586}
7587#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 8
7588
7589#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 9
7590template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
7591 class ARGS_02,
7592 class ARGS_03,
7593 class ARGS_04,
7594 class ARGS_05,
7595 class ARGS_06,
7596 class ARGS_07,
7597 class ARGS_08,
7598 class ARGS_09>
7599inline
7600void
7602 TARGET_TYPE *address,
7603 const ALLOCATOR& allocator,
7605 ARG1& argument1,
7606 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
7607 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
7608 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
7609 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
7610 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
7611 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
7612 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
7613 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
7614 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09)
7615{
7616 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
7617 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
7618 bsl::allocator_arg,
7619 AllocUtil::adapt(allocator),
7620 argument1,
7621 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
7622 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
7623 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
7624 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
7625 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
7626 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
7627 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
7628 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
7629 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09));
7630}
7631#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 9
7632
7633#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 10
7634template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
7635 class ARGS_02,
7636 class ARGS_03,
7637 class ARGS_04,
7638 class ARGS_05,
7639 class ARGS_06,
7640 class ARGS_07,
7641 class ARGS_08,
7642 class ARGS_09,
7643 class ARGS_10>
7644inline
7645void
7647 TARGET_TYPE *address,
7648 const ALLOCATOR& allocator,
7650 ARG1& argument1,
7651 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
7652 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
7653 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
7654 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
7655 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
7656 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
7657 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
7658 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
7659 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
7660 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10)
7661{
7662 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
7663 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
7664 bsl::allocator_arg,
7665 AllocUtil::adapt(allocator),
7666 argument1,
7667 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
7668 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
7669 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
7670 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
7671 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
7672 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
7673 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
7674 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
7675 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
7676 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10));
7677}
7678#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 10
7679
7680#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 11
7681template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
7682 class ARGS_02,
7683 class ARGS_03,
7684 class ARGS_04,
7685 class ARGS_05,
7686 class ARGS_06,
7687 class ARGS_07,
7688 class ARGS_08,
7689 class ARGS_09,
7690 class ARGS_10,
7691 class ARGS_11>
7692inline
7693void
7695 TARGET_TYPE *address,
7696 const ALLOCATOR& allocator,
7698 ARG1& argument1,
7699 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
7700 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
7701 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
7702 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
7703 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
7704 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
7705 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
7706 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
7707 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
7708 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
7709 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11)
7710{
7711 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
7712 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
7713 bsl::allocator_arg,
7714 AllocUtil::adapt(allocator),
7715 argument1,
7716 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
7717 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
7718 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
7719 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
7720 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
7721 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
7722 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
7723 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
7724 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
7725 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
7726 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11));
7727}
7728#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 11
7729
7730#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 12
7731template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
7732 class ARGS_02,
7733 class ARGS_03,
7734 class ARGS_04,
7735 class ARGS_05,
7736 class ARGS_06,
7737 class ARGS_07,
7738 class ARGS_08,
7739 class ARGS_09,
7740 class ARGS_10,
7741 class ARGS_11,
7742 class ARGS_12>
7743inline
7744void
7746 TARGET_TYPE *address,
7747 const ALLOCATOR& allocator,
7749 ARG1& argument1,
7750 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
7751 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
7752 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
7753 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
7754 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
7755 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
7756 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
7757 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
7758 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
7759 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
7760 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
7761 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12)
7762{
7763 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
7764 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
7765 bsl::allocator_arg,
7766 AllocUtil::adapt(allocator),
7767 argument1,
7768 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
7769 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
7770 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
7771 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
7772 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
7773 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
7774 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
7775 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
7776 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
7777 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
7778 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
7779 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12));
7780}
7781#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 12
7782
7783#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 13
7784template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
7785 class ARGS_02,
7786 class ARGS_03,
7787 class ARGS_04,
7788 class ARGS_05,
7789 class ARGS_06,
7790 class ARGS_07,
7791 class ARGS_08,
7792 class ARGS_09,
7793 class ARGS_10,
7794 class ARGS_11,
7795 class ARGS_12,
7796 class ARGS_13>
7797inline
7798void
7800 TARGET_TYPE *address,
7801 const ALLOCATOR& allocator,
7803 ARG1& argument1,
7804 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
7805 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
7806 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
7807 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
7808 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
7809 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
7810 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
7811 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
7812 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
7813 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
7814 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
7815 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
7816 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13)
7817{
7818 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
7819 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
7820 bsl::allocator_arg,
7821 AllocUtil::adapt(allocator),
7822 argument1,
7823 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
7824 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
7825 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
7826 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
7827 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
7828 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
7829 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
7830 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
7831 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
7832 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
7833 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
7834 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
7835 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13));
7836}
7837#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 13
7838
7839
7840#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 0
7841template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
7842inline
7843void
7845 TARGET_TYPE *address,
7846 const ALLOCATOR& allocator,
7848 ARG1& argument1)
7849{
7850 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
7851 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
7852 argument1,
7853 AllocUtil::adapt(allocator));
7854}
7855#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 0
7856
7857#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 1
7858template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
7859inline
7860void
7862 TARGET_TYPE *address,
7863 const ALLOCATOR& allocator,
7865 ARG1& argument1,
7866 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01)
7867{
7868 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
7869 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
7870 argument1,
7871 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
7872 AllocUtil::adapt(allocator));
7873}
7874#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 1
7875
7876#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 2
7877template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
7878 class ARGS_02>
7879inline
7880void
7882 TARGET_TYPE *address,
7883 const ALLOCATOR& allocator,
7885 ARG1& argument1,
7886 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
7887 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02)
7888{
7889 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
7890 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
7891 argument1,
7892 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
7893 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
7894 AllocUtil::adapt(allocator));
7895}
7896#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 2
7897
7898#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 3
7899template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
7900 class ARGS_02,
7901 class ARGS_03>
7902inline
7903void
7905 TARGET_TYPE *address,
7906 const ALLOCATOR& allocator,
7908 ARG1& argument1,
7909 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
7910 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
7911 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03)
7912{
7913 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
7914 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
7915 argument1,
7916 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
7917 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
7918 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
7919 AllocUtil::adapt(allocator));
7920}
7921#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 3
7922
7923#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 4
7924template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
7925 class ARGS_02,
7926 class ARGS_03,
7927 class ARGS_04>
7928inline
7929void
7931 TARGET_TYPE *address,
7932 const ALLOCATOR& allocator,
7934 ARG1& argument1,
7935 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
7936 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
7937 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
7938 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04)
7939{
7940 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
7941 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
7942 argument1,
7943 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
7944 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
7945 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
7946 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
7947 AllocUtil::adapt(allocator));
7948}
7949#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 4
7950
7951#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 5
7952template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
7953 class ARGS_02,
7954 class ARGS_03,
7955 class ARGS_04,
7956 class ARGS_05>
7957inline
7958void
7960 TARGET_TYPE *address,
7961 const ALLOCATOR& allocator,
7963 ARG1& argument1,
7964 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
7965 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
7966 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
7967 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
7968 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05)
7969{
7970 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
7971 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
7972 argument1,
7973 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
7974 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
7975 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
7976 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
7977 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
7978 AllocUtil::adapt(allocator));
7979}
7980#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 5
7981
7982#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 6
7983template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
7984 class ARGS_02,
7985 class ARGS_03,
7986 class ARGS_04,
7987 class ARGS_05,
7988 class ARGS_06>
7989inline
7990void
7992 TARGET_TYPE *address,
7993 const ALLOCATOR& allocator,
7995 ARG1& argument1,
7996 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
7997 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
7998 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
7999 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
8000 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
8001 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06)
8002{
8003 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
8004 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8005 argument1,
8006 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8007 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8008 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
8009 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
8010 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
8011 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
8012 AllocUtil::adapt(allocator));
8013}
8014#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 6
8015
8016#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 7
8017template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8018 class ARGS_02,
8019 class ARGS_03,
8020 class ARGS_04,
8021 class ARGS_05,
8022 class ARGS_06,
8023 class ARGS_07>
8024inline
8025void
8027 TARGET_TYPE *address,
8028 const ALLOCATOR& allocator,
8030 ARG1& argument1,
8031 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8032 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
8033 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
8034 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
8035 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
8036 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
8037 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07)
8038{
8039 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
8040 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8041 argument1,
8042 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8043 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8044 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
8045 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
8046 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
8047 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
8048 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
8049 AllocUtil::adapt(allocator));
8050}
8051#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 7
8052
8053#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 8
8054template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8055 class ARGS_02,
8056 class ARGS_03,
8057 class ARGS_04,
8058 class ARGS_05,
8059 class ARGS_06,
8060 class ARGS_07,
8061 class ARGS_08>
8062inline
8063void
8065 TARGET_TYPE *address,
8066 const ALLOCATOR& allocator,
8068 ARG1& argument1,
8069 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8070 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
8071 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
8072 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
8073 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
8074 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
8075 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
8076 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08)
8077{
8078 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
8079 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8080 argument1,
8081 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8082 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8083 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
8084 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
8085 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
8086 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
8087 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
8088 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
8089 AllocUtil::adapt(allocator));
8090}
8091#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 8
8092
8093#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 9
8094template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8095 class ARGS_02,
8096 class ARGS_03,
8097 class ARGS_04,
8098 class ARGS_05,
8099 class ARGS_06,
8100 class ARGS_07,
8101 class ARGS_08,
8102 class ARGS_09>
8103inline
8104void
8106 TARGET_TYPE *address,
8107 const ALLOCATOR& allocator,
8109 ARG1& argument1,
8110 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8111 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
8112 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
8113 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
8114 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
8115 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
8116 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
8117 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
8118 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09)
8119{
8120 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
8121 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8122 argument1,
8123 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8124 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8125 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
8126 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
8127 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
8128 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
8129 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
8130 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
8131 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
8132 AllocUtil::adapt(allocator));
8133}
8134#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 9
8135
8136#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 10
8137template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8138 class ARGS_02,
8139 class ARGS_03,
8140 class ARGS_04,
8141 class ARGS_05,
8142 class ARGS_06,
8143 class ARGS_07,
8144 class ARGS_08,
8145 class ARGS_09,
8146 class ARGS_10>
8147inline
8148void
8150 TARGET_TYPE *address,
8151 const ALLOCATOR& allocator,
8153 ARG1& argument1,
8154 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8155 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
8156 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
8157 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
8158 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
8159 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
8160 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
8161 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
8162 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
8163 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10)
8164{
8165 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
8166 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8167 argument1,
8168 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8169 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8170 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
8171 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
8172 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
8173 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
8174 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
8175 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
8176 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
8177 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
8178 AllocUtil::adapt(allocator));
8179}
8180#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 10
8181
8182#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 11
8183template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8184 class ARGS_02,
8185 class ARGS_03,
8186 class ARGS_04,
8187 class ARGS_05,
8188 class ARGS_06,
8189 class ARGS_07,
8190 class ARGS_08,
8191 class ARGS_09,
8192 class ARGS_10,
8193 class ARGS_11>
8194inline
8195void
8197 TARGET_TYPE *address,
8198 const ALLOCATOR& allocator,
8200 ARG1& argument1,
8201 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8202 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
8203 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
8204 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
8205 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
8206 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
8207 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
8208 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
8209 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
8210 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
8211 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11)
8212{
8213 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
8214 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8215 argument1,
8216 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8217 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8218 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
8219 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
8220 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
8221 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
8222 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
8223 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
8224 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
8225 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
8226 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
8227 AllocUtil::adapt(allocator));
8228}
8229#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 11
8230
8231#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 12
8232template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8233 class ARGS_02,
8234 class ARGS_03,
8235 class ARGS_04,
8236 class ARGS_05,
8237 class ARGS_06,
8238 class ARGS_07,
8239 class ARGS_08,
8240 class ARGS_09,
8241 class ARGS_10,
8242 class ARGS_11,
8243 class ARGS_12>
8244inline
8245void
8247 TARGET_TYPE *address,
8248 const ALLOCATOR& allocator,
8250 ARG1& argument1,
8251 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8252 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
8253 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
8254 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
8255 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
8256 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
8257 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
8258 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
8259 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
8260 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
8261 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
8262 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12)
8263{
8264 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
8265 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8266 argument1,
8267 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8268 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8269 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
8270 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
8271 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
8272 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
8273 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
8274 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
8275 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
8276 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
8277 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
8278 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
8279 AllocUtil::adapt(allocator));
8280}
8281#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 12
8282
8283#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 13
8284template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8285 class ARGS_02,
8286 class ARGS_03,
8287 class ARGS_04,
8288 class ARGS_05,
8289 class ARGS_06,
8290 class ARGS_07,
8291 class ARGS_08,
8292 class ARGS_09,
8293 class ARGS_10,
8294 class ARGS_11,
8295 class ARGS_12,
8296 class ARGS_13>
8297inline
8298void
8300 TARGET_TYPE *address,
8301 const ALLOCATOR& allocator,
8303 ARG1& argument1,
8304 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8305 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
8306 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
8307 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
8308 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
8309 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
8310 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
8311 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
8312 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
8313 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
8314 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
8315 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
8316 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13)
8317{
8318 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
8319 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8320 argument1,
8321 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8322 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8323 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
8324 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
8325 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
8326 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
8327 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
8328 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
8329 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
8330 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
8331 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
8332 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
8333 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13),
8334 AllocUtil::adapt(allocator));
8335}
8336#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 13
8337
8338
8339#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 0
8340template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
8341inline
8342void
8344 TARGET_TYPE *address,
8345 const ALLOCATOR& ,
8347 ARG1& argument1)
8348{
8349 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8350 argument1);
8351}
8352#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 0
8353
8354#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 1
8355template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
8356inline
8357void
8359 TARGET_TYPE *address,
8360 const ALLOCATOR& ,
8362 ARG1& argument1,
8363 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01)
8364{
8365 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8366 argument1,
8367 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01));
8368}
8369#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 1
8370
8371#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 2
8372template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8373 class ARGS_02>
8374inline
8375void
8377 TARGET_TYPE *address,
8378 const ALLOCATOR& ,
8380 ARG1& argument1,
8381 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8382 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02)
8383{
8384 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8385 argument1,
8386 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8387 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02));
8388}
8389#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 2
8390
8391#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 3
8392template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8393 class ARGS_02,
8394 class ARGS_03>
8395inline
8396void
8398 TARGET_TYPE *address,
8399 const ALLOCATOR& ,
8401 ARG1& argument1,
8402 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8403 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
8404 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03)
8405{
8406 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8407 argument1,
8408 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8409 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8410 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03));
8411}
8412#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 3
8413
8414#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 4
8415template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8416 class ARGS_02,
8417 class ARGS_03,
8418 class ARGS_04>
8419inline
8420void
8422 TARGET_TYPE *address,
8423 const ALLOCATOR& ,
8425 ARG1& argument1,
8426 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8427 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
8428 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
8429 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04)
8430{
8431 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8432 argument1,
8433 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8434 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8435 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
8436 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04));
8437}
8438#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 4
8439
8440#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 5
8441template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8442 class ARGS_02,
8443 class ARGS_03,
8444 class ARGS_04,
8445 class ARGS_05>
8446inline
8447void
8449 TARGET_TYPE *address,
8450 const ALLOCATOR& ,
8452 ARG1& argument1,
8453 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8454 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
8455 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
8456 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
8457 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05)
8458{
8459 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8460 argument1,
8461 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8462 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8463 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
8464 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
8465 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05));
8466}
8467#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 5
8468
8469#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 6
8470template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8471 class ARGS_02,
8472 class ARGS_03,
8473 class ARGS_04,
8474 class ARGS_05,
8475 class ARGS_06>
8476inline
8477void
8479 TARGET_TYPE *address,
8480 const ALLOCATOR& ,
8482 ARG1& argument1,
8483 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8484 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
8485 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
8486 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
8487 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
8488 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06)
8489{
8490 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8491 argument1,
8492 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8493 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8494 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
8495 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
8496 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
8497 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06));
8498}
8499#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 6
8500
8501#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 7
8502template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8503 class ARGS_02,
8504 class ARGS_03,
8505 class ARGS_04,
8506 class ARGS_05,
8507 class ARGS_06,
8508 class ARGS_07>
8509inline
8510void
8512 TARGET_TYPE *address,
8513 const ALLOCATOR& ,
8515 ARG1& argument1,
8516 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8517 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
8518 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
8519 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
8520 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
8521 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
8522 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07)
8523{
8524 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8525 argument1,
8526 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8527 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8528 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
8529 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
8530 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
8531 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
8532 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07));
8533}
8534#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 7
8535
8536#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 8
8537template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8538 class ARGS_02,
8539 class ARGS_03,
8540 class ARGS_04,
8541 class ARGS_05,
8542 class ARGS_06,
8543 class ARGS_07,
8544 class ARGS_08>
8545inline
8546void
8548 TARGET_TYPE *address,
8549 const ALLOCATOR& ,
8551 ARG1& argument1,
8552 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8553 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
8554 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
8555 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
8556 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
8557 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
8558 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
8559 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08)
8560{
8561 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8562 argument1,
8563 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8564 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8565 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
8566 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
8567 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
8568 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
8569 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
8570 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08));
8571}
8572#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 8
8573
8574#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 9
8575template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8576 class ARGS_02,
8577 class ARGS_03,
8578 class ARGS_04,
8579 class ARGS_05,
8580 class ARGS_06,
8581 class ARGS_07,
8582 class ARGS_08,
8583 class ARGS_09>
8584inline
8585void
8587 TARGET_TYPE *address,
8588 const ALLOCATOR& ,
8590 ARG1& argument1,
8591 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8592 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
8593 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
8594 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
8595 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
8596 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
8597 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
8598 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
8599 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09)
8600{
8601 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8602 argument1,
8603 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8604 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8605 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
8606 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
8607 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
8608 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
8609 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
8610 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
8611 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09));
8612}
8613#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 9
8614
8615#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 10
8616template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8617 class ARGS_02,
8618 class ARGS_03,
8619 class ARGS_04,
8620 class ARGS_05,
8621 class ARGS_06,
8622 class ARGS_07,
8623 class ARGS_08,
8624 class ARGS_09,
8625 class ARGS_10>
8626inline
8627void
8629 TARGET_TYPE *address,
8630 const ALLOCATOR& ,
8632 ARG1& argument1,
8633 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8634 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
8635 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
8636 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
8637 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
8638 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
8639 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
8640 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
8641 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
8642 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10)
8643{
8644 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8645 argument1,
8646 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8647 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8648 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
8649 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
8650 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
8651 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
8652 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
8653 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
8654 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
8655 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10));
8656}
8657#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 10
8658
8659#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 11
8660template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8661 class ARGS_02,
8662 class ARGS_03,
8663 class ARGS_04,
8664 class ARGS_05,
8665 class ARGS_06,
8666 class ARGS_07,
8667 class ARGS_08,
8668 class ARGS_09,
8669 class ARGS_10,
8670 class ARGS_11>
8671inline
8672void
8674 TARGET_TYPE *address,
8675 const ALLOCATOR& ,
8677 ARG1& argument1,
8678 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8679 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
8680 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
8681 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
8682 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
8683 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
8684 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
8685 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
8686 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
8687 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
8688 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11)
8689{
8690 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8691 argument1,
8692 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8693 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8694 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
8695 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
8696 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
8697 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
8698 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
8699 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
8700 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
8701 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
8702 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11));
8703}
8704#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 11
8705
8706#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 12
8707template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8708 class ARGS_02,
8709 class ARGS_03,
8710 class ARGS_04,
8711 class ARGS_05,
8712 class ARGS_06,
8713 class ARGS_07,
8714 class ARGS_08,
8715 class ARGS_09,
8716 class ARGS_10,
8717 class ARGS_11,
8718 class ARGS_12>
8719inline
8720void
8722 TARGET_TYPE *address,
8723 const ALLOCATOR& ,
8725 ARG1& argument1,
8726 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8727 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
8728 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
8729 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
8730 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
8731 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
8732 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
8733 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
8734 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
8735 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
8736 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
8737 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12)
8738{
8739 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8740 argument1,
8741 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8742 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8743 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
8744 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
8745 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
8746 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
8747 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
8748 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
8749 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
8750 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
8751 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
8752 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12));
8753}
8754#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 12
8755
8756#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 13
8757template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8758 class ARGS_02,
8759 class ARGS_03,
8760 class ARGS_04,
8761 class ARGS_05,
8762 class ARGS_06,
8763 class ARGS_07,
8764 class ARGS_08,
8765 class ARGS_09,
8766 class ARGS_10,
8767 class ARGS_11,
8768 class ARGS_12,
8769 class ARGS_13>
8770inline
8771void
8773 TARGET_TYPE *address,
8774 const ALLOCATOR& ,
8776 ARG1& argument1,
8777 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8778 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
8779 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
8780 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
8781 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
8782 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
8783 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
8784 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
8785 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
8786 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
8787 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
8788 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
8789 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13)
8790{
8791 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8792 argument1,
8793 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8794 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8795 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
8796 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
8797 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
8798 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
8799 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
8800 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
8801 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
8802 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
8803 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
8804 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
8805 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13));
8806}
8807#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 13
8808
8809# endif
8810
8811#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 0
8812template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
8813inline
8814void
8816 TARGET_TYPE *address,
8817 const ALLOCATOR& allocator,
8819 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1)
8820{
8821 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
8822 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8823 bsl::allocator_arg,
8824 AllocUtil::adapt(allocator),
8825 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1));
8826}
8827#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 0
8828
8829#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 1
8830template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
8831inline
8832void
8834 TARGET_TYPE *address,
8835 const ALLOCATOR& allocator,
8837 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
8838 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01)
8839{
8840 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
8841 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8842 bsl::allocator_arg,
8843 AllocUtil::adapt(allocator),
8844 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
8845 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01));
8846}
8847#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 1
8848
8849#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 2
8850template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8851 class ARGS_02>
8852inline
8853void
8855 TARGET_TYPE *address,
8856 const ALLOCATOR& allocator,
8858 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
8859 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8860 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02)
8861{
8862 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
8863 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8864 bsl::allocator_arg,
8865 AllocUtil::adapt(allocator),
8866 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
8867 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8868 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02));
8869}
8870#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 2
8871
8872#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 3
8873template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8874 class ARGS_02,
8875 class ARGS_03>
8876inline
8877void
8879 TARGET_TYPE *address,
8880 const ALLOCATOR& allocator,
8882 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
8883 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8884 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
8885 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03)
8886{
8887 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
8888 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8889 bsl::allocator_arg,
8890 AllocUtil::adapt(allocator),
8891 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
8892 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8893 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8894 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03));
8895}
8896#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 3
8897
8898#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 4
8899template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8900 class ARGS_02,
8901 class ARGS_03,
8902 class ARGS_04>
8903inline
8904void
8906 TARGET_TYPE *address,
8907 const ALLOCATOR& allocator,
8909 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
8910 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8911 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
8912 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
8913 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04)
8914{
8915 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
8916 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8917 bsl::allocator_arg,
8918 AllocUtil::adapt(allocator),
8919 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
8920 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8921 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8922 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
8923 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04));
8924}
8925#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 4
8926
8927#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 5
8928template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8929 class ARGS_02,
8930 class ARGS_03,
8931 class ARGS_04,
8932 class ARGS_05>
8933inline
8934void
8936 TARGET_TYPE *address,
8937 const ALLOCATOR& allocator,
8939 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
8940 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8941 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
8942 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
8943 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
8944 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05)
8945{
8946 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
8947 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8948 bsl::allocator_arg,
8949 AllocUtil::adapt(allocator),
8950 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
8951 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8952 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8953 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
8954 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
8955 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05));
8956}
8957#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 5
8958
8959#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 6
8960template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8961 class ARGS_02,
8962 class ARGS_03,
8963 class ARGS_04,
8964 class ARGS_05,
8965 class ARGS_06>
8966inline
8967void
8969 TARGET_TYPE *address,
8970 const ALLOCATOR& allocator,
8972 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
8973 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
8974 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
8975 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
8976 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
8977 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
8978 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06)
8979{
8980 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
8981 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
8982 bsl::allocator_arg,
8983 AllocUtil::adapt(allocator),
8984 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
8985 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
8986 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
8987 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
8988 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
8989 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
8990 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06));
8991}
8992#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 6
8993
8994#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 7
8995template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
8996 class ARGS_02,
8997 class ARGS_03,
8998 class ARGS_04,
8999 class ARGS_05,
9000 class ARGS_06,
9001 class ARGS_07>
9002inline
9003void
9005 TARGET_TYPE *address,
9006 const ALLOCATOR& allocator,
9008 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9009 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9010 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
9011 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
9012 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
9013 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
9014 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
9015 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07)
9016{
9017 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
9018 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9019 bsl::allocator_arg,
9020 AllocUtil::adapt(allocator),
9021 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9022 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9023 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9024 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
9025 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
9026 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
9027 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
9028 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07));
9029}
9030#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 7
9031
9032#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 8
9033template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9034 class ARGS_02,
9035 class ARGS_03,
9036 class ARGS_04,
9037 class ARGS_05,
9038 class ARGS_06,
9039 class ARGS_07,
9040 class ARGS_08>
9041inline
9042void
9044 TARGET_TYPE *address,
9045 const ALLOCATOR& allocator,
9047 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9048 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9049 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
9050 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
9051 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
9052 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
9053 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
9054 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
9055 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08)
9056{
9057 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
9058 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9059 bsl::allocator_arg,
9060 AllocUtil::adapt(allocator),
9061 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9062 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9063 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9064 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
9065 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
9066 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
9067 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
9068 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
9069 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08));
9070}
9071#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 8
9072
9073#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 9
9074template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9075 class ARGS_02,
9076 class ARGS_03,
9077 class ARGS_04,
9078 class ARGS_05,
9079 class ARGS_06,
9080 class ARGS_07,
9081 class ARGS_08,
9082 class ARGS_09>
9083inline
9084void
9086 TARGET_TYPE *address,
9087 const ALLOCATOR& allocator,
9089 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9090 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9091 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
9092 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
9093 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
9094 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
9095 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
9096 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
9097 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
9098 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09)
9099{
9100 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
9101 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9102 bsl::allocator_arg,
9103 AllocUtil::adapt(allocator),
9104 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9105 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9106 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9107 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
9108 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
9109 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
9110 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
9111 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
9112 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
9113 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09));
9114}
9115#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 9
9116
9117#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 10
9118template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9119 class ARGS_02,
9120 class ARGS_03,
9121 class ARGS_04,
9122 class ARGS_05,
9123 class ARGS_06,
9124 class ARGS_07,
9125 class ARGS_08,
9126 class ARGS_09,
9127 class ARGS_10>
9128inline
9129void
9131 TARGET_TYPE *address,
9132 const ALLOCATOR& allocator,
9134 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9135 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9136 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
9137 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
9138 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
9139 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
9140 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
9141 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
9142 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
9143 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
9144 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10)
9145{
9146 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
9147 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9148 bsl::allocator_arg,
9149 AllocUtil::adapt(allocator),
9150 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9151 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9152 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9153 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
9154 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
9155 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
9156 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
9157 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
9158 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
9159 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
9160 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10));
9161}
9162#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 10
9163
9164#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 11
9165template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9166 class ARGS_02,
9167 class ARGS_03,
9168 class ARGS_04,
9169 class ARGS_05,
9170 class ARGS_06,
9171 class ARGS_07,
9172 class ARGS_08,
9173 class ARGS_09,
9174 class ARGS_10,
9175 class ARGS_11>
9176inline
9177void
9179 TARGET_TYPE *address,
9180 const ALLOCATOR& allocator,
9182 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9183 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9184 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
9185 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
9186 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
9187 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
9188 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
9189 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
9190 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
9191 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
9192 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
9193 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11)
9194{
9195 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
9196 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9197 bsl::allocator_arg,
9198 AllocUtil::adapt(allocator),
9199 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9200 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9201 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9202 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
9203 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
9204 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
9205 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
9206 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
9207 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
9208 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
9209 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
9210 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11));
9211}
9212#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 11
9213
9214#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 12
9215template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9216 class ARGS_02,
9217 class ARGS_03,
9218 class ARGS_04,
9219 class ARGS_05,
9220 class ARGS_06,
9221 class ARGS_07,
9222 class ARGS_08,
9223 class ARGS_09,
9224 class ARGS_10,
9225 class ARGS_11,
9226 class ARGS_12>
9227inline
9228void
9230 TARGET_TYPE *address,
9231 const ALLOCATOR& allocator,
9233 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9234 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9235 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
9236 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
9237 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
9238 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
9239 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
9240 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
9241 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
9242 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
9243 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
9244 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
9245 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12)
9246{
9247 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
9248 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9249 bsl::allocator_arg,
9250 AllocUtil::adapt(allocator),
9251 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9252 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9253 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9254 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
9255 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
9256 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
9257 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
9258 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
9259 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
9260 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
9261 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
9262 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
9263 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12));
9264}
9265#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 12
9266
9267#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 13
9268template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9269 class ARGS_02,
9270 class ARGS_03,
9271 class ARGS_04,
9272 class ARGS_05,
9273 class ARGS_06,
9274 class ARGS_07,
9275 class ARGS_08,
9276 class ARGS_09,
9277 class ARGS_10,
9278 class ARGS_11,
9279 class ARGS_12,
9280 class ARGS_13>
9281inline
9282void
9284 TARGET_TYPE *address,
9285 const ALLOCATOR& allocator,
9287 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9288 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9289 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
9290 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
9291 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
9292 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
9293 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
9294 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
9295 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
9296 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
9297 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
9298 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
9299 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
9300 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13)
9301{
9302 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
9303 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9304 bsl::allocator_arg,
9305 AllocUtil::adapt(allocator),
9306 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9307 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9308 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9309 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
9310 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
9311 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
9312 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
9313 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
9314 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
9315 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
9316 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
9317 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
9318 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
9319 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13));
9320}
9321#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 13
9322
9323
9324#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 0
9325template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
9326inline
9327void
9329 TARGET_TYPE *address,
9330 const ALLOCATOR& allocator,
9332 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1)
9333{
9334 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
9335 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9336 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9337 AllocUtil::adapt(allocator));
9338}
9339#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 0
9340
9341#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 1
9342template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
9343inline
9344void
9346 TARGET_TYPE *address,
9347 const ALLOCATOR& allocator,
9349 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9350 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01)
9351{
9352 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
9353 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9354 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9355 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9356 AllocUtil::adapt(allocator));
9357}
9358#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 1
9359
9360#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 2
9361template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9362 class ARGS_02>
9363inline
9364void
9366 TARGET_TYPE *address,
9367 const ALLOCATOR& allocator,
9369 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9370 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9371 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02)
9372{
9373 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
9374 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9375 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9376 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9377 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9378 AllocUtil::adapt(allocator));
9379}
9380#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 2
9381
9382#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 3
9383template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9384 class ARGS_02,
9385 class ARGS_03>
9386inline
9387void
9389 TARGET_TYPE *address,
9390 const ALLOCATOR& allocator,
9392 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9393 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9394 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
9395 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03)
9396{
9397 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
9398 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9399 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9400 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9401 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9402 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
9403 AllocUtil::adapt(allocator));
9404}
9405#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 3
9406
9407#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 4
9408template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9409 class ARGS_02,
9410 class ARGS_03,
9411 class ARGS_04>
9412inline
9413void
9415 TARGET_TYPE *address,
9416 const ALLOCATOR& allocator,
9418 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9419 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9420 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
9421 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
9422 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04)
9423{
9424 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
9425 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9426 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9427 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9428 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9429 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
9430 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
9431 AllocUtil::adapt(allocator));
9432}
9433#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 4
9434
9435#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 5
9436template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9437 class ARGS_02,
9438 class ARGS_03,
9439 class ARGS_04,
9440 class ARGS_05>
9441inline
9442void
9444 TARGET_TYPE *address,
9445 const ALLOCATOR& allocator,
9447 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9448 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9449 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
9450 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
9451 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
9452 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05)
9453{
9454 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
9455 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9456 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9457 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9458 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9459 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
9460 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
9461 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
9462 AllocUtil::adapt(allocator));
9463}
9464#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 5
9465
9466#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 6
9467template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9468 class ARGS_02,
9469 class ARGS_03,
9470 class ARGS_04,
9471 class ARGS_05,
9472 class ARGS_06>
9473inline
9474void
9476 TARGET_TYPE *address,
9477 const ALLOCATOR& allocator,
9479 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9480 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9481 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
9482 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
9483 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
9484 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
9485 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06)
9486{
9487 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
9488 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9489 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9490 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9491 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9492 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
9493 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
9494 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
9495 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
9496 AllocUtil::adapt(allocator));
9497}
9498#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 6
9499
9500#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 7
9501template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9502 class ARGS_02,
9503 class ARGS_03,
9504 class ARGS_04,
9505 class ARGS_05,
9506 class ARGS_06,
9507 class ARGS_07>
9508inline
9509void
9511 TARGET_TYPE *address,
9512 const ALLOCATOR& allocator,
9514 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9515 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9516 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
9517 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
9518 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
9519 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
9520 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
9521 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07)
9522{
9523 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
9524 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9525 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9526 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9527 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9528 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
9529 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
9530 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
9531 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
9532 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
9533 AllocUtil::adapt(allocator));
9534}
9535#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 7
9536
9537#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 8
9538template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9539 class ARGS_02,
9540 class ARGS_03,
9541 class ARGS_04,
9542 class ARGS_05,
9543 class ARGS_06,
9544 class ARGS_07,
9545 class ARGS_08>
9546inline
9547void
9549 TARGET_TYPE *address,
9550 const ALLOCATOR& allocator,
9552 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9553 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9554 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
9555 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
9556 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
9557 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
9558 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
9559 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
9560 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08)
9561{
9562 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
9563 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9564 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9565 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9566 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9567 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
9568 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
9569 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
9570 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
9571 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
9572 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
9573 AllocUtil::adapt(allocator));
9574}
9575#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 8
9576
9577#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 9
9578template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9579 class ARGS_02,
9580 class ARGS_03,
9581 class ARGS_04,
9582 class ARGS_05,
9583 class ARGS_06,
9584 class ARGS_07,
9585 class ARGS_08,
9586 class ARGS_09>
9587inline
9588void
9590 TARGET_TYPE *address,
9591 const ALLOCATOR& allocator,
9593 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9594 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9595 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
9596 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
9597 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
9598 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
9599 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
9600 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
9601 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
9602 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09)
9603{
9604 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
9605 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9606 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9607 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9608 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9609 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
9610 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
9611 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
9612 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
9613 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
9614 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
9615 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
9616 AllocUtil::adapt(allocator));
9617}
9618#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 9
9619
9620#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 10
9621template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9622 class ARGS_02,
9623 class ARGS_03,
9624 class ARGS_04,
9625 class ARGS_05,
9626 class ARGS_06,
9627 class ARGS_07,
9628 class ARGS_08,
9629 class ARGS_09,
9630 class ARGS_10>
9631inline
9632void
9634 TARGET_TYPE *address,
9635 const ALLOCATOR& allocator,
9637 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9638 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9639 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
9640 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
9641 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
9642 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
9643 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
9644 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
9645 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
9646 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
9647 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10)
9648{
9649 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
9650 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9651 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9652 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9653 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9654 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
9655 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
9656 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
9657 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
9658 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
9659 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
9660 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
9661 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
9662 AllocUtil::adapt(allocator));
9663}
9664#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 10
9665
9666#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 11
9667template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9668 class ARGS_02,
9669 class ARGS_03,
9670 class ARGS_04,
9671 class ARGS_05,
9672 class ARGS_06,
9673 class ARGS_07,
9674 class ARGS_08,
9675 class ARGS_09,
9676 class ARGS_10,
9677 class ARGS_11>
9678inline
9679void
9681 TARGET_TYPE *address,
9682 const ALLOCATOR& allocator,
9684 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9685 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9686 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
9687 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
9688 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
9689 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
9690 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
9691 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
9692 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
9693 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
9694 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
9695 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11)
9696{
9697 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
9698 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9699 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9700 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9701 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9702 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
9703 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
9704 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
9705 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
9706 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
9707 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
9708 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
9709 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
9710 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
9711 AllocUtil::adapt(allocator));
9712}
9713#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 11
9714
9715#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 12
9716template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9717 class ARGS_02,
9718 class ARGS_03,
9719 class ARGS_04,
9720 class ARGS_05,
9721 class ARGS_06,
9722 class ARGS_07,
9723 class ARGS_08,
9724 class ARGS_09,
9725 class ARGS_10,
9726 class ARGS_11,
9727 class ARGS_12>
9728inline
9729void
9731 TARGET_TYPE *address,
9732 const ALLOCATOR& allocator,
9734 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9735 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9736 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
9737 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
9738 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
9739 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
9740 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
9741 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
9742 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
9743 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
9744 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
9745 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
9746 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12)
9747{
9748 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
9749 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9750 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9751 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9752 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9753 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
9754 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
9755 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
9756 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
9757 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
9758 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
9759 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
9760 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
9761 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
9762 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
9763 AllocUtil::adapt(allocator));
9764}
9765#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 12
9766
9767#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 13
9768template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9769 class ARGS_02,
9770 class ARGS_03,
9771 class ARGS_04,
9772 class ARGS_05,
9773 class ARGS_06,
9774 class ARGS_07,
9775 class ARGS_08,
9776 class ARGS_09,
9777 class ARGS_10,
9778 class ARGS_11,
9779 class ARGS_12,
9780 class ARGS_13>
9781inline
9782void
9784 TARGET_TYPE *address,
9785 const ALLOCATOR& allocator,
9787 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9788 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9789 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
9790 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
9791 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
9792 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
9793 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
9794 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
9795 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
9796 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
9797 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
9798 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
9799 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
9800 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13)
9801{
9802 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
9803 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9804 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9805 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9806 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9807 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
9808 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
9809 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
9810 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
9811 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
9812 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
9813 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
9814 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
9815 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
9816 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
9817 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13),
9818 AllocUtil::adapt(allocator));
9819}
9820#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 13
9821
9822
9823#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 0
9824template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
9825inline
9826void
9828 TARGET_TYPE *address,
9829 const ALLOCATOR& ,
9831 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1)
9832{
9833 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9834 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1));
9835}
9836#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 0
9837
9838#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 1
9839template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
9840inline
9841void
9843 TARGET_TYPE *address,
9844 const ALLOCATOR& ,
9846 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9847 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01)
9848{
9849 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9850 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9851 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01));
9852}
9853#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 1
9854
9855#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 2
9856template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9857 class ARGS_02>
9858inline
9859void
9861 TARGET_TYPE *address,
9862 const ALLOCATOR& ,
9864 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9865 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9866 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02)
9867{
9868 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9869 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9870 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9871 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02));
9872}
9873#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 2
9874
9875#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 3
9876template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9877 class ARGS_02,
9878 class ARGS_03>
9879inline
9880void
9882 TARGET_TYPE *address,
9883 const ALLOCATOR& ,
9885 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9886 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9887 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
9888 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03)
9889{
9890 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9891 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9892 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9893 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9894 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03));
9895}
9896#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 3
9897
9898#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 4
9899template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9900 class ARGS_02,
9901 class ARGS_03,
9902 class ARGS_04>
9903inline
9904void
9906 TARGET_TYPE *address,
9907 const ALLOCATOR& ,
9909 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9910 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9911 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
9912 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
9913 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04)
9914{
9915 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9916 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9917 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9918 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9919 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
9920 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04));
9921}
9922#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 4
9923
9924#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 5
9925template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9926 class ARGS_02,
9927 class ARGS_03,
9928 class ARGS_04,
9929 class ARGS_05>
9930inline
9931void
9933 TARGET_TYPE *address,
9934 const ALLOCATOR& ,
9936 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9937 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9938 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
9939 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
9940 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
9941 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05)
9942{
9943 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9944 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9945 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9946 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9947 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
9948 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
9949 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05));
9950}
9951#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 5
9952
9953#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 6
9954template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9955 class ARGS_02,
9956 class ARGS_03,
9957 class ARGS_04,
9958 class ARGS_05,
9959 class ARGS_06>
9960inline
9961void
9963 TARGET_TYPE *address,
9964 const ALLOCATOR& ,
9966 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
9967 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
9968 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
9969 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
9970 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
9971 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
9972 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06)
9973{
9974 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
9975 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
9976 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
9977 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
9978 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
9979 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
9980 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
9981 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06));
9982}
9983#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 6
9984
9985#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 7
9986template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
9987 class ARGS_02,
9988 class ARGS_03,
9989 class ARGS_04,
9990 class ARGS_05,
9991 class ARGS_06,
9992 class ARGS_07>
9993inline
9994void
9996 TARGET_TYPE *address,
9997 const ALLOCATOR& ,
9999 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
10000 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
10001 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
10002 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
10003 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
10004 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
10005 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
10006 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07)
10007{
10008 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
10009 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
10010 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
10011 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
10012 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
10013 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
10014 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
10015 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
10016 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07));
10017}
10018#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 7
10019
10020#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 8
10021template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
10022 class ARGS_02,
10023 class ARGS_03,
10024 class ARGS_04,
10025 class ARGS_05,
10026 class ARGS_06,
10027 class ARGS_07,
10028 class ARGS_08>
10029inline
10030void
10032 TARGET_TYPE *address,
10033 const ALLOCATOR& ,
10035 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
10036 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
10037 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
10038 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
10039 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
10040 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
10041 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
10042 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
10043 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08)
10044{
10045 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
10046 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
10047 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
10048 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
10049 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
10050 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
10051 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
10052 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
10053 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
10054 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08));
10055}
10056#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 8
10057
10058#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 9
10059template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
10060 class ARGS_02,
10061 class ARGS_03,
10062 class ARGS_04,
10063 class ARGS_05,
10064 class ARGS_06,
10065 class ARGS_07,
10066 class ARGS_08,
10067 class ARGS_09>
10068inline
10069void
10071 TARGET_TYPE *address,
10072 const ALLOCATOR& ,
10074 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
10075 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
10076 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
10077 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
10078 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
10079 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
10080 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
10081 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
10082 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
10083 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09)
10084{
10085 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
10086 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
10087 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
10088 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
10089 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
10090 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
10091 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
10092 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
10093 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
10094 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
10095 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09));
10096}
10097#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 9
10098
10099#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 10
10100template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
10101 class ARGS_02,
10102 class ARGS_03,
10103 class ARGS_04,
10104 class ARGS_05,
10105 class ARGS_06,
10106 class ARGS_07,
10107 class ARGS_08,
10108 class ARGS_09,
10109 class ARGS_10>
10110inline
10111void
10113 TARGET_TYPE *address,
10114 const ALLOCATOR& ,
10116 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
10117 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
10118 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
10119 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
10120 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
10121 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
10122 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
10123 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
10124 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
10125 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
10126 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10)
10127{
10128 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
10129 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
10130 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
10131 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
10132 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
10133 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
10134 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
10135 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
10136 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
10137 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
10138 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
10139 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10));
10140}
10141#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 10
10142
10143#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 11
10144template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
10145 class ARGS_02,
10146 class ARGS_03,
10147 class ARGS_04,
10148 class ARGS_05,
10149 class ARGS_06,
10150 class ARGS_07,
10151 class ARGS_08,
10152 class ARGS_09,
10153 class ARGS_10,
10154 class ARGS_11>
10155inline
10156void
10158 TARGET_TYPE *address,
10159 const ALLOCATOR& ,
10161 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
10162 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
10163 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
10164 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
10165 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
10166 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
10167 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
10168 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
10169 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
10170 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
10171 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
10172 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11)
10173{
10174 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
10175 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
10176 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
10177 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
10178 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
10179 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
10180 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
10181 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
10182 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
10183 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
10184 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
10185 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
10186 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11));
10187}
10188#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 11
10189
10190#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 12
10191template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
10192 class ARGS_02,
10193 class ARGS_03,
10194 class ARGS_04,
10195 class ARGS_05,
10196 class ARGS_06,
10197 class ARGS_07,
10198 class ARGS_08,
10199 class ARGS_09,
10200 class ARGS_10,
10201 class ARGS_11,
10202 class ARGS_12>
10203inline
10204void
10206 TARGET_TYPE *address,
10207 const ALLOCATOR& ,
10209 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
10210 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
10211 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
10212 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
10213 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
10214 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
10215 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
10216 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
10217 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
10218 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
10219 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
10220 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
10221 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12)
10222{
10223 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
10224 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
10225 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
10226 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
10227 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
10228 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
10229 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
10230 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
10231 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
10232 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
10233 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
10234 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
10235 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
10236 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12));
10237}
10238#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 12
10239
10240#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 13
10241template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
10242 class ARGS_02,
10243 class ARGS_03,
10244 class ARGS_04,
10245 class ARGS_05,
10246 class ARGS_06,
10247 class ARGS_07,
10248 class ARGS_08,
10249 class ARGS_09,
10250 class ARGS_10,
10251 class ARGS_11,
10252 class ARGS_12,
10253 class ARGS_13>
10254inline
10255void
10257 TARGET_TYPE *address,
10258 const ALLOCATOR& ,
10260 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
10261 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
10262 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
10263 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
10264 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
10265 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
10266 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
10267 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
10268 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
10269 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
10270 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
10271 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
10272 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
10273 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13)
10274{
10275 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
10276 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
10277 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
10278 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
10279 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
10280 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
10281 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
10282 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
10283 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
10284 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
10285 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
10286 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
10287 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
10288 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
10289 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13));
10290}
10291#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_G >= 13
10292
10293#else
10294// The generated code below is a workaround for the absence of perfect
10295// forwarding in some compilers.
10296# ifndef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
10297template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
10298inline
10299void
10301 TARGET_TYPE *address,
10302 const ALLOCATOR& allocator,
10304 ARG1& argument1,
10305 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments)
10306{
10307 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
10308 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
10309 bsl::allocator_arg,
10310 AllocUtil::adapt(allocator),
10311 argument1,
10312 BSLS_COMPILERFEATURES_FORWARD(ARGS, arguments)...);
10313}
10314
10315template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
10316inline
10317void
10319 TARGET_TYPE *address,
10320 const ALLOCATOR& allocator,
10322 ARG1& argument1,
10323 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments)
10324{
10325 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
10326 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
10327 argument1,
10328 BSLS_COMPILERFEATURES_FORWARD(ARGS, arguments)...,
10329 AllocUtil::adapt(allocator));
10330}
10331
10332template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
10333inline
10334void
10336 TARGET_TYPE *address,
10337 const ALLOCATOR& ,
10339 ARG1& argument1,
10340 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments)
10341{
10342 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
10343 argument1,
10344 BSLS_COMPILERFEATURES_FORWARD(ARGS, arguments)...);
10345}
10346# endif
10347
10348template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
10349inline
10350void
10352 TARGET_TYPE *address,
10353 const ALLOCATOR& allocator,
10355 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
10356 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments)
10357{
10358 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
10359 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
10360 bsl::allocator_arg,
10361 AllocUtil::adapt(allocator),
10362 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
10363 BSLS_COMPILERFEATURES_FORWARD(ARGS, arguments)...);
10364}
10365
10366template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
10367inline
10368void
10370 TARGET_TYPE *address,
10371 const ALLOCATOR& allocator,
10373 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
10374 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments)
10375{
10376 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
10377 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
10378 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
10379 BSLS_COMPILERFEATURES_FORWARD(ARGS, arguments)...,
10380 AllocUtil::adapt(allocator));
10381}
10382
10383template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
10384inline
10385void
10387 TARGET_TYPE *address,
10388 const ALLOCATOR& ,
10390 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
10391 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments)
10392{
10393 ::new (PointerUtil::voidify(address)) TARGET_TYPE(
10394 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
10395 BSLS_COMPILERFEATURES_FORWARD(ARGS, arguments)...);
10396}
10397// }}} END GENERATED CODE
10398#endif
10399
10400template <class TARGET_TYPE, class ALLOCATOR>
10401inline
10402void
10404 TARGET_TYPE *address,
10405 const ALLOCATOR& ,
10407 TARGET_TYPE *original)
10408{
10411 ::new (PointerUtil::voidify(address)) TARGET_TYPE(*original);
10412 }
10413 else {
10414 // `PointerUtil::voidify(address)` is used here to suppress compiler
10415 // warning "-Wclass-memaccess".
10416 memcpy(PointerUtil::voidify(address), original, sizeof *original);
10417 }
10418}
10419
10420template <class TARGET_TYPE, class ALLOCATOR>
10421inline
10422void
10424 TARGET_TYPE *address,
10425 const ALLOCATOR& allocator,
10427 TARGET_TYPE *original)
10428{
10429 // TBD: Eventually, we can add a precondition that 'allocator' matches
10430 // 'original''s allocator, but that is not universally detectable right
10431 // now, as not all allocator-aware types provide an 'allocator()' method.
10432 //..
10433 // BSLS_ASSERT(allocator == original->allocator());
10434
10436 allocator,
10437 bslmf::MovableRefUtil::move(*original));
10438 DestructionUtil::destroy(original);
10439}
10440
10441#if defined(BSLS_COMPILERFEATURES_GUARANTEED_COPY_ELISION)
10442// Suppress bde_verify warnings about return-by-value in this region.
10443// BDE_VERIFY pragma: push
10444// BDE_VERIFY pragma: -AR01: Type using allocator is returned by value
10445
10446template <class TARGET_TYPE, class ALLOCATOR>
10447inline
10448TARGET_TYPE
10449ConstructionUtil_Imp::make(
10450 const ALLOCATOR& allocator,
10452{
10453 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
10454 return TARGET_TYPE(bsl::allocator_arg, AllocUtil::adapt(allocator));
10455}
10456
10457template <class TARGET_TYPE, class ALLOCATOR>
10458inline
10459TARGET_TYPE
10460ConstructionUtil_Imp::make(
10461 const ALLOCATOR& allocator,
10463{
10464 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
10465 return TARGET_TYPE(AllocUtil::adapt(allocator));
10466}
10467
10468template <class TARGET_TYPE, class ALLOCATOR>
10469inline
10470TARGET_TYPE
10471ConstructionUtil_Imp::make(
10472 const ALLOCATOR& ,
10474{
10475 return TARGET_TYPE();
10476}
10477
10478#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
10479// {{{ BEGIN GENERATED CODE
10480// Command line: sim_cpp11_features.pl bslma_constructionutil.h
10481#ifndef BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT
10482#define BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT 13
10483#endif
10484#ifndef BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H
10485#define BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT
10486#endif
10487# ifndef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
10488#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 0
10489template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
10490inline
10491TARGET_TYPE
10492ConstructionUtil_Imp::make(
10493 const ALLOCATOR& allocator,
10495 ARG1& argument1)
10496{
10497 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
10498 return TARGET_TYPE(
10499 bsl::allocator_arg,
10500 AllocUtil::adapt(allocator),
10501 argument1);
10502}
10503#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 0
10504
10505#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 1
10506template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
10507inline
10508TARGET_TYPE
10509ConstructionUtil_Imp::make(
10510 const ALLOCATOR& allocator,
10512 ARG1& argument1,
10513 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01)
10514{
10515 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
10516 return TARGET_TYPE(
10517 bsl::allocator_arg,
10518 AllocUtil::adapt(allocator),
10519 argument1,
10520 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01));
10521}
10522#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 1
10523
10524#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 2
10525template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
10526 class ARGS_02>
10527inline
10528TARGET_TYPE
10529ConstructionUtil_Imp::make(
10530 const ALLOCATOR& allocator,
10532 ARG1& argument1,
10533 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
10534 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02)
10535{
10536 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
10537 return TARGET_TYPE(
10538 bsl::allocator_arg,
10539 AllocUtil::adapt(allocator),
10540 argument1,
10541 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
10542 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02));
10543}
10544#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 2
10545
10546#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 3
10547template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
10548 class ARGS_02,
10549 class ARGS_03>
10550inline
10551TARGET_TYPE
10552ConstructionUtil_Imp::make(
10553 const ALLOCATOR& allocator,
10555 ARG1& argument1,
10556 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
10557 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
10558 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03)
10559{
10560 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
10561 return TARGET_TYPE(
10562 bsl::allocator_arg,
10563 AllocUtil::adapt(allocator),
10564 argument1,
10565 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
10566 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
10567 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03));
10568}
10569#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 3
10570
10571#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 4
10572template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
10573 class ARGS_02,
10574 class ARGS_03,
10575 class ARGS_04>
10576inline
10577TARGET_TYPE
10578ConstructionUtil_Imp::make(
10579 const ALLOCATOR& allocator,
10581 ARG1& argument1,
10582 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
10583 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
10584 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
10585 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04)
10586{
10587 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
10588 return TARGET_TYPE(
10589 bsl::allocator_arg,
10590 AllocUtil::adapt(allocator),
10591 argument1,
10592 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
10593 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
10594 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
10595 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04));
10596}
10597#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 4
10598
10599#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 5
10600template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
10601 class ARGS_02,
10602 class ARGS_03,
10603 class ARGS_04,
10604 class ARGS_05>
10605inline
10606TARGET_TYPE
10607ConstructionUtil_Imp::make(
10608 const ALLOCATOR& allocator,
10610 ARG1& argument1,
10611 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
10612 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
10613 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
10614 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
10615 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05)
10616{
10617 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
10618 return TARGET_TYPE(
10619 bsl::allocator_arg,
10620 AllocUtil::adapt(allocator),
10621 argument1,
10622 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
10623 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
10624 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
10625 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
10626 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05));
10627}
10628#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 5
10629
10630#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 6
10631template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
10632 class ARGS_02,
10633 class ARGS_03,
10634 class ARGS_04,
10635 class ARGS_05,
10636 class ARGS_06>
10637inline
10638TARGET_TYPE
10639ConstructionUtil_Imp::make(
10640 const ALLOCATOR& allocator,
10642 ARG1& argument1,
10643 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
10644 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
10645 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
10646 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
10647 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
10648 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06)
10649{
10650 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
10651 return TARGET_TYPE(
10652 bsl::allocator_arg,
10653 AllocUtil::adapt(allocator),
10654 argument1,
10655 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
10656 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
10657 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
10658 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
10659 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
10660 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06));
10661}
10662#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 6
10663
10664#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 7
10665template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
10666 class ARGS_02,
10667 class ARGS_03,
10668 class ARGS_04,
10669 class ARGS_05,
10670 class ARGS_06,
10671 class ARGS_07>
10672inline
10673TARGET_TYPE
10674ConstructionUtil_Imp::make(
10675 const ALLOCATOR& allocator,
10677 ARG1& argument1,
10678 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
10679 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
10680 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
10681 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
10682 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
10683 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
10684 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07)
10685{
10686 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
10687 return TARGET_TYPE(
10688 bsl::allocator_arg,
10689 AllocUtil::adapt(allocator),
10690 argument1,
10691 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
10692 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
10693 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
10694 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
10695 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
10696 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
10697 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07));
10698}
10699#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 7
10700
10701#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 8
10702template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
10703 class ARGS_02,
10704 class ARGS_03,
10705 class ARGS_04,
10706 class ARGS_05,
10707 class ARGS_06,
10708 class ARGS_07,
10709 class ARGS_08>
10710inline
10711TARGET_TYPE
10712ConstructionUtil_Imp::make(
10713 const ALLOCATOR& allocator,
10715 ARG1& argument1,
10716 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
10717 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
10718 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
10719 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
10720 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
10721 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
10722 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
10723 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08)
10724{
10725 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
10726 return TARGET_TYPE(
10727 bsl::allocator_arg,
10728 AllocUtil::adapt(allocator),
10729 argument1,
10730 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
10731 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
10732 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
10733 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
10734 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
10735 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
10736 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
10737 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08));
10738}
10739#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 8
10740
10741#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 9
10742template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
10743 class ARGS_02,
10744 class ARGS_03,
10745 class ARGS_04,
10746 class ARGS_05,
10747 class ARGS_06,
10748 class ARGS_07,
10749 class ARGS_08,
10750 class ARGS_09>
10751inline
10752TARGET_TYPE
10753ConstructionUtil_Imp::make(
10754 const ALLOCATOR& allocator,
10756 ARG1& argument1,
10757 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
10758 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
10759 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
10760 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
10761 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
10762 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
10763 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
10764 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
10765 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09)
10766{
10767 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
10768 return TARGET_TYPE(
10769 bsl::allocator_arg,
10770 AllocUtil::adapt(allocator),
10771 argument1,
10772 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
10773 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
10774 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
10775 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
10776 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
10777 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
10778 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
10779 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
10780 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09));
10781}
10782#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 9
10783
10784#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 10
10785template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
10786 class ARGS_02,
10787 class ARGS_03,
10788 class ARGS_04,
10789 class ARGS_05,
10790 class ARGS_06,
10791 class ARGS_07,
10792 class ARGS_08,
10793 class ARGS_09,
10794 class ARGS_10>
10795inline
10796TARGET_TYPE
10797ConstructionUtil_Imp::make(
10798 const ALLOCATOR& allocator,
10800 ARG1& argument1,
10801 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
10802 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
10803 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
10804 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
10805 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
10806 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
10807 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
10808 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
10809 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
10810 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10)
10811{
10812 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
10813 return TARGET_TYPE(
10814 bsl::allocator_arg,
10815 AllocUtil::adapt(allocator),
10816 argument1,
10817 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
10818 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
10819 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
10820 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
10821 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
10822 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
10823 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
10824 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
10825 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
10826 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10));
10827}
10828#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 10
10829
10830#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 11
10831template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
10832 class ARGS_02,
10833 class ARGS_03,
10834 class ARGS_04,
10835 class ARGS_05,
10836 class ARGS_06,
10837 class ARGS_07,
10838 class ARGS_08,
10839 class ARGS_09,
10840 class ARGS_10,
10841 class ARGS_11>
10842inline
10843TARGET_TYPE
10844ConstructionUtil_Imp::make(
10845 const ALLOCATOR& allocator,
10847 ARG1& argument1,
10848 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
10849 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
10850 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
10851 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
10852 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
10853 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
10854 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
10855 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
10856 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
10857 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
10858 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11)
10859{
10860 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
10861 return TARGET_TYPE(
10862 bsl::allocator_arg,
10863 AllocUtil::adapt(allocator),
10864 argument1,
10865 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
10866 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
10867 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
10868 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
10869 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
10870 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
10871 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
10872 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
10873 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
10874 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
10875 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11));
10876}
10877#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 11
10878
10879#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 12
10880template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
10881 class ARGS_02,
10882 class ARGS_03,
10883 class ARGS_04,
10884 class ARGS_05,
10885 class ARGS_06,
10886 class ARGS_07,
10887 class ARGS_08,
10888 class ARGS_09,
10889 class ARGS_10,
10890 class ARGS_11,
10891 class ARGS_12>
10892inline
10893TARGET_TYPE
10894ConstructionUtil_Imp::make(
10895 const ALLOCATOR& allocator,
10897 ARG1& argument1,
10898 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
10899 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
10900 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
10901 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
10902 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
10903 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
10904 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
10905 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
10906 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
10907 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
10908 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
10909 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12)
10910{
10911 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
10912 return TARGET_TYPE(
10913 bsl::allocator_arg,
10914 AllocUtil::adapt(allocator),
10915 argument1,
10916 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
10917 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
10918 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
10919 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
10920 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
10921 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
10922 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
10923 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
10924 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
10925 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
10926 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
10927 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12));
10928}
10929#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 12
10930
10931#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 13
10932template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
10933 class ARGS_02,
10934 class ARGS_03,
10935 class ARGS_04,
10936 class ARGS_05,
10937 class ARGS_06,
10938 class ARGS_07,
10939 class ARGS_08,
10940 class ARGS_09,
10941 class ARGS_10,
10942 class ARGS_11,
10943 class ARGS_12,
10944 class ARGS_13>
10945inline
10946TARGET_TYPE
10947ConstructionUtil_Imp::make(
10948 const ALLOCATOR& allocator,
10950 ARG1& argument1,
10951 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
10952 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
10953 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
10954 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
10955 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
10956 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
10957 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
10958 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
10959 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
10960 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
10961 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
10962 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
10963 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13)
10964{
10965 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
10966 return TARGET_TYPE(
10967 bsl::allocator_arg,
10968 AllocUtil::adapt(allocator),
10969 argument1,
10970 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
10971 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
10972 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
10973 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
10974 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
10975 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
10976 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
10977 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
10978 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
10979 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
10980 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
10981 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
10982 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13));
10983}
10984#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 13
10985
10986
10987#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 0
10988template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
10989inline
10990TARGET_TYPE
10991ConstructionUtil_Imp::make(
10992 const ALLOCATOR& allocator,
10994 ARG1& argument1)
10995{
10996 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
10997 return TARGET_TYPE(
10998 argument1,
10999 AllocUtil::adapt(allocator));
11000}
11001#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 0
11002
11003#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 1
11004template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
11005inline
11006TARGET_TYPE
11007ConstructionUtil_Imp::make(
11008 const ALLOCATOR& allocator,
11010 ARG1& argument1,
11011 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01)
11012{
11013 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
11014 return TARGET_TYPE(
11015 argument1,
11016 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11017 AllocUtil::adapt(allocator));
11018}
11019#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 1
11020
11021#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 2
11022template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11023 class ARGS_02>
11024inline
11025TARGET_TYPE
11026ConstructionUtil_Imp::make(
11027 const ALLOCATOR& allocator,
11029 ARG1& argument1,
11030 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11031 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02)
11032{
11033 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
11034 return TARGET_TYPE(
11035 argument1,
11036 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11037 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11038 AllocUtil::adapt(allocator));
11039}
11040#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 2
11041
11042#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 3
11043template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11044 class ARGS_02,
11045 class ARGS_03>
11046inline
11047TARGET_TYPE
11048ConstructionUtil_Imp::make(
11049 const ALLOCATOR& allocator,
11051 ARG1& argument1,
11052 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11053 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
11054 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03)
11055{
11056 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
11057 return TARGET_TYPE(
11058 argument1,
11059 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11060 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11061 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
11062 AllocUtil::adapt(allocator));
11063}
11064#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 3
11065
11066#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 4
11067template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11068 class ARGS_02,
11069 class ARGS_03,
11070 class ARGS_04>
11071inline
11072TARGET_TYPE
11073ConstructionUtil_Imp::make(
11074 const ALLOCATOR& allocator,
11076 ARG1& argument1,
11077 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11078 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
11079 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
11080 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04)
11081{
11082 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
11083 return TARGET_TYPE(
11084 argument1,
11085 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11086 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11087 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
11088 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
11089 AllocUtil::adapt(allocator));
11090}
11091#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 4
11092
11093#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 5
11094template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11095 class ARGS_02,
11096 class ARGS_03,
11097 class ARGS_04,
11098 class ARGS_05>
11099inline
11100TARGET_TYPE
11101ConstructionUtil_Imp::make(
11102 const ALLOCATOR& allocator,
11104 ARG1& argument1,
11105 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11106 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
11107 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
11108 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
11109 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05)
11110{
11111 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
11112 return TARGET_TYPE(
11113 argument1,
11114 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11115 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11116 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
11117 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
11118 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
11119 AllocUtil::adapt(allocator));
11120}
11121#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 5
11122
11123#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 6
11124template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11125 class ARGS_02,
11126 class ARGS_03,
11127 class ARGS_04,
11128 class ARGS_05,
11129 class ARGS_06>
11130inline
11131TARGET_TYPE
11132ConstructionUtil_Imp::make(
11133 const ALLOCATOR& allocator,
11135 ARG1& argument1,
11136 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11137 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
11138 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
11139 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
11140 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
11141 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06)
11142{
11143 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
11144 return TARGET_TYPE(
11145 argument1,
11146 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11147 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11148 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
11149 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
11150 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
11151 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
11152 AllocUtil::adapt(allocator));
11153}
11154#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 6
11155
11156#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 7
11157template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11158 class ARGS_02,
11159 class ARGS_03,
11160 class ARGS_04,
11161 class ARGS_05,
11162 class ARGS_06,
11163 class ARGS_07>
11164inline
11165TARGET_TYPE
11166ConstructionUtil_Imp::make(
11167 const ALLOCATOR& allocator,
11169 ARG1& argument1,
11170 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11171 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
11172 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
11173 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
11174 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
11175 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
11176 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07)
11177{
11178 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
11179 return TARGET_TYPE(
11180 argument1,
11181 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11182 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11183 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
11184 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
11185 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
11186 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
11187 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
11188 AllocUtil::adapt(allocator));
11189}
11190#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 7
11191
11192#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 8
11193template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11194 class ARGS_02,
11195 class ARGS_03,
11196 class ARGS_04,
11197 class ARGS_05,
11198 class ARGS_06,
11199 class ARGS_07,
11200 class ARGS_08>
11201inline
11202TARGET_TYPE
11203ConstructionUtil_Imp::make(
11204 const ALLOCATOR& allocator,
11206 ARG1& argument1,
11207 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11208 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
11209 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
11210 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
11211 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
11212 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
11213 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
11214 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08)
11215{
11216 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
11217 return TARGET_TYPE(
11218 argument1,
11219 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11220 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11221 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
11222 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
11223 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
11224 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
11225 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
11226 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
11227 AllocUtil::adapt(allocator));
11228}
11229#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 8
11230
11231#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 9
11232template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11233 class ARGS_02,
11234 class ARGS_03,
11235 class ARGS_04,
11236 class ARGS_05,
11237 class ARGS_06,
11238 class ARGS_07,
11239 class ARGS_08,
11240 class ARGS_09>
11241inline
11242TARGET_TYPE
11243ConstructionUtil_Imp::make(
11244 const ALLOCATOR& allocator,
11246 ARG1& argument1,
11247 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11248 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
11249 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
11250 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
11251 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
11252 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
11253 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
11254 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
11255 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09)
11256{
11257 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
11258 return TARGET_TYPE(
11259 argument1,
11260 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11261 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11262 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
11263 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
11264 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
11265 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
11266 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
11267 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
11268 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
11269 AllocUtil::adapt(allocator));
11270}
11271#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 9
11272
11273#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 10
11274template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11275 class ARGS_02,
11276 class ARGS_03,
11277 class ARGS_04,
11278 class ARGS_05,
11279 class ARGS_06,
11280 class ARGS_07,
11281 class ARGS_08,
11282 class ARGS_09,
11283 class ARGS_10>
11284inline
11285TARGET_TYPE
11286ConstructionUtil_Imp::make(
11287 const ALLOCATOR& allocator,
11289 ARG1& argument1,
11290 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11291 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
11292 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
11293 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
11294 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
11295 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
11296 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
11297 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
11298 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
11299 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10)
11300{
11301 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
11302 return TARGET_TYPE(
11303 argument1,
11304 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11305 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11306 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
11307 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
11308 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
11309 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
11310 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
11311 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
11312 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
11313 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
11314 AllocUtil::adapt(allocator));
11315}
11316#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 10
11317
11318#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 11
11319template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11320 class ARGS_02,
11321 class ARGS_03,
11322 class ARGS_04,
11323 class ARGS_05,
11324 class ARGS_06,
11325 class ARGS_07,
11326 class ARGS_08,
11327 class ARGS_09,
11328 class ARGS_10,
11329 class ARGS_11>
11330inline
11331TARGET_TYPE
11332ConstructionUtil_Imp::make(
11333 const ALLOCATOR& allocator,
11335 ARG1& argument1,
11336 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11337 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
11338 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
11339 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
11340 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
11341 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
11342 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
11343 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
11344 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
11345 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
11346 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11)
11347{
11348 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
11349 return TARGET_TYPE(
11350 argument1,
11351 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11352 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11353 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
11354 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
11355 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
11356 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
11357 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
11358 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
11359 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
11360 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
11361 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
11362 AllocUtil::adapt(allocator));
11363}
11364#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 11
11365
11366#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 12
11367template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11368 class ARGS_02,
11369 class ARGS_03,
11370 class ARGS_04,
11371 class ARGS_05,
11372 class ARGS_06,
11373 class ARGS_07,
11374 class ARGS_08,
11375 class ARGS_09,
11376 class ARGS_10,
11377 class ARGS_11,
11378 class ARGS_12>
11379inline
11380TARGET_TYPE
11381ConstructionUtil_Imp::make(
11382 const ALLOCATOR& allocator,
11384 ARG1& argument1,
11385 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11386 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
11387 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
11388 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
11389 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
11390 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
11391 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
11392 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
11393 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
11394 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
11395 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
11396 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12)
11397{
11398 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
11399 return TARGET_TYPE(
11400 argument1,
11401 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11402 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11403 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
11404 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
11405 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
11406 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
11407 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
11408 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
11409 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
11410 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
11411 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
11412 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
11413 AllocUtil::adapt(allocator));
11414}
11415#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 12
11416
11417#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 13
11418template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11419 class ARGS_02,
11420 class ARGS_03,
11421 class ARGS_04,
11422 class ARGS_05,
11423 class ARGS_06,
11424 class ARGS_07,
11425 class ARGS_08,
11426 class ARGS_09,
11427 class ARGS_10,
11428 class ARGS_11,
11429 class ARGS_12,
11430 class ARGS_13>
11431inline
11432TARGET_TYPE
11433ConstructionUtil_Imp::make(
11434 const ALLOCATOR& allocator,
11436 ARG1& argument1,
11437 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11438 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
11439 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
11440 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
11441 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
11442 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
11443 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
11444 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
11445 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
11446 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
11447 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
11448 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
11449 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13)
11450{
11451 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
11452 return TARGET_TYPE(
11453 argument1,
11454 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11455 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11456 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
11457 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
11458 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
11459 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
11460 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
11461 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
11462 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
11463 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
11464 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
11465 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
11466 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13),
11467 AllocUtil::adapt(allocator));
11468}
11469#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 13
11470
11471
11472#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 0
11473template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
11474inline
11475TARGET_TYPE
11476ConstructionUtil_Imp::make(
11477 const ALLOCATOR& ,
11479 ARG1& argument1)
11480{
11481 return TARGET_TYPE(
11482 argument1);
11483}
11484#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 0
11485
11486#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 1
11487template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
11488inline
11489TARGET_TYPE
11490ConstructionUtil_Imp::make(
11491 const ALLOCATOR& ,
11493 ARG1& argument1,
11494 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01)
11495{
11496 return TARGET_TYPE(
11497 argument1,
11498 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01));
11499}
11500#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 1
11501
11502#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 2
11503template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11504 class ARGS_02>
11505inline
11506TARGET_TYPE
11507ConstructionUtil_Imp::make(
11508 const ALLOCATOR& ,
11510 ARG1& argument1,
11511 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11512 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02)
11513{
11514 return TARGET_TYPE(
11515 argument1,
11516 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11517 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02));
11518}
11519#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 2
11520
11521#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 3
11522template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11523 class ARGS_02,
11524 class ARGS_03>
11525inline
11526TARGET_TYPE
11527ConstructionUtil_Imp::make(
11528 const ALLOCATOR& ,
11530 ARG1& argument1,
11531 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11532 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
11533 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03)
11534{
11535 return TARGET_TYPE(
11536 argument1,
11537 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11538 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11539 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03));
11540}
11541#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 3
11542
11543#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 4
11544template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11545 class ARGS_02,
11546 class ARGS_03,
11547 class ARGS_04>
11548inline
11549TARGET_TYPE
11550ConstructionUtil_Imp::make(
11551 const ALLOCATOR& ,
11553 ARG1& argument1,
11554 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11555 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
11556 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
11557 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04)
11558{
11559 return TARGET_TYPE(
11560 argument1,
11561 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11562 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11563 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
11564 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04));
11565}
11566#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 4
11567
11568#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 5
11569template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11570 class ARGS_02,
11571 class ARGS_03,
11572 class ARGS_04,
11573 class ARGS_05>
11574inline
11575TARGET_TYPE
11576ConstructionUtil_Imp::make(
11577 const ALLOCATOR& ,
11579 ARG1& argument1,
11580 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11581 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
11582 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
11583 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
11584 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05)
11585{
11586 return TARGET_TYPE(
11587 argument1,
11588 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11589 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11590 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
11591 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
11592 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05));
11593}
11594#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 5
11595
11596#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 6
11597template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11598 class ARGS_02,
11599 class ARGS_03,
11600 class ARGS_04,
11601 class ARGS_05,
11602 class ARGS_06>
11603inline
11604TARGET_TYPE
11605ConstructionUtil_Imp::make(
11606 const ALLOCATOR& ,
11608 ARG1& argument1,
11609 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11610 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
11611 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
11612 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
11613 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
11614 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06)
11615{
11616 return TARGET_TYPE(
11617 argument1,
11618 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11619 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11620 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
11621 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
11622 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
11623 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06));
11624}
11625#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 6
11626
11627#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 7
11628template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11629 class ARGS_02,
11630 class ARGS_03,
11631 class ARGS_04,
11632 class ARGS_05,
11633 class ARGS_06,
11634 class ARGS_07>
11635inline
11636TARGET_TYPE
11637ConstructionUtil_Imp::make(
11638 const ALLOCATOR& ,
11640 ARG1& argument1,
11641 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11642 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
11643 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
11644 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
11645 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
11646 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
11647 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07)
11648{
11649 return TARGET_TYPE(
11650 argument1,
11651 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11652 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11653 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
11654 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
11655 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
11656 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
11657 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07));
11658}
11659#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 7
11660
11661#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 8
11662template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11663 class ARGS_02,
11664 class ARGS_03,
11665 class ARGS_04,
11666 class ARGS_05,
11667 class ARGS_06,
11668 class ARGS_07,
11669 class ARGS_08>
11670inline
11671TARGET_TYPE
11672ConstructionUtil_Imp::make(
11673 const ALLOCATOR& ,
11675 ARG1& argument1,
11676 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11677 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
11678 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
11679 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
11680 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
11681 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
11682 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
11683 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08)
11684{
11685 return TARGET_TYPE(
11686 argument1,
11687 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11688 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11689 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
11690 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
11691 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
11692 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
11693 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
11694 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08));
11695}
11696#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 8
11697
11698#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 9
11699template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11700 class ARGS_02,
11701 class ARGS_03,
11702 class ARGS_04,
11703 class ARGS_05,
11704 class ARGS_06,
11705 class ARGS_07,
11706 class ARGS_08,
11707 class ARGS_09>
11708inline
11709TARGET_TYPE
11710ConstructionUtil_Imp::make(
11711 const ALLOCATOR& ,
11713 ARG1& argument1,
11714 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11715 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
11716 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
11717 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
11718 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
11719 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
11720 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
11721 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
11722 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09)
11723{
11724 return TARGET_TYPE(
11725 argument1,
11726 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11727 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11728 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
11729 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
11730 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
11731 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
11732 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
11733 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
11734 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09));
11735}
11736#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 9
11737
11738#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 10
11739template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11740 class ARGS_02,
11741 class ARGS_03,
11742 class ARGS_04,
11743 class ARGS_05,
11744 class ARGS_06,
11745 class ARGS_07,
11746 class ARGS_08,
11747 class ARGS_09,
11748 class ARGS_10>
11749inline
11750TARGET_TYPE
11751ConstructionUtil_Imp::make(
11752 const ALLOCATOR& ,
11754 ARG1& argument1,
11755 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11756 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
11757 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
11758 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
11759 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
11760 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
11761 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
11762 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
11763 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
11764 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10)
11765{
11766 return TARGET_TYPE(
11767 argument1,
11768 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11769 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11770 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
11771 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
11772 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
11773 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
11774 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
11775 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
11776 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
11777 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10));
11778}
11779#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 10
11780
11781#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 11
11782template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11783 class ARGS_02,
11784 class ARGS_03,
11785 class ARGS_04,
11786 class ARGS_05,
11787 class ARGS_06,
11788 class ARGS_07,
11789 class ARGS_08,
11790 class ARGS_09,
11791 class ARGS_10,
11792 class ARGS_11>
11793inline
11794TARGET_TYPE
11795ConstructionUtil_Imp::make(
11796 const ALLOCATOR& ,
11798 ARG1& argument1,
11799 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11800 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
11801 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
11802 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
11803 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
11804 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
11805 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
11806 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
11807 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
11808 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
11809 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11)
11810{
11811 return TARGET_TYPE(
11812 argument1,
11813 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11814 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11815 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
11816 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
11817 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
11818 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
11819 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
11820 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
11821 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
11822 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
11823 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11));
11824}
11825#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 11
11826
11827#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 12
11828template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11829 class ARGS_02,
11830 class ARGS_03,
11831 class ARGS_04,
11832 class ARGS_05,
11833 class ARGS_06,
11834 class ARGS_07,
11835 class ARGS_08,
11836 class ARGS_09,
11837 class ARGS_10,
11838 class ARGS_11,
11839 class ARGS_12>
11840inline
11841TARGET_TYPE
11842ConstructionUtil_Imp::make(
11843 const ALLOCATOR& ,
11845 ARG1& argument1,
11846 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11847 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
11848 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
11849 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
11850 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
11851 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
11852 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
11853 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
11854 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
11855 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
11856 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
11857 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12)
11858{
11859 return TARGET_TYPE(
11860 argument1,
11861 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11862 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11863 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
11864 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
11865 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
11866 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
11867 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
11868 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
11869 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
11870 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
11871 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
11872 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12));
11873}
11874#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 12
11875
11876#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 13
11877template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11878 class ARGS_02,
11879 class ARGS_03,
11880 class ARGS_04,
11881 class ARGS_05,
11882 class ARGS_06,
11883 class ARGS_07,
11884 class ARGS_08,
11885 class ARGS_09,
11886 class ARGS_10,
11887 class ARGS_11,
11888 class ARGS_12,
11889 class ARGS_13>
11890inline
11891TARGET_TYPE
11892ConstructionUtil_Imp::make(
11893 const ALLOCATOR& ,
11895 ARG1& argument1,
11896 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11897 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
11898 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
11899 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
11900 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
11901 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
11902 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
11903 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
11904 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
11905 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
11906 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
11907 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
11908 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13)
11909{
11910 return TARGET_TYPE(
11911 argument1,
11912 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11913 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
11914 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
11915 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
11916 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
11917 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
11918 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
11919 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
11920 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
11921 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
11922 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
11923 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
11924 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13));
11925}
11926#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 13
11927
11928# endif
11929
11930#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 0
11931template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
11932inline
11933TARGET_TYPE
11934ConstructionUtil_Imp::make(
11935 const ALLOCATOR& allocator,
11937 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1)
11938{
11939 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
11940 return TARGET_TYPE(
11941 bsl::allocator_arg,
11942 AllocUtil::adapt(allocator),
11943 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1));
11944}
11945#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 0
11946
11947#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 1
11948template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
11949inline
11950TARGET_TYPE
11951ConstructionUtil_Imp::make(
11952 const ALLOCATOR& allocator,
11954 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
11955 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01)
11956{
11957 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
11958 return TARGET_TYPE(
11959 bsl::allocator_arg,
11960 AllocUtil::adapt(allocator),
11961 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
11962 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01));
11963}
11964#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 1
11965
11966#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 2
11967template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11968 class ARGS_02>
11969inline
11970TARGET_TYPE
11971ConstructionUtil_Imp::make(
11972 const ALLOCATOR& allocator,
11974 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
11975 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11976 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02)
11977{
11978 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
11979 return TARGET_TYPE(
11980 bsl::allocator_arg,
11981 AllocUtil::adapt(allocator),
11982 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
11983 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
11984 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02));
11985}
11986#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 2
11987
11988#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 3
11989template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
11990 class ARGS_02,
11991 class ARGS_03>
11992inline
11993TARGET_TYPE
11994ConstructionUtil_Imp::make(
11995 const ALLOCATOR& allocator,
11997 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
11998 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
11999 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12000 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03)
12001{
12002 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12003 return TARGET_TYPE(
12004 bsl::allocator_arg,
12005 AllocUtil::adapt(allocator),
12006 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12007 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12008 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12009 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03));
12010}
12011#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 3
12012
12013#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 4
12014template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12015 class ARGS_02,
12016 class ARGS_03,
12017 class ARGS_04>
12018inline
12019TARGET_TYPE
12020ConstructionUtil_Imp::make(
12021 const ALLOCATOR& allocator,
12023 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12024 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12025 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12026 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
12027 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04)
12028{
12029 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12030 return TARGET_TYPE(
12031 bsl::allocator_arg,
12032 AllocUtil::adapt(allocator),
12033 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12034 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12035 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12036 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
12037 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04));
12038}
12039#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 4
12040
12041#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 5
12042template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12043 class ARGS_02,
12044 class ARGS_03,
12045 class ARGS_04,
12046 class ARGS_05>
12047inline
12048TARGET_TYPE
12049ConstructionUtil_Imp::make(
12050 const ALLOCATOR& allocator,
12052 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12053 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12054 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12055 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
12056 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
12057 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05)
12058{
12059 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12060 return TARGET_TYPE(
12061 bsl::allocator_arg,
12062 AllocUtil::adapt(allocator),
12063 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12064 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12065 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12066 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
12067 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
12068 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05));
12069}
12070#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 5
12071
12072#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 6
12073template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12074 class ARGS_02,
12075 class ARGS_03,
12076 class ARGS_04,
12077 class ARGS_05,
12078 class ARGS_06>
12079inline
12080TARGET_TYPE
12081ConstructionUtil_Imp::make(
12082 const ALLOCATOR& allocator,
12084 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12085 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12086 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12087 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
12088 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
12089 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
12090 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06)
12091{
12092 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12093 return TARGET_TYPE(
12094 bsl::allocator_arg,
12095 AllocUtil::adapt(allocator),
12096 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12097 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12098 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12099 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
12100 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
12101 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
12102 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06));
12103}
12104#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 6
12105
12106#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 7
12107template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12108 class ARGS_02,
12109 class ARGS_03,
12110 class ARGS_04,
12111 class ARGS_05,
12112 class ARGS_06,
12113 class ARGS_07>
12114inline
12115TARGET_TYPE
12116ConstructionUtil_Imp::make(
12117 const ALLOCATOR& allocator,
12119 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12120 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12121 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12122 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
12123 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
12124 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
12125 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
12126 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07)
12127{
12128 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12129 return TARGET_TYPE(
12130 bsl::allocator_arg,
12131 AllocUtil::adapt(allocator),
12132 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12133 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12134 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12135 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
12136 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
12137 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
12138 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
12139 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07));
12140}
12141#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 7
12142
12143#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 8
12144template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12145 class ARGS_02,
12146 class ARGS_03,
12147 class ARGS_04,
12148 class ARGS_05,
12149 class ARGS_06,
12150 class ARGS_07,
12151 class ARGS_08>
12152inline
12153TARGET_TYPE
12154ConstructionUtil_Imp::make(
12155 const ALLOCATOR& allocator,
12157 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12158 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12159 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12160 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
12161 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
12162 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
12163 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
12164 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
12165 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08)
12166{
12167 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12168 return TARGET_TYPE(
12169 bsl::allocator_arg,
12170 AllocUtil::adapt(allocator),
12171 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12172 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12173 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12174 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
12175 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
12176 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
12177 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
12178 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
12179 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08));
12180}
12181#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 8
12182
12183#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 9
12184template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12185 class ARGS_02,
12186 class ARGS_03,
12187 class ARGS_04,
12188 class ARGS_05,
12189 class ARGS_06,
12190 class ARGS_07,
12191 class ARGS_08,
12192 class ARGS_09>
12193inline
12194TARGET_TYPE
12195ConstructionUtil_Imp::make(
12196 const ALLOCATOR& allocator,
12198 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12199 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12200 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12201 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
12202 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
12203 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
12204 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
12205 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
12206 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
12207 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09)
12208{
12209 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12210 return TARGET_TYPE(
12211 bsl::allocator_arg,
12212 AllocUtil::adapt(allocator),
12213 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12214 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12215 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12216 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
12217 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
12218 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
12219 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
12220 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
12221 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
12222 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09));
12223}
12224#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 9
12225
12226#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 10
12227template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12228 class ARGS_02,
12229 class ARGS_03,
12230 class ARGS_04,
12231 class ARGS_05,
12232 class ARGS_06,
12233 class ARGS_07,
12234 class ARGS_08,
12235 class ARGS_09,
12236 class ARGS_10>
12237inline
12238TARGET_TYPE
12239ConstructionUtil_Imp::make(
12240 const ALLOCATOR& allocator,
12242 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12243 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12244 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12245 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
12246 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
12247 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
12248 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
12249 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
12250 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
12251 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
12252 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10)
12253{
12254 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12255 return TARGET_TYPE(
12256 bsl::allocator_arg,
12257 AllocUtil::adapt(allocator),
12258 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12259 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12260 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12261 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
12262 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
12263 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
12264 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
12265 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
12266 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
12267 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
12268 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10));
12269}
12270#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 10
12271
12272#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 11
12273template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12274 class ARGS_02,
12275 class ARGS_03,
12276 class ARGS_04,
12277 class ARGS_05,
12278 class ARGS_06,
12279 class ARGS_07,
12280 class ARGS_08,
12281 class ARGS_09,
12282 class ARGS_10,
12283 class ARGS_11>
12284inline
12285TARGET_TYPE
12286ConstructionUtil_Imp::make(
12287 const ALLOCATOR& allocator,
12289 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12290 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12291 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12292 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
12293 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
12294 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
12295 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
12296 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
12297 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
12298 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
12299 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
12300 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11)
12301{
12302 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12303 return TARGET_TYPE(
12304 bsl::allocator_arg,
12305 AllocUtil::adapt(allocator),
12306 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12307 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12308 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12309 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
12310 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
12311 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
12312 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
12313 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
12314 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
12315 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
12316 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
12317 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11));
12318}
12319#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 11
12320
12321#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 12
12322template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12323 class ARGS_02,
12324 class ARGS_03,
12325 class ARGS_04,
12326 class ARGS_05,
12327 class ARGS_06,
12328 class ARGS_07,
12329 class ARGS_08,
12330 class ARGS_09,
12331 class ARGS_10,
12332 class ARGS_11,
12333 class ARGS_12>
12334inline
12335TARGET_TYPE
12336ConstructionUtil_Imp::make(
12337 const ALLOCATOR& allocator,
12339 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12340 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12341 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12342 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
12343 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
12344 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
12345 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
12346 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
12347 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
12348 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
12349 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
12350 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
12351 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12)
12352{
12353 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12354 return TARGET_TYPE(
12355 bsl::allocator_arg,
12356 AllocUtil::adapt(allocator),
12357 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12358 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12359 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12360 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
12361 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
12362 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
12363 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
12364 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
12365 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
12366 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
12367 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
12368 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
12369 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12));
12370}
12371#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 12
12372
12373#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 13
12374template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12375 class ARGS_02,
12376 class ARGS_03,
12377 class ARGS_04,
12378 class ARGS_05,
12379 class ARGS_06,
12380 class ARGS_07,
12381 class ARGS_08,
12382 class ARGS_09,
12383 class ARGS_10,
12384 class ARGS_11,
12385 class ARGS_12,
12386 class ARGS_13>
12387inline
12388TARGET_TYPE
12389ConstructionUtil_Imp::make(
12390 const ALLOCATOR& allocator,
12392 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12393 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12394 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12395 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
12396 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
12397 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
12398 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
12399 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
12400 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
12401 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
12402 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
12403 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
12404 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
12405 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13)
12406{
12407 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12408 return TARGET_TYPE(
12409 bsl::allocator_arg,
12410 AllocUtil::adapt(allocator),
12411 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12412 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12413 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12414 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
12415 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
12416 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
12417 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
12418 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
12419 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
12420 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
12421 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
12422 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
12423 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
12424 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13));
12425}
12426#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 13
12427
12428
12429#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 0
12430template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
12431inline
12432TARGET_TYPE
12433ConstructionUtil_Imp::make(
12434 const ALLOCATOR& allocator,
12436 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1)
12437{
12438 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12439 return TARGET_TYPE(
12440 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12441 AllocUtil::adapt(allocator));
12442}
12443#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 0
12444
12445#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 1
12446template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
12447inline
12448TARGET_TYPE
12449ConstructionUtil_Imp::make(
12450 const ALLOCATOR& allocator,
12452 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12453 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01)
12454{
12455 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12456 return TARGET_TYPE(
12457 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12458 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12459 AllocUtil::adapt(allocator));
12460}
12461#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 1
12462
12463#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 2
12464template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12465 class ARGS_02>
12466inline
12467TARGET_TYPE
12468ConstructionUtil_Imp::make(
12469 const ALLOCATOR& allocator,
12471 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12472 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12473 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02)
12474{
12475 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12476 return TARGET_TYPE(
12477 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12478 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12479 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12480 AllocUtil::adapt(allocator));
12481}
12482#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 2
12483
12484#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 3
12485template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12486 class ARGS_02,
12487 class ARGS_03>
12488inline
12489TARGET_TYPE
12490ConstructionUtil_Imp::make(
12491 const ALLOCATOR& allocator,
12493 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12494 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12495 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12496 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03)
12497{
12498 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12499 return TARGET_TYPE(
12500 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12501 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12502 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12503 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
12504 AllocUtil::adapt(allocator));
12505}
12506#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 3
12507
12508#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 4
12509template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12510 class ARGS_02,
12511 class ARGS_03,
12512 class ARGS_04>
12513inline
12514TARGET_TYPE
12515ConstructionUtil_Imp::make(
12516 const ALLOCATOR& allocator,
12518 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12519 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12520 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12521 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
12522 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04)
12523{
12524 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12525 return TARGET_TYPE(
12526 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12527 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12528 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12529 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
12530 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
12531 AllocUtil::adapt(allocator));
12532}
12533#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 4
12534
12535#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 5
12536template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12537 class ARGS_02,
12538 class ARGS_03,
12539 class ARGS_04,
12540 class ARGS_05>
12541inline
12542TARGET_TYPE
12543ConstructionUtil_Imp::make(
12544 const ALLOCATOR& allocator,
12546 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12547 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12548 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12549 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
12550 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
12551 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05)
12552{
12553 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12554 return TARGET_TYPE(
12555 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12556 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12557 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12558 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
12559 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
12560 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
12561 AllocUtil::adapt(allocator));
12562}
12563#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 5
12564
12565#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 6
12566template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12567 class ARGS_02,
12568 class ARGS_03,
12569 class ARGS_04,
12570 class ARGS_05,
12571 class ARGS_06>
12572inline
12573TARGET_TYPE
12574ConstructionUtil_Imp::make(
12575 const ALLOCATOR& allocator,
12577 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12578 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12579 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12580 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
12581 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
12582 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
12583 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06)
12584{
12585 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12586 return TARGET_TYPE(
12587 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12588 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12589 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12590 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
12591 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
12592 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
12593 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
12594 AllocUtil::adapt(allocator));
12595}
12596#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 6
12597
12598#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 7
12599template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12600 class ARGS_02,
12601 class ARGS_03,
12602 class ARGS_04,
12603 class ARGS_05,
12604 class ARGS_06,
12605 class ARGS_07>
12606inline
12607TARGET_TYPE
12608ConstructionUtil_Imp::make(
12609 const ALLOCATOR& allocator,
12611 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12612 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12613 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12614 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
12615 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
12616 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
12617 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
12618 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07)
12619{
12620 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12621 return TARGET_TYPE(
12622 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12623 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12624 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12625 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
12626 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
12627 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
12628 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
12629 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
12630 AllocUtil::adapt(allocator));
12631}
12632#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 7
12633
12634#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 8
12635template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12636 class ARGS_02,
12637 class ARGS_03,
12638 class ARGS_04,
12639 class ARGS_05,
12640 class ARGS_06,
12641 class ARGS_07,
12642 class ARGS_08>
12643inline
12644TARGET_TYPE
12645ConstructionUtil_Imp::make(
12646 const ALLOCATOR& allocator,
12648 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12649 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12650 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12651 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
12652 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
12653 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
12654 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
12655 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
12656 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08)
12657{
12658 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12659 return TARGET_TYPE(
12660 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12661 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12662 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12663 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
12664 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
12665 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
12666 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
12667 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
12668 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
12669 AllocUtil::adapt(allocator));
12670}
12671#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 8
12672
12673#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 9
12674template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12675 class ARGS_02,
12676 class ARGS_03,
12677 class ARGS_04,
12678 class ARGS_05,
12679 class ARGS_06,
12680 class ARGS_07,
12681 class ARGS_08,
12682 class ARGS_09>
12683inline
12684TARGET_TYPE
12685ConstructionUtil_Imp::make(
12686 const ALLOCATOR& allocator,
12688 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12689 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12690 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12691 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
12692 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
12693 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
12694 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
12695 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
12696 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
12697 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09)
12698{
12699 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12700 return TARGET_TYPE(
12701 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12702 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12703 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12704 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
12705 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
12706 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
12707 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
12708 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
12709 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
12710 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
12711 AllocUtil::adapt(allocator));
12712}
12713#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 9
12714
12715#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 10
12716template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12717 class ARGS_02,
12718 class ARGS_03,
12719 class ARGS_04,
12720 class ARGS_05,
12721 class ARGS_06,
12722 class ARGS_07,
12723 class ARGS_08,
12724 class ARGS_09,
12725 class ARGS_10>
12726inline
12727TARGET_TYPE
12728ConstructionUtil_Imp::make(
12729 const ALLOCATOR& allocator,
12731 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12732 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12733 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12734 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
12735 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
12736 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
12737 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
12738 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
12739 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
12740 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
12741 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10)
12742{
12743 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12744 return TARGET_TYPE(
12745 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12746 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12747 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12748 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
12749 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
12750 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
12751 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
12752 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
12753 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
12754 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
12755 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
12756 AllocUtil::adapt(allocator));
12757}
12758#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 10
12759
12760#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 11
12761template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12762 class ARGS_02,
12763 class ARGS_03,
12764 class ARGS_04,
12765 class ARGS_05,
12766 class ARGS_06,
12767 class ARGS_07,
12768 class ARGS_08,
12769 class ARGS_09,
12770 class ARGS_10,
12771 class ARGS_11>
12772inline
12773TARGET_TYPE
12774ConstructionUtil_Imp::make(
12775 const ALLOCATOR& allocator,
12777 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12778 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12779 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12780 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
12781 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
12782 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
12783 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
12784 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
12785 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
12786 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
12787 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
12788 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11)
12789{
12790 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12791 return TARGET_TYPE(
12792 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12793 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12794 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12795 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
12796 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
12797 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
12798 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
12799 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
12800 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
12801 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
12802 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
12803 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
12804 AllocUtil::adapt(allocator));
12805}
12806#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 11
12807
12808#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 12
12809template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12810 class ARGS_02,
12811 class ARGS_03,
12812 class ARGS_04,
12813 class ARGS_05,
12814 class ARGS_06,
12815 class ARGS_07,
12816 class ARGS_08,
12817 class ARGS_09,
12818 class ARGS_10,
12819 class ARGS_11,
12820 class ARGS_12>
12821inline
12822TARGET_TYPE
12823ConstructionUtil_Imp::make(
12824 const ALLOCATOR& allocator,
12826 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12827 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12828 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12829 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
12830 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
12831 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
12832 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
12833 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
12834 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
12835 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
12836 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
12837 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
12838 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12)
12839{
12840 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12841 return TARGET_TYPE(
12842 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12843 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12844 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12845 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
12846 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
12847 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
12848 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
12849 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
12850 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
12851 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
12852 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
12853 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
12854 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
12855 AllocUtil::adapt(allocator));
12856}
12857#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 12
12858
12859#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 13
12860template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12861 class ARGS_02,
12862 class ARGS_03,
12863 class ARGS_04,
12864 class ARGS_05,
12865 class ARGS_06,
12866 class ARGS_07,
12867 class ARGS_08,
12868 class ARGS_09,
12869 class ARGS_10,
12870 class ARGS_11,
12871 class ARGS_12,
12872 class ARGS_13>
12873inline
12874TARGET_TYPE
12875ConstructionUtil_Imp::make(
12876 const ALLOCATOR& allocator,
12878 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12879 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12880 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12881 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
12882 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
12883 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
12884 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
12885 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
12886 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
12887 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
12888 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
12889 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
12890 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
12891 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13)
12892{
12893 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
12894 return TARGET_TYPE(
12895 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12896 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12897 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12898 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
12899 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
12900 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
12901 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
12902 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
12903 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
12904 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
12905 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
12906 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
12907 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
12908 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13),
12909 AllocUtil::adapt(allocator));
12910}
12911#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 13
12912
12913
12914#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 0
12915template <class TARGET_TYPE, class ALLOCATOR, class ARG1>
12916inline
12917TARGET_TYPE
12918ConstructionUtil_Imp::make(
12919 const ALLOCATOR& ,
12921 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1)
12922{
12923 return TARGET_TYPE(
12924 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1));
12925}
12926#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 0
12927
12928#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 1
12929template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01>
12930inline
12931TARGET_TYPE
12932ConstructionUtil_Imp::make(
12933 const ALLOCATOR& ,
12935 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12936 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01)
12937{
12938 return TARGET_TYPE(
12939 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12940 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01));
12941}
12942#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 1
12943
12944#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 2
12945template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12946 class ARGS_02>
12947inline
12948TARGET_TYPE
12949ConstructionUtil_Imp::make(
12950 const ALLOCATOR& ,
12952 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12953 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12954 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02)
12955{
12956 return TARGET_TYPE(
12957 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12958 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12959 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02));
12960}
12961#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 2
12962
12963#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 3
12964template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12965 class ARGS_02,
12966 class ARGS_03>
12967inline
12968TARGET_TYPE
12969ConstructionUtil_Imp::make(
12970 const ALLOCATOR& ,
12972 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12973 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12974 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12975 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03)
12976{
12977 return TARGET_TYPE(
12978 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
12979 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
12980 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
12981 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03));
12982}
12983#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 3
12984
12985#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 4
12986template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
12987 class ARGS_02,
12988 class ARGS_03,
12989 class ARGS_04>
12990inline
12991TARGET_TYPE
12992ConstructionUtil_Imp::make(
12993 const ALLOCATOR& ,
12995 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
12996 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
12997 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
12998 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
12999 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04)
13000{
13001 return TARGET_TYPE(
13002 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
13003 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
13004 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
13005 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
13006 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04));
13007}
13008#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 4
13009
13010#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 5
13011template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
13012 class ARGS_02,
13013 class ARGS_03,
13014 class ARGS_04,
13015 class ARGS_05>
13016inline
13017TARGET_TYPE
13018ConstructionUtil_Imp::make(
13019 const ALLOCATOR& ,
13021 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
13022 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
13023 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
13024 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
13025 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
13026 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05)
13027{
13028 return TARGET_TYPE(
13029 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
13030 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
13031 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
13032 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
13033 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
13034 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05));
13035}
13036#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 5
13037
13038#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 6
13039template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
13040 class ARGS_02,
13041 class ARGS_03,
13042 class ARGS_04,
13043 class ARGS_05,
13044 class ARGS_06>
13045inline
13046TARGET_TYPE
13047ConstructionUtil_Imp::make(
13048 const ALLOCATOR& ,
13050 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
13051 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
13052 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
13053 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
13054 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
13055 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
13056 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06)
13057{
13058 return TARGET_TYPE(
13059 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
13060 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
13061 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
13062 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
13063 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
13064 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
13065 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06));
13066}
13067#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 6
13068
13069#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 7
13070template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
13071 class ARGS_02,
13072 class ARGS_03,
13073 class ARGS_04,
13074 class ARGS_05,
13075 class ARGS_06,
13076 class ARGS_07>
13077inline
13078TARGET_TYPE
13079ConstructionUtil_Imp::make(
13080 const ALLOCATOR& ,
13082 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
13083 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
13084 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
13085 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
13086 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
13087 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
13088 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
13089 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07)
13090{
13091 return TARGET_TYPE(
13092 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
13093 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
13094 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
13095 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
13096 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
13097 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
13098 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
13099 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07));
13100}
13101#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 7
13102
13103#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 8
13104template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
13105 class ARGS_02,
13106 class ARGS_03,
13107 class ARGS_04,
13108 class ARGS_05,
13109 class ARGS_06,
13110 class ARGS_07,
13111 class ARGS_08>
13112inline
13113TARGET_TYPE
13114ConstructionUtil_Imp::make(
13115 const ALLOCATOR& ,
13117 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
13118 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
13119 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
13120 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
13121 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
13122 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
13123 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
13124 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
13125 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08)
13126{
13127 return TARGET_TYPE(
13128 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
13129 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
13130 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
13131 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
13132 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
13133 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
13134 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
13135 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
13136 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08));
13137}
13138#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 8
13139
13140#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 9
13141template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
13142 class ARGS_02,
13143 class ARGS_03,
13144 class ARGS_04,
13145 class ARGS_05,
13146 class ARGS_06,
13147 class ARGS_07,
13148 class ARGS_08,
13149 class ARGS_09>
13150inline
13151TARGET_TYPE
13152ConstructionUtil_Imp::make(
13153 const ALLOCATOR& ,
13155 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
13156 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
13157 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
13158 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
13159 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
13160 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
13161 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
13162 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
13163 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
13164 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09)
13165{
13166 return TARGET_TYPE(
13167 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
13168 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
13169 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
13170 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
13171 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
13172 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
13173 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
13174 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
13175 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
13176 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09));
13177}
13178#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 9
13179
13180#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 10
13181template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
13182 class ARGS_02,
13183 class ARGS_03,
13184 class ARGS_04,
13185 class ARGS_05,
13186 class ARGS_06,
13187 class ARGS_07,
13188 class ARGS_08,
13189 class ARGS_09,
13190 class ARGS_10>
13191inline
13192TARGET_TYPE
13193ConstructionUtil_Imp::make(
13194 const ALLOCATOR& ,
13196 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
13197 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
13198 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
13199 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
13200 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
13201 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
13202 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
13203 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
13204 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
13205 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
13206 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10)
13207{
13208 return TARGET_TYPE(
13209 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
13210 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
13211 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
13212 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
13213 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
13214 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
13215 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
13216 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
13217 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
13218 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
13219 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10));
13220}
13221#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 10
13222
13223#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 11
13224template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
13225 class ARGS_02,
13226 class ARGS_03,
13227 class ARGS_04,
13228 class ARGS_05,
13229 class ARGS_06,
13230 class ARGS_07,
13231 class ARGS_08,
13232 class ARGS_09,
13233 class ARGS_10,
13234 class ARGS_11>
13235inline
13236TARGET_TYPE
13237ConstructionUtil_Imp::make(
13238 const ALLOCATOR& ,
13240 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
13241 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
13242 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
13243 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
13244 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
13245 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
13246 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
13247 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
13248 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
13249 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
13250 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
13251 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11)
13252{
13253 return TARGET_TYPE(
13254 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
13255 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
13256 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
13257 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
13258 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
13259 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
13260 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
13261 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
13262 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
13263 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
13264 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
13265 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11));
13266}
13267#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 11
13268
13269#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 12
13270template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
13271 class ARGS_02,
13272 class ARGS_03,
13273 class ARGS_04,
13274 class ARGS_05,
13275 class ARGS_06,
13276 class ARGS_07,
13277 class ARGS_08,
13278 class ARGS_09,
13279 class ARGS_10,
13280 class ARGS_11,
13281 class ARGS_12>
13282inline
13283TARGET_TYPE
13284ConstructionUtil_Imp::make(
13285 const ALLOCATOR& ,
13287 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
13288 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
13289 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
13290 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
13291 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
13292 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
13293 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
13294 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
13295 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
13296 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
13297 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
13298 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
13299 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12)
13300{
13301 return TARGET_TYPE(
13302 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
13303 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
13304 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
13305 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
13306 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
13307 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
13308 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
13309 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
13310 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
13311 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
13312 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
13313 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
13314 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12));
13315}
13316#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 12
13317
13318#if BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 13
13319template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class ARGS_01,
13320 class ARGS_02,
13321 class ARGS_03,
13322 class ARGS_04,
13323 class ARGS_05,
13324 class ARGS_06,
13325 class ARGS_07,
13326 class ARGS_08,
13327 class ARGS_09,
13328 class ARGS_10,
13329 class ARGS_11,
13330 class ARGS_12,
13331 class ARGS_13>
13332inline
13333TARGET_TYPE
13334ConstructionUtil_Imp::make(
13335 const ALLOCATOR& ,
13337 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
13338 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
13339 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
13340 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
13341 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
13342 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
13343 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
13344 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
13345 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
13346 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
13347 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
13348 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
13349 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
13350 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13)
13351{
13352 return TARGET_TYPE(
13353 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
13354 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
13355 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
13356 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
13357 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
13358 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
13359 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
13360 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
13361 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
13362 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
13363 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
13364 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
13365 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
13366 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13));
13367}
13368#endif // BSLMA_CONSTRUCTIONUTIL_VARIADIC_LIMIT_H >= 13
13369
13370#else
13371// The generated code below is a workaround for the absence of perfect
13372// forwarding in some compilers.
13373# ifndef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
13374template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
13375inline
13376TARGET_TYPE
13377ConstructionUtil_Imp::make(
13378 const ALLOCATOR& allocator,
13380 ARG1& argument1,
13381 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments)
13382{
13383 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
13384 return TARGET_TYPE(
13385 bsl::allocator_arg,
13386 AllocUtil::adapt(allocator),
13387 argument1,
13388 BSLS_COMPILERFEATURES_FORWARD(ARGS, arguments)...);
13389}
13390
13391template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
13392inline
13393TARGET_TYPE
13394ConstructionUtil_Imp::make(
13395 const ALLOCATOR& allocator,
13397 ARG1& argument1,
13398 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments)
13399{
13400 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
13401 return TARGET_TYPE(
13402 argument1,
13403 BSLS_COMPILERFEATURES_FORWARD(ARGS, arguments)...,
13404 AllocUtil::adapt(allocator));
13405}
13406
13407template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
13408inline
13409TARGET_TYPE
13410ConstructionUtil_Imp::make(
13411 const ALLOCATOR& ,
13413 ARG1& argument1,
13414 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments)
13415{
13416 return TARGET_TYPE(
13417 argument1,
13418 BSLS_COMPILERFEATURES_FORWARD(ARGS, arguments)...);
13419}
13420# endif
13421
13422template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
13423inline
13424TARGET_TYPE
13425ConstructionUtil_Imp::make(
13426 const ALLOCATOR& allocator,
13428 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
13429 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments)
13430{
13431 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
13432 return TARGET_TYPE(
13433 bsl::allocator_arg,
13434 AllocUtil::adapt(allocator),
13435 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
13436 BSLS_COMPILERFEATURES_FORWARD(ARGS, arguments)...);
13437}
13438
13439template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
13440inline
13441TARGET_TYPE
13442ConstructionUtil_Imp::make(
13443 const ALLOCATOR& allocator,
13445 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
13446 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments)
13447{
13448 typedef ConstructionUtil_AllocAdaptorUtil<TARGET_TYPE> AllocUtil;
13449 return TARGET_TYPE(
13450 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
13451 BSLS_COMPILERFEATURES_FORWARD(ARGS, arguments)...,
13452 AllocUtil::adapt(allocator));
13453}
13454
13455template <class TARGET_TYPE, class ALLOCATOR, class ARG1, class... ARGS>
13456inline
13457TARGET_TYPE
13458ConstructionUtil_Imp::make(
13459 const ALLOCATOR& ,
13461 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
13462 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments)
13463{
13464 return TARGET_TYPE(
13465 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
13466 BSLS_COMPILERFEATURES_FORWARD(ARGS, arguments)...);
13467}
13468// }}} END GENERATED CODE
13469#endif
13470
13471// BDE_VERIFY pragma: pop
13472#endif // defined(BSLS_COMPILERFEATURES_GUARANTEED_COPY_ELISION)
13473
13474} // close package namespace
13475
13476
13477#else // if ! defined(DEFINED_BSLMA_CONSTRUCTIONUTIL_H)
13478# error Not valid except when included from bslma_constructionutil.h
13479#endif // ! defined(COMPILING_BSLMA_CONSTRUCTIONUTIL_H)
13480
13481#endif // ! defined(INCLUDED_BSLMA_CONSTRUCTIONUTIL_CPP03)
13482
13483// ----------------------------------------------------------------------------
13484// Copyright 2013 Bloomberg Finance L.P.
13485//
13486// Licensed under the Apache License, Version 2.0 (the "License");
13487// you may not use this file except in compliance with the License.
13488// You may obtain a copy of the License at
13489//
13490// http://www.apache.org/licenses/LICENSE-2.0
13491//
13492// Unless required by applicable law or agreed to in writing, software
13493// distributed under the License is distributed on an "AS IS" BASIS,
13494// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13495// See the License for the specific language governing permissions and
13496// limitations under the License.
13497// ----------------------------- END-OF-FILE ----------------------------------
13498
13499/** @} */
13500/** @} */
13501/** @} */
Definition bslma_allocator.h:545
static const bool value
Definition bslmf_integralconstant.h:267
#define BSLS_ASSERT_SAFE(X)
Definition bsls_assert.h:1917
#define BSLS_COMPILERFEATURES_FORWARD_REF(T)
Definition bsls_compilerfeatures.h:2343
#define BSLS_COMPILERFEATURES_FORWARD(T, V)
Definition bsls_compilerfeatures.h:2349
Definition baljsn_encoder_testtypes.h:76
Definition bslmf_integralconstant.h:261
Definition bslmf_isclass.h:164
Definition bslmf_isconvertible.h:875
Definition bslmf_isfundamental.h:330
Definition bslmf_ispointer.h:138
Definition bslmf_usesallocator.h:165
@ value
Definition bslma_constructionutil.h:1169
bsl::integral_constant< int, value > type
Definition bslma_constructionutil.h:1179
static void destructiveMove(TARGET_TYPE *address, const ALLOCATOR &allocator, bsl::integral_constant< int, e_BITWISE_MOVABLE_TRAITS >, TARGET_TYPE *original)
Definition bslma_constructionutil.h:1522
@ e_NIL_TRAITS
Definition bslma_constructionutil.h:885
@ e_BITWISE_MOVABLE_TRAITS
Definition bslma_constructionutil.h:886
@ e_USES_ALLOCATOR_ARG_T_TRAITS
Definition bslma_constructionutil.h:888
@ e_USES_ALLOCATOR_TRAITS
Definition bslma_constructionutil.h:887
static void construct(TARGET_TYPE *address, const ALLOCATOR &allocator, bsl::integral_constant< int, e_USES_ALLOCATOR_ARG_T_TRAITS >)
Definition bslma_constructionutil.h:1380
static void construct(TARGET_TYPE *address, const ALLOCATOR &allocator)
Definition bslma_constructionutil.h:1244
static void destructiveMove(TARGET_TYPE *address, const ALLOCATOR &allocator, TARGET_TYPE *original)
Definition bslma_constructionutil.h:1296
static BSLS_KEYWORD_CONSTEXPR void * voidify(TYPE *address) BSLS_KEYWORD_NOEXCEPT
Definition bslma_pointerutil.h:350
Definition bslmf_isbitwisemoveable.h:718
static MovableRef< t_TYPE > move(t_TYPE &reference) BSLS_KEYWORD_NOEXCEPT
Definition bslmf_movableref.h:1067
Definition bslmf_usesallocatorargt.h:100