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