BDE 4.39.x Production Release
Loading...
Searching...
No Matches
bslma_bslallocator_cpp03.h
Go to the documentation of this file.
1/// @file bslma_bslallocator_cpp03.h
2///
3/// The content of this file has been pre-processed for Doxygen.
4///
5
6
7// bslma_bslallocator_cpp03.h -*-C++-*-
8
9// Automatically generated file. **DO NOT EDIT**
10
11#ifndef INCLUDED_BSLMA_BSLALLOCATOR_CPP03
12#define INCLUDED_BSLMA_BSLALLOCATOR_CPP03
13
14/// @defgroup bslma_bslallocator_cpp03 bslma_bslallocator_cpp03
15/// @brief Provide C++03 implementation for bslma_bslallocator.h
16/// @addtogroup bsl
17/// @{
18/// @addtogroup bslma
19/// @{
20/// @addtogroup bslma_bslallocator_cpp03
21/// @{
22///
23/// <h1> Outline </h1>
24/// * <a href="#bslma_bslallocator_cpp03-purpose"> Purpose</a>
25/// * <a href="#bslma_bslallocator_cpp03-classes"> Classes </a>
26/// * <a href="#bslma_bslallocator_cpp03-description"> Description </a>
27///
28/// # Purpose {#bslma_bslallocator_cpp03-purpose}
29/// Provide C++03 implementation for bslma_bslallocator.h
30///
31/// # Classes {#bslma_bslallocator_cpp03-classes}
32/// See bslma_bslallocator.h for list of classes
33///
34/// @see bslma_bslallocator
35///
36/// # Description {#bslma_bslallocator_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 Thu Jul 16 09:27:47 2026
48/// Command line: sim_cpp11_features.py bslma_bslallocator.h
49/// @}
50/** @} */
51/** @} */
52
53/** @addtogroup bsl
54 * @{
55 */
56/** @addtogroup bslma
57 * @{
58 */
59/** @addtogroup bslma_bslallocator_cpp03
60 * @{
61 */
62
63#ifdef COMPILING_BSLMA_BSLALLOCATOR_H
64
65#define BSLMA_BSLALLOCATOR_DEPRECATE_ASSIGN \
66 BSLS_DEPRECATE_FEATURE("bsl", "bsl_allocator_assign", \
67 "Do not assign allocators.")
68
69
70namespace bslma {
71
72// FORWARD DECLARATIONS
73
74/// Object type that will be placeholder for 'void'
75struct BslAllocator_Voidish;
76
77} // close package namespace
78
79
80namespace bsl {
81
82 // ===============
83 // class allocator
84 // ===============
85
86/// An STL-compatible allocator that forwards allocation calls to an
87/// underlying mechanism object of a type derived from `bslma::Allocator`.
88/// This class template adheres to the allocator requirements defined in
89/// section [allocator.requirements] and implements a superset of the
90/// `std::pmr::polymorphic_allocator` class template described in section
91/// [mem.poly.allocator.class] of the C++ standard and may be used to
92/// instantiate any [container] class template that follows the STL
93/// allocator protocol. The allocation mechanism is chosen at run-time,
94/// giving the programmer run-time control over how a container allocates
95/// and frees memory.
96///
97/// See @ref bslma_bslallocator_cpp03
98template <class TYPE = polymorphic_allocator<>::value_type>
99class allocator : public polymorphic_allocator<TYPE> {
100
101 // PRIVATE TYPES
102 typedef polymorphic_allocator<TYPE> Base;
103 typedef allocator_traits<Base> BaseTraits;
104
105 public:
106 // TRAITS
107 // Note that `allocator` is not trivially copyable because its assignment
108 // operator is not trivial.
110 BloombergLP::bslmf::IsBitwiseCopyable);
112 BloombergLP::bslmf::IsBitwiseEqualityComparable);
113
114 // PUBLIC TYPES
115 typedef TYPE value_type;
116 typedef value_type& reference;
117 typedef value_type const& const_reference;
118 typedef typename BaseTraits::size_type size_type;
120 typedef typename BaseTraits::pointer pointer;
122 typedef typename BaseTraits::void_pointer void_pointer;
124
125 /// This nested `struct` template, parameterized by `ANY_TYPE`, provides
126 /// a namespace for an `other` type alias, which is this template instantiated with `ANY_TYPE` instead of `TYPE`.
127 ///
128 /// \note Note that this
129 /// allocator type is convertible to and from `other` for any type,
130 /// including `void`.
131 ///
132 /// See @ref bslma_bslallocator_cpp03
133 template <class ANY_TYPE>
134 struct rebind {
135
136 typedef allocator<ANY_TYPE> other;
137 };
138
139 // CREATORS
140
141 /// Create an allocator that will forward allocation calls to the
142 /// object pointed to by `bslma::Default::defaultAllocator()`.
143 /// Postcondition:
144 /// @code
145 /// this->mechanism() == bslma::Default::defaultAllocator()
146 /// @endcode
147 allocator();
148
149 /// Convert a `bslma::Allocator` pointer to an `allocator` object that
150 /// forwards allocation calls to the object pointed to by the specified
151 /// `mechanism`. If `mechanism` is 0, then the currently installed
152 /// default allocator is used instead. Postcondition:
153 /// @code
154 /// this->mechanism() == bslma::Default::allocator(mechanism)
155 /// @endcode
156 allocator(BloombergLP::bslma::Allocator *mechanism); // IMPLICIT
157
158#ifdef BSLS_COMPILERFEATURES_SUPPORT_DEFAULTED_FUNCTIONS
159 allocator(const allocator& original) BSLS_KEYWORD_NOEXCEPT = default;
160#else
162#endif
163 /// Create an allocator sharing the same mechanism object as the
164 /// specified `original`. The newly constructed allocator will compare
165 /// equal to `original`, even though they may be instantiated on
166 /// different types. Postconditions:
167 /// @code
168 /// *this == original
169 /// this->mechanism() == original.mechanism()
170 /// @endcode
171 template <class ANY_TYPE>
172 allocator(const allocator<ANY_TYPE>& original) BSLS_KEYWORD_NOEXCEPT;
173
174 /// Destroy this object.
175 /// \note Note that this destructor does not delete the
176 /// object pointed to by `mechanism()`.
177 ~allocator() = default;
178
179 // MANIPULATORS
181 /// Modify this allocator to use the same mechanism as the specified `rhs`
182 /// allocator and return a modifiable reference to this object.
183 ///
184 /// \note Note that `bsl::allocator` objects should never be assigned at runtime, but, in
185 /// the absence of `if constexpr`, such assignments can sometimes be found
186 /// legitimately in dead branches (branches that are never taken at
187 /// runtime) within function templates; ideally, such code would be
188 /// replaced by more sophisticated metaprogramming that avoided calls to
189 /// this operator entirely. Invoking this assignment will result in a
190 /// review error unless `rhs == *this`, i.e., when the assignment would be
191 /// a no-op. In the future, the review error may be replaced with an a
192 /// hard assertion failure.
193 ///
194 /// @deprecated `bsl::allocator` should not be assigned.
196
197 /// Return a block of memory having sufficient size and alignment to
198 /// hold the specified `n` objects of `value_type`, allocated from the
199 /// memory resource held by this allocator. Optionally specify a
200 /// `hint`, which is ignored by this allocator type but theoretically
201 /// used by other allocators as an aid for optimizing locality.
203 pointer allocate(size_type n, const void *hint = 0);
204
205 /// Deallocate a block of memory at the specified `p` address by
206 /// returning it to the memory resource held by this allocator.
207 /// Optionally specify the number of objects, `n`, to deallocate.
208 ///
209 /// \pre The behavior is undefined unless `p` is the address of a block
210 /// previously allocated by a call to `allocate` with the same `n` from
211 /// a copy of this allocator having the same `value_type` and not yet
212 /// deallocated.
213 void deallocate(TYPE *p, std::size_t n = 1);
214
215 /// Create a default-constructed object of (template parameter)
216 /// `ELEMENT_TYPE` at the specified `address`. If `ELEMENT_TYPE`
217 /// supports `bslma`-style allocation, this allocator passes itself to
218 /// the extended default constructor. If the constructor throws, the
219 /// memory at `address` is left in an unspecified state.
220 ///
221 /// \pre The behavior is undefined unless `address` refers to a block of sufficient size
222 /// and properly aligned for objects of `ELEMENT_TYPE`.
223 template <class ELEMENT_TYPE>
224 void construct(ELEMENT_TYPE *address);
225
226#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
227// {{{ BEGIN GENERATED CODE
228// Command line: sim_cpp11_features.py bslma_bslallocator.h
229#ifndef BSLMA_BSLALLOCATOR_VARIADIC_LIMIT
230#define BSLMA_BSLALLOCATOR_VARIADIC_LIMIT 14
231#endif
232#ifndef BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A
233#define BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A BSLMA_BSLALLOCATOR_VARIADIC_LIMIT
234#endif
235
236#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 0
237 template <class ELEMENT_TYPE, class ARG1>
238 void construct(ELEMENT_TYPE *address,
239 ARG1& argument1);
240#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 0
241
242#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 1
243 template <class ELEMENT_TYPE, class ARG1, class ARGS_01>
244 void construct(ELEMENT_TYPE *address,
245 ARG1& argument1,
246 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01);
247#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 1
248
249#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 2
250 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
251 class ARGS_02>
252 void construct(ELEMENT_TYPE *address,
253 ARG1& argument1,
254 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
255 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02);
256#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 2
257
258#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 3
259 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
260 class ARGS_02,
261 class ARGS_03>
262 void construct(ELEMENT_TYPE *address,
263 ARG1& argument1,
264 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
265 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
266 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03);
267#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 3
268
269#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 4
270 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
271 class ARGS_02,
272 class ARGS_03,
273 class ARGS_04>
274 void construct(ELEMENT_TYPE *address,
275 ARG1& argument1,
276 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
277 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
278 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
279 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04);
280#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 4
281
282#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 5
283 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
284 class ARGS_02,
285 class ARGS_03,
286 class ARGS_04,
287 class ARGS_05>
288 void construct(ELEMENT_TYPE *address,
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#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 5
296
297#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 6
298 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
299 class ARGS_02,
300 class ARGS_03,
301 class ARGS_04,
302 class ARGS_05,
303 class ARGS_06>
304 void construct(ELEMENT_TYPE *address,
305 ARG1& argument1,
306 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
307 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
308 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
309 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
310 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
311 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06);
312#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 6
313
314#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 7
315 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
316 class ARGS_02,
317 class ARGS_03,
318 class ARGS_04,
319 class ARGS_05,
320 class ARGS_06,
321 class ARGS_07>
322 void construct(ELEMENT_TYPE *address,
323 ARG1& argument1,
324 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
325 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
326 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
327 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
328 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
329 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
330 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07);
331#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 7
332
333#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 8
334 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
335 class ARGS_02,
336 class ARGS_03,
337 class ARGS_04,
338 class ARGS_05,
339 class ARGS_06,
340 class ARGS_07,
341 class ARGS_08>
342 void construct(ELEMENT_TYPE *address,
343 ARG1& argument1,
344 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
345 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
346 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
347 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
348 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
349 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
350 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
351 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08);
352#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 8
353
354#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 9
355 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
356 class ARGS_02,
357 class ARGS_03,
358 class ARGS_04,
359 class ARGS_05,
360 class ARGS_06,
361 class ARGS_07,
362 class ARGS_08,
363 class ARGS_09>
364 void construct(ELEMENT_TYPE *address,
365 ARG1& argument1,
366 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
367 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
368 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
369 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
370 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
371 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
372 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
373 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
374 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09);
375#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 9
376
377#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 10
378 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
379 class ARGS_02,
380 class ARGS_03,
381 class ARGS_04,
382 class ARGS_05,
383 class ARGS_06,
384 class ARGS_07,
385 class ARGS_08,
386 class ARGS_09,
387 class ARGS_10>
388 void construct(ELEMENT_TYPE *address,
389 ARG1& argument1,
390 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
391 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
392 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
393 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
394 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
395 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
396 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
397 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
398 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
399 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10);
400#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 10
401
402#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 11
403 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
404 class ARGS_02,
405 class ARGS_03,
406 class ARGS_04,
407 class ARGS_05,
408 class ARGS_06,
409 class ARGS_07,
410 class ARGS_08,
411 class ARGS_09,
412 class ARGS_10,
413 class ARGS_11>
414 void construct(ELEMENT_TYPE *address,
415 ARG1& argument1,
416 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
417 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
418 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
419 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
420 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
421 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
422 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
423 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
424 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
425 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
426 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11);
427#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 11
428
429#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 12
430 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
431 class ARGS_02,
432 class ARGS_03,
433 class ARGS_04,
434 class ARGS_05,
435 class ARGS_06,
436 class ARGS_07,
437 class ARGS_08,
438 class ARGS_09,
439 class ARGS_10,
440 class ARGS_11,
441 class ARGS_12>
442 void construct(ELEMENT_TYPE *address,
443 ARG1& argument1,
444 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
445 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
446 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
447 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
448 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
449 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
450 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
451 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
452 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
453 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
454 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
455 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12);
456#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 12
457
458#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 13
459 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
460 class ARGS_02,
461 class ARGS_03,
462 class ARGS_04,
463 class ARGS_05,
464 class ARGS_06,
465 class ARGS_07,
466 class ARGS_08,
467 class ARGS_09,
468 class ARGS_10,
469 class ARGS_11,
470 class ARGS_12,
471 class ARGS_13>
472 void construct(ELEMENT_TYPE *address,
473 ARG1& argument1,
474 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
475 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
476 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
477 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
478 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
479 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
480 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
481 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
482 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
483 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
484 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
485 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
486 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13);
487#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 13
488
489#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 14
490 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
491 class ARGS_02,
492 class ARGS_03,
493 class ARGS_04,
494 class ARGS_05,
495 class ARGS_06,
496 class ARGS_07,
497 class ARGS_08,
498 class ARGS_09,
499 class ARGS_10,
500 class ARGS_11,
501 class ARGS_12,
502 class ARGS_13,
503 class ARGS_14>
504 void construct(ELEMENT_TYPE *address,
505 ARG1& argument1,
506 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
507 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
508 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
509 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
510 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
511 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
512 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
513 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
514 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
515 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
516 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
517 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
518 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13,
519 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_14) arguments_14);
520#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 14
521
522#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 0
523 template <class ELEMENT_TYPE, class ARG1>
524 void construct(ELEMENT_TYPE *address,
525 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1);
526#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 0
527
528#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 1
529 template <class ELEMENT_TYPE, class ARG1, class ARGS_01>
530 void construct(ELEMENT_TYPE *address,
531 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
532 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01);
533#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 1
534
535#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 2
536 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
537 class ARGS_02>
538 void construct(ELEMENT_TYPE *address,
539 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
540 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
541 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02);
542#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 2
543
544#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 3
545 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
546 class ARGS_02,
547 class ARGS_03>
548 void construct(ELEMENT_TYPE *address,
549 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
550 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
551 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
552 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03);
553#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 3
554
555#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 4
556 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
557 class ARGS_02,
558 class ARGS_03,
559 class ARGS_04>
560 void construct(ELEMENT_TYPE *address,
561 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
562 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
563 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
564 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
565 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04);
566#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 4
567
568#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 5
569 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
570 class ARGS_02,
571 class ARGS_03,
572 class ARGS_04,
573 class ARGS_05>
574 void construct(ELEMENT_TYPE *address,
575 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
576 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
577 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
578 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
579 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
580 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05);
581#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 5
582
583#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 6
584 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
585 class ARGS_02,
586 class ARGS_03,
587 class ARGS_04,
588 class ARGS_05,
589 class ARGS_06>
590 void construct(ELEMENT_TYPE *address,
591 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
592 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
593 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
594 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
595 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
596 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
597 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06);
598#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 6
599
600#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 7
601 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
602 class ARGS_02,
603 class ARGS_03,
604 class ARGS_04,
605 class ARGS_05,
606 class ARGS_06,
607 class ARGS_07>
608 void construct(ELEMENT_TYPE *address,
609 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
610 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
611 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
612 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
613 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
614 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
615 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
616 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07);
617#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 7
618
619#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 8
620 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
621 class ARGS_02,
622 class ARGS_03,
623 class ARGS_04,
624 class ARGS_05,
625 class ARGS_06,
626 class ARGS_07,
627 class ARGS_08>
628 void construct(ELEMENT_TYPE *address,
629 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
630 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
631 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
632 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
633 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
634 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
635 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
636 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
637 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08);
638#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 8
639
640#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 9
641 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
642 class ARGS_02,
643 class ARGS_03,
644 class ARGS_04,
645 class ARGS_05,
646 class ARGS_06,
647 class ARGS_07,
648 class ARGS_08,
649 class ARGS_09>
650 void construct(ELEMENT_TYPE *address,
651 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
652 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
653 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
654 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
655 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
656 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
657 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
658 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
659 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
660 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09);
661#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 9
662
663#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 10
664 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
665 class ARGS_02,
666 class ARGS_03,
667 class ARGS_04,
668 class ARGS_05,
669 class ARGS_06,
670 class ARGS_07,
671 class ARGS_08,
672 class ARGS_09,
673 class ARGS_10>
674 void construct(ELEMENT_TYPE *address,
675 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
676 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
677 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
678 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
679 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
680 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
681 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
682 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
683 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
684 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
685 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10);
686#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 10
687
688#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 11
689 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
690 class ARGS_02,
691 class ARGS_03,
692 class ARGS_04,
693 class ARGS_05,
694 class ARGS_06,
695 class ARGS_07,
696 class ARGS_08,
697 class ARGS_09,
698 class ARGS_10,
699 class ARGS_11>
700 void construct(ELEMENT_TYPE *address,
701 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
702 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
703 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
704 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
705 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
706 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
707 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
708 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
709 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
710 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
711 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
712 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11);
713#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 11
714
715#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 12
716 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
717 class ARGS_02,
718 class ARGS_03,
719 class ARGS_04,
720 class ARGS_05,
721 class ARGS_06,
722 class ARGS_07,
723 class ARGS_08,
724 class ARGS_09,
725 class ARGS_10,
726 class ARGS_11,
727 class ARGS_12>
728 void construct(ELEMENT_TYPE *address,
729 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
730 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
731 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
732 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
733 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
734 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
735 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
736 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
737 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
738 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
739 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
740 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
741 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12);
742#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 12
743
744#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 13
745 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
746 class ARGS_02,
747 class ARGS_03,
748 class ARGS_04,
749 class ARGS_05,
750 class ARGS_06,
751 class ARGS_07,
752 class ARGS_08,
753 class ARGS_09,
754 class ARGS_10,
755 class ARGS_11,
756 class ARGS_12,
757 class ARGS_13>
758 void construct(ELEMENT_TYPE *address,
759 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
760 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
761 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
762 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
763 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
764 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
765 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
766 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
767 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
768 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
769 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
770 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
771 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
772 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13);
773#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 13
774
775#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 14
776 template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
777 class ARGS_02,
778 class ARGS_03,
779 class ARGS_04,
780 class ARGS_05,
781 class ARGS_06,
782 class ARGS_07,
783 class ARGS_08,
784 class ARGS_09,
785 class ARGS_10,
786 class ARGS_11,
787 class ARGS_12,
788 class ARGS_13,
789 class ARGS_14>
790 void construct(ELEMENT_TYPE *address,
791 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
792 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
793 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
794 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
795 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
796 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
797 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
798 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
799 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
800 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
801 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
802 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
803 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
804 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13,
805 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_14) arguments_14);
806#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_A >= 14
807
808#else
809// The generated code below is a workaround for the absence of perfect
810// forwarding in some compilers.
811
812 template <class ELEMENT_TYPE, class ARG1, class... ARGS>
813 void construct(ELEMENT_TYPE *address,
814 ARG1& argument1,
815 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments);
816 template <class ELEMENT_TYPE, class ARG1, class... ARGS>
817 void construct(ELEMENT_TYPE *address,
818 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
819 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments);
820// }}} END GENERATED CODE
821#endif
822
823 /// Call the `TYPE` destructor for the object pointed to by the
824 /// specified `address`. Do not directly deallocate any memory.
825 template <class ELEMENT_TYPE>
826 void destroy(ELEMENT_TYPE *address);
827
828 // ACCESSORS
829
830 /// Return the address of the object referred to by the specified `x`
831 /// reference, even if the (template parameter) `TYPE` overloads the
832 /// unary `operator&`.
833 pointer address(reference x) const;
835
836 /// Return the maximum number of elements of (template parameter) `TYPE` that can be allocated using this allocator.
837 ///
838 /// \note Note that there is no
839 /// guarantee that attempts at allocating fewer elements than the value
840 /// returned by @ref max_size will not throw.
842 size_type max_size() const;
843
844 /// Return a pointer to the mechanism object to which this proxy
845 /// forwards allocation and deallocation calls.
846 BloombergLP::bslma::Allocator *mechanism() const;
847
848 /// Return a default-constructed allocator.
850};
851
852 // =====================
853 // class allocator<void>
854 // =====================
855
856/// Specialization of `allocator<T>` where `T` is `void`. Does not contain members that are unrepresentable for `void`.
857///
858/// \note Note that this
859/// specialization may be removed in the future. Use `allocator<>` or
860/// `allocator<char>` instead.
861template <>
862class allocator<void>
863 : public allocator<BloombergLP::bslma::BslAllocator_Voidish>
864{
865
866 // PRIVATE TYPES
867 typedef allocator<BloombergLP::bslma::BslAllocator_Voidish> Base;
868
869 // NOT DEFINED
870 void allocate(); // Hide name inherited from base class
871 void deallocate(); // Hide name inherited from base class
872 void construct(); // Hide name inherited from base class
873 void destroy(); // Hide name inherited from base class
874 void max_size(int); // Hide name inherited from base class
875
876 public:
877 // TRAITS
878 // Note that `allocator` is not trivially copyable because its assignment
879 // operator is not trivial.
881 BloombergLP::bslmf::IsBitwiseCopyable);
883 BloombergLP::bslmf::IsBitwiseEqualityComparable);
884
885 // PUBLIC TYPES
886 typedef void *pointer;
887 typedef const void *const_pointer;
888 typedef void *void_pointer;
889 typedef const void *const_void_pointer;
890 typedef void value_type;
891
892 // CREATORS
893
894 /// Create a proxy object that will forward allocation calls to the
895 /// object pointed to by `bslma::Default::defaultAllocator()`.
896 /// Postcondition:
897 /// @code
898 /// this->mechanism() == bslma::Default::defaultAllocator();
899 /// @endcode
900 allocator();
901
902 /// Convert a `bslma::Allocator` pointer to an `allocator` object that
903 /// forwards allocation calls to the object pointed to by the specified
904 /// `mechanism`. If `mechanism` is 0, then the currently installed
905 /// default allocator is used instead. Postcondition:
906 /// @code
907 /// this->mechanism() == bslma::Default::allocator(mechanism);
908 /// @endcode
909 allocator(BloombergLP::bslma::Allocator *mechanism); // IMPLICIT
910
911 /// Create a proxy object sharing the same mechanism object as the
912 /// specified `original`. The newly constructed allocator will compare
913 /// equal to `original`, even though they may be instantiated on
914 /// different types. Postcondition:
915 /// @code
916 /// this->mechanism() == original.mechanism();
917 /// @endcode
918#ifdef BSLS_COMPILERFEATURES_SUPPORT_DEFAULTED_FUNCTIONS
919 allocator(const allocator& original) BSLS_KEYWORD_NOEXCEPT = default;
920#else
922#endif
923 template <class ANY_TYPE>
924 allocator(const allocator<ANY_TYPE>& original) BSLS_KEYWORD_NOEXCEPT;
925
926 /// Destroy this object.
927 /// \note Note that this does not delete the object
928 /// pointed to by `mechanism()`. Also note that this method's
929 /// definition is compiler generated.
930 ~allocator();
931
932 // MANIPULATORS
933
934 /// Compiler-generated assign operator.
935 allocator& operator=(const allocator& rhs) = default;
936
937 // ACCESSORS
938
939 /// Return a default-constructed allocator.
941};
942
943 // ========================================
944 // class allocator_traits<allocator<TYPE> >
945 // ========================================
946
947/// This `struct` template provides a specialization of the
948/// `allocator_traits` class template for `bsl::allocator`. This
949/// specialization is not strictly necessary, but its presence speeds up
950/// compliation by bypassing a significant amount of metaprogramming.
951template <class TYPE>
952struct allocator_traits<allocator<TYPE> > {
953
954 // PUBLIC TYPES
955 typedef allocator<TYPE> allocator_type;
956 typedef TYPE value_type;
957
958 typedef typename allocator_type::pointer pointer;
959 typedef typename allocator_type::const_pointer const_pointer;
960 typedef typename allocator_type::void_pointer void_pointer;
961 typedef typename allocator_type::const_void_pointer const_void_pointer;
962 typedef typename allocator_type::difference_type difference_type;
963 typedef typename allocator_type::size_type size_type;
964
965#ifdef BSLS_COMPILERFEATURES_SUPPORT_ALIAS_TEMPLATES
966 template <class ELEMENT_TYPE>
967 using rebind_alloc = allocator<ELEMENT_TYPE>;
968
969 template <class ELEMENT_TYPE>
970 using rebind_traits = allocator_traits<allocator<ELEMENT_TYPE> >;
971#else
972 template <class ELEMENT_TYPE>
973 struct rebind_alloc : allocator<ELEMENT_TYPE> {
975 : allocator<ELEMENT_TYPE>()
976 {
977 }
978
979 // Convert from anything that can be used to cosntruct the base type.
980 // This might be better if SFINAE-ed out using `is_convertible`, but
981 // stressing older compilers more seems unwise.
982 template <typename ARG>
983 rebind_alloc(const ARG& allocatorArg)
984 : allocator<ELEMENT_TYPE>(allocatorArg)
985 {
986 }
987 };
988
989 template <class ELEMENT_TYPE>
990 struct rebind_traits : allocator_traits<allocator<ELEMENT_TYPE> > {
991 };
992#endif
993
995 {
996 return m.allocate(n);
997 }
998
1000 size_type n,
1001 const_void_pointer /* hint */)
1002 {
1003 return m.allocate(n);
1004 }
1005
1006 static void deallocate(allocator_type& m, pointer p, size_type n)
1007 {
1008 m.deallocate(p, n);
1009 }
1010
1011 template <class TYPE2>
1012 static void construct(allocator_type& m,
1013 TYPE2 *p)
1014 {
1015 m.construct(p);
1016 }
1017
1018#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
1019// {{{ BEGIN GENERATED CODE
1020// Command line: sim_cpp11_features.py bslma_bslallocator.h
1021#ifndef BSLMA_BSLALLOCATOR_VARIADIC_LIMIT
1022#define BSLMA_BSLALLOCATOR_VARIADIC_LIMIT 14
1023#endif
1024#ifndef BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B
1025#define BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B BSLMA_BSLALLOCATOR_VARIADIC_LIMIT
1026#endif
1027#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 0
1028 template <class TYPE2, class ARG1>
1029 static void construct(allocator_type& m,
1030 TYPE2 *p,
1031 ARG1& argument1)
1032 {
1033 m.construct(p,
1034 argument1);
1035 }
1036#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 0
1037
1038#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 1
1039 template <class TYPE2, class ARG1, class ARGS_01>
1040 static void construct(allocator_type& m,
1041 TYPE2 *p,
1042 ARG1& argument1,
1043 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01)
1044 {
1045 m.construct(p,
1046 argument1,
1047 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01));
1048 }
1049#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 1
1050
1051#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 2
1052 template <class TYPE2, class ARG1, class ARGS_01,
1053 class ARGS_02>
1054 static void construct(allocator_type& m,
1055 TYPE2 *p,
1056 ARG1& argument1,
1057 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1058 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02)
1059 {
1060 m.construct(p,
1061 argument1,
1062 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1063 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02));
1064 }
1065#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 2
1066
1067#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 3
1068 template <class TYPE2, class ARG1, class ARGS_01,
1069 class ARGS_02,
1070 class ARGS_03>
1071 static void construct(allocator_type& m,
1072 TYPE2 *p,
1073 ARG1& argument1,
1074 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1075 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1076 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03)
1077 {
1078 m.construct(p,
1079 argument1,
1080 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1081 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1082 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03));
1083 }
1084#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 3
1085
1086#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 4
1087 template <class TYPE2, class ARG1, class ARGS_01,
1088 class ARGS_02,
1089 class ARGS_03,
1090 class ARGS_04>
1091 static void construct(allocator_type& m,
1092 TYPE2 *p,
1093 ARG1& argument1,
1094 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1095 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1096 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1097 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04)
1098 {
1099 m.construct(p,
1100 argument1,
1101 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1102 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1103 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
1104 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04));
1105 }
1106#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 4
1107
1108#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 5
1109 template <class TYPE2, class ARG1, class ARGS_01,
1110 class ARGS_02,
1111 class ARGS_03,
1112 class ARGS_04,
1113 class ARGS_05>
1114 static void construct(allocator_type& m,
1115 TYPE2 *p,
1116 ARG1& argument1,
1117 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1118 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1119 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1120 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1121 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05)
1122 {
1123 m.construct(p,
1124 argument1,
1125 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1126 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1127 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
1128 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
1129 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05));
1130 }
1131#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 5
1132
1133#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 6
1134 template <class TYPE2, class ARG1, class ARGS_01,
1135 class ARGS_02,
1136 class ARGS_03,
1137 class ARGS_04,
1138 class ARGS_05,
1139 class ARGS_06>
1140 static void construct(allocator_type& m,
1141 TYPE2 *p,
1142 ARG1& argument1,
1143 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1144 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1145 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1146 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1147 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1148 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06)
1149 {
1150 m.construct(p,
1151 argument1,
1152 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1153 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1154 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
1155 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
1156 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
1157 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06));
1158 }
1159#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 6
1160
1161#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 7
1162 template <class TYPE2, class ARG1, class ARGS_01,
1163 class ARGS_02,
1164 class ARGS_03,
1165 class ARGS_04,
1166 class ARGS_05,
1167 class ARGS_06,
1168 class ARGS_07>
1169 static void construct(allocator_type& m,
1170 TYPE2 *p,
1171 ARG1& argument1,
1172 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1173 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1174 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1175 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1176 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1177 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1178 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07)
1179 {
1180 m.construct(p,
1181 argument1,
1182 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1183 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1184 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
1185 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
1186 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
1187 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
1188 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07));
1189 }
1190#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 7
1191
1192#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 8
1193 template <class TYPE2, class ARG1, class ARGS_01,
1194 class ARGS_02,
1195 class ARGS_03,
1196 class ARGS_04,
1197 class ARGS_05,
1198 class ARGS_06,
1199 class ARGS_07,
1200 class ARGS_08>
1201 static void construct(allocator_type& m,
1202 TYPE2 *p,
1203 ARG1& argument1,
1204 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1205 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1206 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1207 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1208 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1209 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1210 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1211 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08)
1212 {
1213 m.construct(p,
1214 argument1,
1215 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1216 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1217 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
1218 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
1219 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
1220 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
1221 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
1222 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08));
1223 }
1224#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 8
1225
1226#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 9
1227 template <class TYPE2, class ARG1, class ARGS_01,
1228 class ARGS_02,
1229 class ARGS_03,
1230 class ARGS_04,
1231 class ARGS_05,
1232 class ARGS_06,
1233 class ARGS_07,
1234 class ARGS_08,
1235 class ARGS_09>
1236 static void construct(allocator_type& m,
1237 TYPE2 *p,
1238 ARG1& argument1,
1239 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1240 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1241 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1242 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1243 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1244 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1245 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1246 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1247 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09)
1248 {
1249 m.construct(p,
1250 argument1,
1251 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1252 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1253 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
1254 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
1255 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
1256 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
1257 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
1258 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
1259 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09));
1260 }
1261#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 9
1262
1263#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 10
1264 template <class TYPE2, class ARG1, class ARGS_01,
1265 class ARGS_02,
1266 class ARGS_03,
1267 class ARGS_04,
1268 class ARGS_05,
1269 class ARGS_06,
1270 class ARGS_07,
1271 class ARGS_08,
1272 class ARGS_09,
1273 class ARGS_10>
1274 static void construct(allocator_type& m,
1275 TYPE2 *p,
1276 ARG1& argument1,
1277 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1278 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1279 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1280 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1281 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1282 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1283 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1284 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1285 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
1286 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10)
1287 {
1288 m.construct(p,
1289 argument1,
1290 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1291 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1292 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
1293 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
1294 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
1295 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
1296 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
1297 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
1298 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
1299 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10));
1300 }
1301#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 10
1302
1303#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 11
1304 template <class TYPE2, class ARG1, class ARGS_01,
1305 class ARGS_02,
1306 class ARGS_03,
1307 class ARGS_04,
1308 class ARGS_05,
1309 class ARGS_06,
1310 class ARGS_07,
1311 class ARGS_08,
1312 class ARGS_09,
1313 class ARGS_10,
1314 class ARGS_11>
1315 static void construct(allocator_type& m,
1316 TYPE2 *p,
1317 ARG1& argument1,
1318 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1319 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1320 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1321 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1322 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1323 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1324 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1325 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1326 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
1327 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
1328 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11)
1329 {
1330 m.construct(p,
1331 argument1,
1332 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1333 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1334 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
1335 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
1336 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
1337 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
1338 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
1339 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
1340 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
1341 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
1342 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11));
1343 }
1344#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 11
1345
1346#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 12
1347 template <class TYPE2, class ARG1, class ARGS_01,
1348 class ARGS_02,
1349 class ARGS_03,
1350 class ARGS_04,
1351 class ARGS_05,
1352 class ARGS_06,
1353 class ARGS_07,
1354 class ARGS_08,
1355 class ARGS_09,
1356 class ARGS_10,
1357 class ARGS_11,
1358 class ARGS_12>
1359 static void construct(allocator_type& m,
1360 TYPE2 *p,
1361 ARG1& argument1,
1362 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1363 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1364 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1365 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1366 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1367 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1368 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1369 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1370 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
1371 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
1372 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
1373 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12)
1374 {
1375 m.construct(p,
1376 argument1,
1377 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1378 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1379 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
1380 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
1381 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
1382 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
1383 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
1384 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
1385 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
1386 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
1387 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
1388 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12));
1389 }
1390#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 12
1391
1392#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 13
1393 template <class TYPE2, 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 class ARGS_07,
1400 class ARGS_08,
1401 class ARGS_09,
1402 class ARGS_10,
1403 class ARGS_11,
1404 class ARGS_12,
1405 class ARGS_13>
1406 static void construct(allocator_type& m,
1407 TYPE2 *p,
1408 ARG1& argument1,
1409 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1410 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1411 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1412 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1413 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1414 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1415 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1416 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1417 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
1418 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
1419 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
1420 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
1421 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13)
1422 {
1423 m.construct(p,
1424 argument1,
1425 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1426 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1427 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
1428 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
1429 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
1430 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
1431 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
1432 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
1433 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
1434 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
1435 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
1436 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
1437 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13));
1438 }
1439#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 13
1440
1441#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 14
1442 template <class TYPE2, class ARG1, class ARGS_01,
1443 class ARGS_02,
1444 class ARGS_03,
1445 class ARGS_04,
1446 class ARGS_05,
1447 class ARGS_06,
1448 class ARGS_07,
1449 class ARGS_08,
1450 class ARGS_09,
1451 class ARGS_10,
1452 class ARGS_11,
1453 class ARGS_12,
1454 class ARGS_13,
1455 class ARGS_14>
1456 static void construct(allocator_type& m,
1457 TYPE2 *p,
1458 ARG1& argument1,
1459 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1460 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1461 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1462 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1463 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1464 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1465 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1466 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1467 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
1468 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
1469 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
1470 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
1471 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13,
1472 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_14) arguments_14)
1473 {
1474 m.construct(p,
1475 argument1,
1476 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1477 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1478 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
1479 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
1480 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
1481 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
1482 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
1483 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
1484 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
1485 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
1486 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
1487 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
1488 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13),
1489 BSLS_COMPILERFEATURES_FORWARD(ARGS_14, arguments_14));
1490 }
1491#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 14
1492
1493
1494#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 0
1495 template <class TYPE2, class ARG1>
1496 static void construct(allocator_type& m,
1497 TYPE2 *p,
1498 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1)
1499 {
1500 m.construct(p,
1501 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1));
1502 }
1503#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 0
1504
1505#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 1
1506 template <class TYPE2, class ARG1, class ARGS_01>
1507 static void construct(allocator_type& m,
1508 TYPE2 *p,
1509 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1510 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01)
1511 {
1512 m.construct(p,
1513 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
1514 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01));
1515 }
1516#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 1
1517
1518#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 2
1519 template <class TYPE2, class ARG1, class ARGS_01,
1520 class ARGS_02>
1521 static void construct(allocator_type& m,
1522 TYPE2 *p,
1523 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1524 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1525 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02)
1526 {
1527 m.construct(p,
1528 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
1529 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1530 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02));
1531 }
1532#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 2
1533
1534#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 3
1535 template <class TYPE2, class ARG1, class ARGS_01,
1536 class ARGS_02,
1537 class ARGS_03>
1538 static void construct(allocator_type& m,
1539 TYPE2 *p,
1540 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1541 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1542 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1543 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03)
1544 {
1545 m.construct(p,
1546 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
1547 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1548 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1549 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03));
1550 }
1551#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 3
1552
1553#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 4
1554 template <class TYPE2, class ARG1, class ARGS_01,
1555 class ARGS_02,
1556 class ARGS_03,
1557 class ARGS_04>
1558 static void construct(allocator_type& m,
1559 TYPE2 *p,
1560 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1561 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1562 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1563 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1564 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04)
1565 {
1566 m.construct(p,
1567 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
1568 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1569 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1570 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
1571 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04));
1572 }
1573#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 4
1574
1575#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 5
1576 template <class TYPE2, class ARG1, class ARGS_01,
1577 class ARGS_02,
1578 class ARGS_03,
1579 class ARGS_04,
1580 class ARGS_05>
1581 static void construct(allocator_type& m,
1582 TYPE2 *p,
1583 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1584 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1585 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1586 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1587 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1588 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05)
1589 {
1590 m.construct(p,
1591 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
1592 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1593 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1594 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
1595 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
1596 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05));
1597 }
1598#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 5
1599
1600#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 6
1601 template <class TYPE2, class ARG1, class ARGS_01,
1602 class ARGS_02,
1603 class ARGS_03,
1604 class ARGS_04,
1605 class ARGS_05,
1606 class ARGS_06>
1607 static void construct(allocator_type& m,
1608 TYPE2 *p,
1609 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1610 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1611 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1612 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1613 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1614 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1615 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06)
1616 {
1617 m.construct(p,
1618 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
1619 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1620 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1621 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
1622 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
1623 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
1624 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06));
1625 }
1626#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 6
1627
1628#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 7
1629 template <class TYPE2, class ARG1, class ARGS_01,
1630 class ARGS_02,
1631 class ARGS_03,
1632 class ARGS_04,
1633 class ARGS_05,
1634 class ARGS_06,
1635 class ARGS_07>
1636 static void construct(allocator_type& m,
1637 TYPE2 *p,
1638 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1639 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1640 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1641 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1642 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1643 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1644 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1645 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07)
1646 {
1647 m.construct(p,
1648 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
1649 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1650 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1651 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
1652 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
1653 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
1654 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
1655 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07));
1656 }
1657#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 7
1658
1659#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 8
1660 template <class TYPE2, class ARG1, class ARGS_01,
1661 class ARGS_02,
1662 class ARGS_03,
1663 class ARGS_04,
1664 class ARGS_05,
1665 class ARGS_06,
1666 class ARGS_07,
1667 class ARGS_08>
1668 static void construct(allocator_type& m,
1669 TYPE2 *p,
1670 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1671 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1672 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1673 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1674 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1675 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1676 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1677 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1678 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08)
1679 {
1680 m.construct(p,
1681 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
1682 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1683 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1684 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
1685 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
1686 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
1687 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
1688 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
1689 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08));
1690 }
1691#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 8
1692
1693#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 9
1694 template <class TYPE2, class ARG1, class ARGS_01,
1695 class ARGS_02,
1696 class ARGS_03,
1697 class ARGS_04,
1698 class ARGS_05,
1699 class ARGS_06,
1700 class ARGS_07,
1701 class ARGS_08,
1702 class ARGS_09>
1703 static void construct(allocator_type& m,
1704 TYPE2 *p,
1705 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1706 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1707 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1708 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1709 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1710 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1711 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1712 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1713 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1714 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09)
1715 {
1716 m.construct(p,
1717 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
1718 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1719 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1720 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
1721 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
1722 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
1723 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
1724 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
1725 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
1726 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09));
1727 }
1728#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 9
1729
1730#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 10
1731 template <class TYPE2, class ARG1, class ARGS_01,
1732 class ARGS_02,
1733 class ARGS_03,
1734 class ARGS_04,
1735 class ARGS_05,
1736 class ARGS_06,
1737 class ARGS_07,
1738 class ARGS_08,
1739 class ARGS_09,
1740 class ARGS_10>
1741 static void construct(allocator_type& m,
1742 TYPE2 *p,
1743 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1744 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1745 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1746 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1747 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1748 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1749 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1750 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1751 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1752 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
1753 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10)
1754 {
1755 m.construct(p,
1756 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
1757 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1758 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1759 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
1760 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
1761 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
1762 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
1763 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
1764 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
1765 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
1766 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10));
1767 }
1768#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 10
1769
1770#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 11
1771 template <class TYPE2, class ARG1, class ARGS_01,
1772 class ARGS_02,
1773 class ARGS_03,
1774 class ARGS_04,
1775 class ARGS_05,
1776 class ARGS_06,
1777 class ARGS_07,
1778 class ARGS_08,
1779 class ARGS_09,
1780 class ARGS_10,
1781 class ARGS_11>
1782 static void construct(allocator_type& m,
1783 TYPE2 *p,
1784 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1785 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1786 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1787 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1788 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1789 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1790 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1791 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1792 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1793 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
1794 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
1795 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11)
1796 {
1797 m.construct(p,
1798 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
1799 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1800 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1801 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
1802 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
1803 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
1804 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
1805 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
1806 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
1807 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
1808 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
1809 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11));
1810 }
1811#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 11
1812
1813#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 12
1814 template <class TYPE2, class ARG1, class ARGS_01,
1815 class ARGS_02,
1816 class ARGS_03,
1817 class ARGS_04,
1818 class ARGS_05,
1819 class ARGS_06,
1820 class ARGS_07,
1821 class ARGS_08,
1822 class ARGS_09,
1823 class ARGS_10,
1824 class ARGS_11,
1825 class ARGS_12>
1826 static void construct(allocator_type& m,
1827 TYPE2 *p,
1828 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1829 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1830 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1831 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1832 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1833 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1834 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1835 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1836 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1837 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
1838 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
1839 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
1840 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12)
1841 {
1842 m.construct(p,
1843 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
1844 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1845 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1846 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
1847 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
1848 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
1849 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
1850 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
1851 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
1852 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
1853 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
1854 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
1855 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12));
1856 }
1857#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 12
1858
1859#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 13
1860 template <class TYPE2, class ARG1, class ARGS_01,
1861 class ARGS_02,
1862 class ARGS_03,
1863 class ARGS_04,
1864 class ARGS_05,
1865 class ARGS_06,
1866 class ARGS_07,
1867 class ARGS_08,
1868 class ARGS_09,
1869 class ARGS_10,
1870 class ARGS_11,
1871 class ARGS_12,
1872 class ARGS_13>
1873 static void construct(allocator_type& m,
1874 TYPE2 *p,
1875 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1876 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1877 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1878 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1879 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1880 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1881 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1882 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1883 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1884 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
1885 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
1886 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
1887 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
1888 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13)
1889 {
1890 m.construct(p,
1891 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
1892 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1893 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1894 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
1895 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
1896 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
1897 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
1898 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
1899 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
1900 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
1901 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
1902 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
1903 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
1904 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13));
1905 }
1906#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 13
1907
1908#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 14
1909 template <class TYPE2, class ARG1, class ARGS_01,
1910 class ARGS_02,
1911 class ARGS_03,
1912 class ARGS_04,
1913 class ARGS_05,
1914 class ARGS_06,
1915 class ARGS_07,
1916 class ARGS_08,
1917 class ARGS_09,
1918 class ARGS_10,
1919 class ARGS_11,
1920 class ARGS_12,
1921 class ARGS_13,
1922 class ARGS_14>
1923 static void construct(allocator_type& m,
1924 TYPE2 *p,
1925 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1926 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
1927 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
1928 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
1929 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
1930 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
1931 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
1932 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
1933 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
1934 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
1935 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
1936 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
1937 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
1938 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13,
1939 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_14) arguments_14)
1940 {
1941 m.construct(p,
1942 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
1943 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
1944 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
1945 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
1946 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
1947 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
1948 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
1949 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
1950 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
1951 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
1952 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
1953 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
1954 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
1955 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13),
1956 BSLS_COMPILERFEATURES_FORWARD(ARGS_14, arguments_14));
1957 }
1958#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_B >= 14
1959
1960#else
1961// The generated code below is a workaround for the absence of perfect
1962// forwarding in some compilers.
1963 template <class TYPE2, class ARG1, class... ARGS>
1964 static void construct(allocator_type& m,
1965 TYPE2 *p,
1966 ARG1& argument1,
1967 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments)
1968 {
1969 m.construct(p,
1970 argument1,
1971 BSLS_COMPILERFEATURES_FORWARD(ARGS, arguments)...);
1972 }
1973
1974 template <class TYPE2, class ARG1, class... ARGS>
1975 static void construct(allocator_type& m,
1976 TYPE2 *p,
1977 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
1978 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments)
1979 {
1980 m.construct(p,
1981 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
1982 BSLS_COMPILERFEATURES_FORWARD(ARGS, arguments)...);
1983 }
1984// }}} END GENERATED CODE
1985#endif
1986
1987 template <class ELEMENT_TYPE>
1988 static void destroy(allocator_type& m, ELEMENT_TYPE *p)
1989 {
1990 m.destroy(p);
1991 }
1992
1994 static size_type max_size(const allocator_type& m)
1995 {
1996 return m.max_size();
1997 }
1998
1999 // Allocator propagation traits
2000 static
2002 {
2003 return allocator_type();
2004 }
2005
2007
2009
2011
2013};
2014
2015
2016// ============================================================================
2017// INLINE FUNCTION DEFINITIONS
2018// ============================================================================
2019
2020 // ---------------
2021 // class allocator
2022 // ---------------
2023
2024// CREATORS
2025template <class TYPE>
2026inline
2028: Base(BloombergLP::bslma::Default::defaultAllocator())
2029{
2030}
2031
2032template <class TYPE>
2033inline
2034allocator<TYPE>::allocator(BloombergLP::bslma::Allocator *mechanism)
2035: Base(BloombergLP::bslma::Default::allocator(mechanism))
2036{
2037}
2038
2039#ifndef BSLS_COMPILERFEATURES_SUPPORT_DEFAULTED_FUNCTIONS
2040// In C++11 and later, this copy constructor is defaulted.
2041template <class TYPE>
2042inline
2043allocator<TYPE>::allocator(const allocator& original) BSLS_KEYWORD_NOEXCEPT
2044: Base(original)
2045{
2046}
2047#endif
2048
2049template <class TYPE>
2050template <class ANY_TYPE>
2051inline
2052allocator<TYPE>::allocator(const allocator<ANY_TYPE>& original)
2054: Base(original)
2055{
2056}
2057
2058// MANIPULATORS
2059template <class TYPE>
2060inline
2061allocator<TYPE>&
2062allocator<TYPE>::operator=(const allocator& rhs)
2063{
2064 BSLS_REVIEW_OPT(rhs == *this &&
2065 "'bsl::allocator' objects cannot be assigned");
2066
2067 if (this != &rhs) {
2068 // As the base class does not support assignment, the only way to
2069 // change the mechanism is to destroy and re-create this object
2070 this->~allocator();
2071 return *::new(this) allocator(rhs);
2072 }
2073
2074 return *this;
2075}
2076
2077template <class TYPE>
2078inline
2079typename allocator<TYPE>::pointer
2080allocator<TYPE>::allocate(size_type n, const void * /* hint */)
2081{
2082 return Base::allocate(n);
2083}
2084
2085template <class TYPE>
2086inline
2087void allocator<TYPE>::deallocate(TYPE *p, std::size_t n)
2088{
2089 Base::deallocate(p, n);
2090}
2091
2092template <class TYPE>
2093template <class ELEMENT_TYPE>
2094inline
2095void allocator<TYPE>::construct(ELEMENT_TYPE *address)
2096{
2097 BloombergLP::bslma::ConstructionUtil::construct(address, *this);
2098}
2099
2100#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
2101// {{{ BEGIN GENERATED CODE
2102// Command line: sim_cpp11_features.py bslma_bslallocator.h
2103#ifndef BSLMA_BSLALLOCATOR_VARIADIC_LIMIT
2104#define BSLMA_BSLALLOCATOR_VARIADIC_LIMIT 14
2105#endif
2106#ifndef BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C
2107#define BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C BSLMA_BSLALLOCATOR_VARIADIC_LIMIT
2108#endif
2109#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 0
2110template <class TYPE>
2111template <class ELEMENT_TYPE, class ARG1>
2112inline
2113void allocator<TYPE>::construct(ELEMENT_TYPE *address,
2114 ARG1& argument1)
2115{
2116 BloombergLP::bslma::ConstructionUtil::construct(
2117 address,
2118 *this,
2119 argument1);
2120}
2121#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 0
2122
2123#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 1
2124template <class TYPE>
2125template <class ELEMENT_TYPE, class ARG1, class ARGS_01>
2126inline
2127void allocator<TYPE>::construct(ELEMENT_TYPE *address,
2128 ARG1& argument1,
2129 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01)
2130{
2131 BloombergLP::bslma::ConstructionUtil::construct(
2132 address,
2133 *this,
2134 argument1,
2135 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01));
2136}
2137#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 1
2138
2139#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 2
2140template <class TYPE>
2141template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
2142 class ARGS_02>
2143inline
2144void allocator<TYPE>::construct(ELEMENT_TYPE *address,
2145 ARG1& argument1,
2146 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2147 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02)
2148{
2149 BloombergLP::bslma::ConstructionUtil::construct(
2150 address,
2151 *this,
2152 argument1,
2153 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2154 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02));
2155}
2156#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 2
2157
2158#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 3
2159template <class TYPE>
2160template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
2161 class ARGS_02,
2162 class ARGS_03>
2163inline
2164void allocator<TYPE>::construct(ELEMENT_TYPE *address,
2165 ARG1& argument1,
2166 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2167 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2168 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03)
2169{
2170 BloombergLP::bslma::ConstructionUtil::construct(
2171 address,
2172 *this,
2173 argument1,
2174 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2175 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
2176 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03));
2177}
2178#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 3
2179
2180#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 4
2181template <class TYPE>
2182template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
2183 class ARGS_02,
2184 class ARGS_03,
2185 class ARGS_04>
2186inline
2187void allocator<TYPE>::construct(ELEMENT_TYPE *address,
2188 ARG1& argument1,
2189 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2190 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2191 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2192 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04)
2193{
2194 BloombergLP::bslma::ConstructionUtil::construct(
2195 address,
2196 *this,
2197 argument1,
2198 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2199 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
2200 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
2201 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04));
2202}
2203#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 4
2204
2205#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 5
2206template <class TYPE>
2207template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
2208 class ARGS_02,
2209 class ARGS_03,
2210 class ARGS_04,
2211 class ARGS_05>
2212inline
2213void allocator<TYPE>::construct(ELEMENT_TYPE *address,
2214 ARG1& argument1,
2215 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2216 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2217 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2218 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2219 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05)
2220{
2221 BloombergLP::bslma::ConstructionUtil::construct(
2222 address,
2223 *this,
2224 argument1,
2225 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2226 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
2227 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
2228 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
2229 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05));
2230}
2231#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 5
2232
2233#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 6
2234template <class TYPE>
2235template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
2236 class ARGS_02,
2237 class ARGS_03,
2238 class ARGS_04,
2239 class ARGS_05,
2240 class ARGS_06>
2241inline
2242void allocator<TYPE>::construct(ELEMENT_TYPE *address,
2243 ARG1& argument1,
2244 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2245 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2246 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2247 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2248 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2249 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06)
2250{
2251 BloombergLP::bslma::ConstructionUtil::construct(
2252 address,
2253 *this,
2254 argument1,
2255 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2256 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
2257 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
2258 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
2259 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
2260 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06));
2261}
2262#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 6
2263
2264#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 7
2265template <class TYPE>
2266template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
2267 class ARGS_02,
2268 class ARGS_03,
2269 class ARGS_04,
2270 class ARGS_05,
2271 class ARGS_06,
2272 class ARGS_07>
2273inline
2274void allocator<TYPE>::construct(ELEMENT_TYPE *address,
2275 ARG1& argument1,
2276 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2277 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2278 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2279 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2280 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2281 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2282 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07)
2283{
2284 BloombergLP::bslma::ConstructionUtil::construct(
2285 address,
2286 *this,
2287 argument1,
2288 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2289 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
2290 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
2291 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
2292 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
2293 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
2294 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07));
2295}
2296#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 7
2297
2298#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 8
2299template <class TYPE>
2300template <class ELEMENT_TYPE, 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 class ARGS_08>
2308inline
2309void allocator<TYPE>::construct(ELEMENT_TYPE *address,
2310 ARG1& argument1,
2311 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2312 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2313 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2314 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2315 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2316 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2317 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2318 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08)
2319{
2320 BloombergLP::bslma::ConstructionUtil::construct(
2321 address,
2322 *this,
2323 argument1,
2324 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2325 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
2326 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
2327 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
2328 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
2329 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
2330 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
2331 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08));
2332}
2333#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 8
2334
2335#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 9
2336template <class TYPE>
2337template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
2338 class ARGS_02,
2339 class ARGS_03,
2340 class ARGS_04,
2341 class ARGS_05,
2342 class ARGS_06,
2343 class ARGS_07,
2344 class ARGS_08,
2345 class ARGS_09>
2346inline
2347void allocator<TYPE>::construct(ELEMENT_TYPE *address,
2348 ARG1& argument1,
2349 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2350 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2351 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2352 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2353 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2354 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2355 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2356 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2357 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09)
2358{
2359 BloombergLP::bslma::ConstructionUtil::construct(
2360 address,
2361 *this,
2362 argument1,
2363 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2364 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
2365 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
2366 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
2367 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
2368 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
2369 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
2370 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
2371 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09));
2372}
2373#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 9
2374
2375#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 10
2376template <class TYPE>
2377template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
2378 class ARGS_02,
2379 class ARGS_03,
2380 class ARGS_04,
2381 class ARGS_05,
2382 class ARGS_06,
2383 class ARGS_07,
2384 class ARGS_08,
2385 class ARGS_09,
2386 class ARGS_10>
2387inline
2388void allocator<TYPE>::construct(ELEMENT_TYPE *address,
2389 ARG1& argument1,
2390 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2391 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2392 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2393 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2394 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2395 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2396 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2397 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2398 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
2399 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10)
2400{
2401 BloombergLP::bslma::ConstructionUtil::construct(
2402 address,
2403 *this,
2404 argument1,
2405 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2406 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
2407 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
2408 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
2409 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
2410 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
2411 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
2412 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
2413 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
2414 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10));
2415}
2416#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 10
2417
2418#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 11
2419template <class TYPE>
2420template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
2421 class ARGS_02,
2422 class ARGS_03,
2423 class ARGS_04,
2424 class ARGS_05,
2425 class ARGS_06,
2426 class ARGS_07,
2427 class ARGS_08,
2428 class ARGS_09,
2429 class ARGS_10,
2430 class ARGS_11>
2431inline
2432void allocator<TYPE>::construct(ELEMENT_TYPE *address,
2433 ARG1& argument1,
2434 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2435 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2436 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2437 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2438 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2439 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2440 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2441 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2442 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
2443 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
2444 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11)
2445{
2446 BloombergLP::bslma::ConstructionUtil::construct(
2447 address,
2448 *this,
2449 argument1,
2450 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2451 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
2452 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
2453 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
2454 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
2455 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
2456 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
2457 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
2458 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
2459 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
2460 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11));
2461}
2462#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 11
2463
2464#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 12
2465template <class TYPE>
2466template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
2467 class ARGS_02,
2468 class ARGS_03,
2469 class ARGS_04,
2470 class ARGS_05,
2471 class ARGS_06,
2472 class ARGS_07,
2473 class ARGS_08,
2474 class ARGS_09,
2475 class ARGS_10,
2476 class ARGS_11,
2477 class ARGS_12>
2478inline
2479void allocator<TYPE>::construct(ELEMENT_TYPE *address,
2480 ARG1& argument1,
2481 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2482 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2483 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2484 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2485 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2486 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2487 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2488 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2489 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
2490 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
2491 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
2492 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12)
2493{
2494 BloombergLP::bslma::ConstructionUtil::construct(
2495 address,
2496 *this,
2497 argument1,
2498 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2499 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
2500 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
2501 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
2502 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
2503 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
2504 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
2505 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
2506 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
2507 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
2508 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
2509 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12));
2510}
2511#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 12
2512
2513#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 13
2514template <class TYPE>
2515template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
2516 class ARGS_02,
2517 class ARGS_03,
2518 class ARGS_04,
2519 class ARGS_05,
2520 class ARGS_06,
2521 class ARGS_07,
2522 class ARGS_08,
2523 class ARGS_09,
2524 class ARGS_10,
2525 class ARGS_11,
2526 class ARGS_12,
2527 class ARGS_13>
2528inline
2529void allocator<TYPE>::construct(ELEMENT_TYPE *address,
2530 ARG1& argument1,
2531 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2532 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2533 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2534 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2535 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2536 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2537 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2538 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2539 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
2540 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
2541 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
2542 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
2543 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13)
2544{
2545 BloombergLP::bslma::ConstructionUtil::construct(
2546 address,
2547 *this,
2548 argument1,
2549 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2550 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
2551 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
2552 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
2553 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
2554 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
2555 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
2556 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
2557 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
2558 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
2559 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
2560 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
2561 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13));
2562}
2563#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 13
2564
2565#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 14
2566template <class TYPE>
2567template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
2568 class ARGS_02,
2569 class ARGS_03,
2570 class ARGS_04,
2571 class ARGS_05,
2572 class ARGS_06,
2573 class ARGS_07,
2574 class ARGS_08,
2575 class ARGS_09,
2576 class ARGS_10,
2577 class ARGS_11,
2578 class ARGS_12,
2579 class ARGS_13,
2580 class ARGS_14>
2581inline
2582void allocator<TYPE>::construct(ELEMENT_TYPE *address,
2583 ARG1& argument1,
2584 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2585 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2586 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2587 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2588 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2589 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2590 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2591 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2592 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
2593 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
2594 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
2595 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
2596 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13,
2597 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_14) arguments_14)
2598{
2599 BloombergLP::bslma::ConstructionUtil::construct(
2600 address,
2601 *this,
2602 argument1,
2603 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2604 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
2605 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
2606 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
2607 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
2608 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
2609 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
2610 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
2611 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
2612 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
2613 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
2614 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
2615 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13),
2616 BSLS_COMPILERFEATURES_FORWARD(ARGS_14, arguments_14));
2617}
2618#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 14
2619
2620
2621#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 0
2622template <class TYPE>
2623template <class ELEMENT_TYPE, class ARG1>
2624inline
2625void allocator<TYPE>::construct(
2626 ELEMENT_TYPE *address,
2627 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1)
2628{
2629 BloombergLP::bslma::ConstructionUtil::construct(
2630 address,
2631 *this,
2632 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1));
2633}
2634#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 0
2635
2636#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 1
2637template <class TYPE>
2638template <class ELEMENT_TYPE, class ARG1, class ARGS_01>
2639inline
2640void allocator<TYPE>::construct(
2641 ELEMENT_TYPE *address,
2642 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2643 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01)
2644{
2645 BloombergLP::bslma::ConstructionUtil::construct(
2646 address,
2647 *this,
2648 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
2649 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01));
2650}
2651#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 1
2652
2653#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 2
2654template <class TYPE>
2655template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
2656 class ARGS_02>
2657inline
2658void allocator<TYPE>::construct(
2659 ELEMENT_TYPE *address,
2660 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2661 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2662 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02)
2663{
2664 BloombergLP::bslma::ConstructionUtil::construct(
2665 address,
2666 *this,
2667 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
2668 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2669 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02));
2670}
2671#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 2
2672
2673#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 3
2674template <class TYPE>
2675template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
2676 class ARGS_02,
2677 class ARGS_03>
2678inline
2679void allocator<TYPE>::construct(
2680 ELEMENT_TYPE *address,
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{
2686 BloombergLP::bslma::ConstructionUtil::construct(
2687 address,
2688 *this,
2689 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
2690 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2691 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
2692 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03));
2693}
2694#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 3
2695
2696#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 4
2697template <class TYPE>
2698template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
2699 class ARGS_02,
2700 class ARGS_03,
2701 class ARGS_04>
2702inline
2703void allocator<TYPE>::construct(
2704 ELEMENT_TYPE *address,
2705 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2706 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2707 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2708 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2709 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04)
2710{
2711 BloombergLP::bslma::ConstructionUtil::construct(
2712 address,
2713 *this,
2714 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
2715 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2716 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
2717 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
2718 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04));
2719}
2720#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 4
2721
2722#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 5
2723template <class TYPE>
2724template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
2725 class ARGS_02,
2726 class ARGS_03,
2727 class ARGS_04,
2728 class ARGS_05>
2729inline
2730void allocator<TYPE>::construct(
2731 ELEMENT_TYPE *address,
2732 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2733 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2734 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2735 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2736 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2737 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05)
2738{
2739 BloombergLP::bslma::ConstructionUtil::construct(
2740 address,
2741 *this,
2742 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
2743 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2744 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
2745 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
2746 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
2747 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05));
2748}
2749#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 5
2750
2751#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 6
2752template <class TYPE>
2753template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
2754 class ARGS_02,
2755 class ARGS_03,
2756 class ARGS_04,
2757 class ARGS_05,
2758 class ARGS_06>
2759inline
2760void allocator<TYPE>::construct(
2761 ELEMENT_TYPE *address,
2762 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2763 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2764 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2765 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2766 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2767 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2768 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06)
2769{
2770 BloombergLP::bslma::ConstructionUtil::construct(
2771 address,
2772 *this,
2773 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
2774 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2775 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
2776 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
2777 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
2778 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
2779 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06));
2780}
2781#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 6
2782
2783#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 7
2784template <class TYPE>
2785template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
2786 class ARGS_02,
2787 class ARGS_03,
2788 class ARGS_04,
2789 class ARGS_05,
2790 class ARGS_06,
2791 class ARGS_07>
2792inline
2793void allocator<TYPE>::construct(
2794 ELEMENT_TYPE *address,
2795 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2796 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2797 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2798 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2799 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2800 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2801 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2802 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07)
2803{
2804 BloombergLP::bslma::ConstructionUtil::construct(
2805 address,
2806 *this,
2807 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
2808 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2809 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
2810 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
2811 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
2812 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
2813 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
2814 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07));
2815}
2816#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 7
2817
2818#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 8
2819template <class TYPE>
2820template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
2821 class ARGS_02,
2822 class ARGS_03,
2823 class ARGS_04,
2824 class ARGS_05,
2825 class ARGS_06,
2826 class ARGS_07,
2827 class ARGS_08>
2828inline
2829void allocator<TYPE>::construct(
2830 ELEMENT_TYPE *address,
2831 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2832 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2833 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2834 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2835 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2836 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2837 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2838 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2839 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08)
2840{
2841 BloombergLP::bslma::ConstructionUtil::construct(
2842 address,
2843 *this,
2844 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
2845 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2846 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
2847 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
2848 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
2849 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
2850 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
2851 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
2852 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08));
2853}
2854#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 8
2855
2856#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 9
2857template <class TYPE>
2858template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
2859 class ARGS_02,
2860 class ARGS_03,
2861 class ARGS_04,
2862 class ARGS_05,
2863 class ARGS_06,
2864 class ARGS_07,
2865 class ARGS_08,
2866 class ARGS_09>
2867inline
2868void allocator<TYPE>::construct(
2869 ELEMENT_TYPE *address,
2870 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2871 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2872 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2873 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2874 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2875 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2876 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2877 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2878 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2879 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09)
2880{
2881 BloombergLP::bslma::ConstructionUtil::construct(
2882 address,
2883 *this,
2884 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
2885 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2886 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
2887 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
2888 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
2889 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
2890 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
2891 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
2892 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
2893 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09));
2894}
2895#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 9
2896
2897#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 10
2898template <class TYPE>
2899template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
2900 class ARGS_02,
2901 class ARGS_03,
2902 class ARGS_04,
2903 class ARGS_05,
2904 class ARGS_06,
2905 class ARGS_07,
2906 class ARGS_08,
2907 class ARGS_09,
2908 class ARGS_10>
2909inline
2910void allocator<TYPE>::construct(
2911 ELEMENT_TYPE *address,
2912 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2913 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2914 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2915 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2916 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2917 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2918 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2919 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2920 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2921 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
2922 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10)
2923{
2924 BloombergLP::bslma::ConstructionUtil::construct(
2925 address,
2926 *this,
2927 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
2928 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2929 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
2930 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
2931 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
2932 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
2933 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
2934 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
2935 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
2936 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
2937 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10));
2938}
2939#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 10
2940
2941#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 11
2942template <class TYPE>
2943template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
2944 class ARGS_02,
2945 class ARGS_03,
2946 class ARGS_04,
2947 class ARGS_05,
2948 class ARGS_06,
2949 class ARGS_07,
2950 class ARGS_08,
2951 class ARGS_09,
2952 class ARGS_10,
2953 class ARGS_11>
2954inline
2955void allocator<TYPE>::construct(
2956 ELEMENT_TYPE *address,
2957 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
2958 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
2959 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
2960 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
2961 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
2962 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
2963 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
2964 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
2965 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
2966 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
2967 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
2968 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11)
2969{
2970 BloombergLP::bslma::ConstructionUtil::construct(
2971 address,
2972 *this,
2973 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
2974 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
2975 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
2976 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
2977 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
2978 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
2979 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
2980 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
2981 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
2982 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
2983 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
2984 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11));
2985}
2986#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 11
2987
2988#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 12
2989template <class TYPE>
2990template <class ELEMENT_TYPE, 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 class ARGS_12>
3002inline
3003void allocator<TYPE>::construct(
3004 ELEMENT_TYPE *address,
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 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12)
3018{
3019 BloombergLP::bslma::ConstructionUtil::construct(
3020 address,
3021 *this,
3022 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
3023 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
3024 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
3025 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
3026 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
3027 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
3028 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
3029 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
3030 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
3031 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
3032 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
3033 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
3034 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12));
3035}
3036#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 12
3037
3038#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 13
3039template <class TYPE>
3040template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
3041 class ARGS_02,
3042 class ARGS_03,
3043 class ARGS_04,
3044 class ARGS_05,
3045 class ARGS_06,
3046 class ARGS_07,
3047 class ARGS_08,
3048 class ARGS_09,
3049 class ARGS_10,
3050 class ARGS_11,
3051 class ARGS_12,
3052 class ARGS_13>
3053inline
3054void allocator<TYPE>::construct(
3055 ELEMENT_TYPE *address,
3056 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
3057 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3058 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3059 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3060 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3061 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3062 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3063 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
3064 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
3065 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
3066 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
3067 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
3068 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
3069 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13)
3070{
3071 BloombergLP::bslma::ConstructionUtil::construct(
3072 address,
3073 *this,
3074 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
3075 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
3076 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
3077 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
3078 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
3079 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
3080 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
3081 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
3082 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
3083 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
3084 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
3085 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
3086 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
3087 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13));
3088}
3089#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 13
3090
3091#if BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 14
3092template <class TYPE>
3093template <class ELEMENT_TYPE, class ARG1, class ARGS_01,
3094 class ARGS_02,
3095 class ARGS_03,
3096 class ARGS_04,
3097 class ARGS_05,
3098 class ARGS_06,
3099 class ARGS_07,
3100 class ARGS_08,
3101 class ARGS_09,
3102 class ARGS_10,
3103 class ARGS_11,
3104 class ARGS_12,
3105 class ARGS_13,
3106 class ARGS_14>
3107inline
3108void allocator<TYPE>::construct(
3109 ELEMENT_TYPE *address,
3110 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
3111 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_01) arguments_01,
3112 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_02) arguments_02,
3113 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_03) arguments_03,
3114 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_04) arguments_04,
3115 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_05) arguments_05,
3116 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_06) arguments_06,
3117 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_07) arguments_07,
3118 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_08) arguments_08,
3119 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_09) arguments_09,
3120 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_10) arguments_10,
3121 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_11) arguments_11,
3122 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_12) arguments_12,
3123 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_13) arguments_13,
3124 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS_14) arguments_14)
3125{
3126 BloombergLP::bslma::ConstructionUtil::construct(
3127 address,
3128 *this,
3129 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
3130 BSLS_COMPILERFEATURES_FORWARD(ARGS_01, arguments_01),
3131 BSLS_COMPILERFEATURES_FORWARD(ARGS_02, arguments_02),
3132 BSLS_COMPILERFEATURES_FORWARD(ARGS_03, arguments_03),
3133 BSLS_COMPILERFEATURES_FORWARD(ARGS_04, arguments_04),
3134 BSLS_COMPILERFEATURES_FORWARD(ARGS_05, arguments_05),
3135 BSLS_COMPILERFEATURES_FORWARD(ARGS_06, arguments_06),
3136 BSLS_COMPILERFEATURES_FORWARD(ARGS_07, arguments_07),
3137 BSLS_COMPILERFEATURES_FORWARD(ARGS_08, arguments_08),
3138 BSLS_COMPILERFEATURES_FORWARD(ARGS_09, arguments_09),
3139 BSLS_COMPILERFEATURES_FORWARD(ARGS_10, arguments_10),
3140 BSLS_COMPILERFEATURES_FORWARD(ARGS_11, arguments_11),
3141 BSLS_COMPILERFEATURES_FORWARD(ARGS_12, arguments_12),
3142 BSLS_COMPILERFEATURES_FORWARD(ARGS_13, arguments_13),
3143 BSLS_COMPILERFEATURES_FORWARD(ARGS_14, arguments_14));
3144}
3145#endif // BSLMA_BSLALLOCATOR_VARIADIC_LIMIT_C >= 14
3146
3147#else
3148// The generated code below is a workaround for the absence of perfect
3149// forwarding in some compilers.
3150template <class TYPE>
3151template <class ELEMENT_TYPE, class ARG1, class... ARGS>
3152inline
3153void allocator<TYPE>::construct(ELEMENT_TYPE *address,
3154 ARG1& argument1,
3155 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments)
3156{
3157 BloombergLP::bslma::ConstructionUtil::construct(
3158 address,
3159 *this,
3160 argument1,
3161 BSLS_COMPILERFEATURES_FORWARD(ARGS, arguments)...);
3162}
3163
3164template <class TYPE>
3165template <class ELEMENT_TYPE, class ARG1, class... ARGS>
3166inline
3167void allocator<TYPE>::construct(
3168 ELEMENT_TYPE *address,
3169 BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1,
3170 BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... arguments)
3171{
3172 BloombergLP::bslma::ConstructionUtil::construct(
3173 address,
3174 *this,
3175 BSLS_COMPILERFEATURES_FORWARD(ARG1, argument1),
3176 BSLS_COMPILERFEATURES_FORWARD(ARGS, arguments)...);
3177}
3178// }}} END GENERATED CODE
3179#endif
3180
3181template <class TYPE>
3182template <class ELEMENT_TYPE>
3183inline
3184void allocator<TYPE>::destroy(ELEMENT_TYPE *address)
3185{
3186 BloombergLP::bslma::DestructionUtil::destroy(address);
3187}
3188
3189
3190// ACCESSORS
3191template <class TYPE>
3192inline
3193typename allocator<TYPE>::pointer
3194allocator<TYPE>::address(reference x) const
3195{
3196 return BloombergLP::bsls::Util::addressOf(x);
3197}
3198
3199template <class TYPE>
3200inline
3201typename allocator<TYPE>::const_pointer
3202allocator<TYPE>::address(const_reference x) const
3203{
3204 return BloombergLP::bsls::Util::addressOf(x);
3205}
3206
3207template <class TYPE>
3209typename allocator<TYPE>::size_type allocator<TYPE>::max_size() const
3210{
3211 // Return the largest value, `v`, such that `v * sizeof(T)` fits in a
3212 // `size_type`. Note that `~size_type(0)` is the maximum value for
3213 // `size_type`, the largest possible sequence of bytes to store `TYPE`
3214 // objects in.
3215
3216 return ~size_type(0) / sizeof(TYPE);
3217}
3218
3219template <class TYPE>
3220inline
3221BloombergLP::bslma::Allocator *allocator<TYPE>::mechanism() const
3222{
3223 return static_cast<BloombergLP::bslma::Allocator *>(this->resource());
3224}
3225
3226template <class TYPE>
3227inline
3228allocator<TYPE> allocator<TYPE>::select_on_container_copy_construction() const
3229{
3230 return allocator();
3231}
3232
3233 // ---------------------
3234 // class allocator<void>
3235 // ---------------------
3236
3237// CREATORS
3238inline
3239allocator<void>::allocator()
3240{
3241}
3242
3243inline
3244allocator<void>::allocator(BloombergLP::bslma::Allocator *mechanism)
3245: Base(mechanism)
3246{
3247}
3248
3249#ifndef BSLS_COMPILERFEATURES_SUPPORT_DEFAULTED_FUNCTIONS
3250// In C++11 and later, this copy constructor is defaulted.
3251inline
3252allocator<void>::allocator(const allocator& original) BSLS_KEYWORD_NOEXCEPT
3253: Base(original)
3254{
3255}
3256#endif
3257
3258template <class ANY_TYPE>
3259inline
3260allocator<void>::allocator(const allocator<ANY_TYPE>& original)
3262: Base(original)
3263{
3264}
3265
3266inline
3267allocator<void> allocator<void>::select_on_container_copy_construction() const
3268{
3269 return allocator<void>();
3270}
3271
3272} // close namespace bsl
3273
3274#if BSLS_PLATFORM_CMP_MSVC
3275// As of MSVC 19.30.30709 (2022), the following workaround is still needed.
3276// When a fix is released, the above `#if` condition should be updated to apply
3277// only to versions before the fixed one.
3278
3279// These equality and inequality operators should be unnecessary because they
3280// automatically fall back on @ref polymoprhic_allocator . However an odd bug in
3281// MSVC causes it, in the presence of `<bslma_convertibleallocator.h>` to
3282// include the `bslma::ConvertibleAllocator` "hidden friend" equality operators
3283// in the the lookup set even if neither argument is `ConvertibleAllocator`,
3284// thus making `operator==` ambiguous when comparing `bsl::allocator` to
3285// `bslma::Allocator *`. Strangely `using namespace bslma` suppresses this
3286// bug, but it is not practical to require clients to do that. The operators
3287// below quash this ambiguity. Although harmless for other platforms, they are
3288// compiled only for affected versions of MSVC and are considered an
3289// implementation detail (not part of the interface for `bsl::allocator`).
3290
3291template <class TYPE>
3292inline
3293bool operator==(const bsl::allocator<TYPE>& a,
3294 BloombergLP::bslma::Allocator *b)
3295{
3296 return a.resource() == b || a.resource()->is_equal(*b);
3297}
3298
3299template <class TYPE>
3300inline
3301bool operator==(BloombergLP::bslma::Allocator *a,
3302 const bsl::allocator<TYPE>& b)
3303{
3304 return a == b.resource() || a->is_equal(*b.resource());
3305}
3306
3307template <class TYPE>
3308inline
3309bool operator!=(const bsl::allocator<TYPE>& a,
3310 BloombergLP::bslma::Allocator *b)
3311{
3312 return ! (a.resource() == b || a.resource()->is_equal(*b));
3313}
3314
3315template <class TYPE>
3316inline
3317bool operator!=(BloombergLP::bslma::Allocator *a,
3318 const bsl::allocator<TYPE>& b)
3319{
3320 return ! (a == b.resource() || a->is_equal(*b.resource()));
3321}
3322#endif
3323
3324// ============================================================================
3325// TYPE TRAITS
3326// ============================================================================
3327
3328
3329namespace bslma {
3330
3331/// An allocator is not *itself* an allocator-aware type, even though it is
3332/// convertible from `bsl::Allocator *`.
3333template <class TYPE>
3334struct UsesBslmaAllocator< ::bsl::allocator<TYPE> > : bsl::false_type {
3335};
3336
3337/// A `bsl::allocator` inherits its `allocate` method from a base class,
3338/// which causes `IsStdAllocator` to fail the auto-detected it.
3339template <class TYPE>
3340struct IsStdAllocator<bsl::allocator<TYPE> > : bsl::true_type {
3341};
3342
3343/// `bsl::allocator<void>` is not an allocator type, even though all other
3344/// instantiations are allocator types.
3345template <>
3346struct IsStdAllocator<bsl::allocator<void> > : bsl::false_type {
3347};
3348
3349} // close namespace bslma
3350
3351
3352#else // if ! defined(DEFINED_BSLMA_BSLALLOCATOR_H)
3353# error Not valid except when included from bslma_bslallocator.h
3354#endif // ! defined(COMPILING_BSLMA_BSLALLOCATOR_H)
3355
3356#endif // ! defined(INCLUDED_BSLMA_BSLALLOCATOR_CPP03)
3357
3358// ----------------------------------------------------------------------------
3359// Copyright 2013 Bloomberg Finance L.P.
3360//
3361// Licensed under the Apache License, Version 2.0 (the "License");
3362// you may not use this file except in compliance with the License.
3363// You may obtain a copy of the License at
3364//
3365// http://www.apache.org/licenses/LICENSE-2.0
3366//
3367// Unless required by applicable law or agreed to in writing, software
3368// distributed under the License is distributed on an "AS IS" BASIS,
3369// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3370// See the License for the specific language governing permissions and
3371// limitations under the License.
3372// ----------------------------- END-OF-FILE ----------------------------------
3373
3374/** @} */
3375/** @} */
3376/** @} */
#define BSLMF_NESTED_TRAIT_DECLARATION(t_TYPE, t_TRAIT)
Definition bslmf_nestedtraitdeclaration.h:231
Definition bslma_bslallocator.h:588
value_type & reference
Definition bslma_bslallocator.h:605
BloombergLP::bslma::Allocator * mechanism() const
Definition bslma_bslallocator.h:1146
void destroy(ELEMENT_TYPE *address)
Definition bslma_bslallocator.h:1109
BaseTraits::const_pointer const_pointer
Definition bslma_bslallocator.h:610
TYPE value_type
Definition bslma_bslallocator.h:604
value_type const & const_reference
Definition bslma_bslallocator.h:606
BaseTraits::pointer pointer
Definition bslma_bslallocator.h:609
BSLMA_BSLALLOCATOR_DEPRECATE_ASSIGN allocator & operator=(const allocator &rhs)
Definition bslma_bslallocator.h:1037
void deallocate(TYPE *p, std::size_t n=1)
Definition bslma_bslallocator.h:1062
void construct(ELEMENT_TYPE *address)
Definition bslma_bslallocator.h:1070
BSLS_ANNOTATION_NODISCARD pointer allocate(size_type n, const void *hint=0)
Definition bslma_bslallocator.h:1055
BaseTraits::void_pointer void_pointer
Definition bslma_bslallocator.h:611
pointer address(reference x) const
Definition bslma_bslallocator.h:1119
allocator select_on_container_copy_construction() const
Return a default-constructed allocator.
Definition bslma_bslallocator.h:1153
BaseTraits::const_void_pointer const_void_pointer
Definition bslma_bslallocator.h:612
~allocator()=default
BaseTraits::difference_type difference_type
Definition bslma_bslallocator.h:608
BSLS_KEYWORD_CONSTEXPR size_type max_size() const
Definition bslma_bslallocator.h:1134
allocator()
Definition bslma_bslallocator.h:1002
BaseTraits::size_type size_type
Definition bslma_bslallocator.h:607
bool is_equal(const memory_resource &other) const BSLS_KEYWORD_NOEXCEPT
Definition bslma_memoryresource.h:563
memory_resource * resource() const
Return the address of the memory resource supplied on construction.
Definition bslma_polymorphicallocator.h:1074
#define BSLMA_BSLALLOCATOR_DEPRECATE_ASSIGN
Definition bslma_bslallocator.h:554
#define BSLS_ANNOTATION_NODISCARD
Definition bsls_annotation.h:368
#define BSLS_COMPILERFEATURES_FORWARD_REF(T)
Definition bsls_compilerfeatures.h:2343
#define BSLS_COMPILERFEATURES_FORWARD(T, V)
Definition bsls_compilerfeatures.h:2349
#define BSLS_KEYWORD_CONSTEXPR
Definition bsls_keyword.h:624
#define BSLS_KEYWORD_NOEXCEPT
Definition bsls_keyword.h:674
#define BSLS_REVIEW_OPT(X)
Definition bsls_review.h:1060
bool operator!=(const FileCleanerConfiguration &lhs, const FileCleanerConfiguration &rhs)
bool operator==(const FileCleanerConfiguration &lhs, const FileCleanerConfiguration &rhs)
Definition bdlat_valuetypefunctions.h:939
integral_constant< bool, false > false_type
Definition bslmf_integralconstant.h:290
ALLOCATOR const STRING_VIEW_LIKE_TYPE & rhs
Definition bslstl_string.h:3918
Definition baljsn_encoder_testtypes.h:76
allocator< ANY_TYPE > other
Definition bslma_bslallocator.h:625
rebind_alloc(const ARG &allocatorArg)
Definition bslma_allocatortraits.h:1224
static pointer allocate(ALLOCATOR_TYPE &basicAllocator, size_type n)
Return basicAllocator.allocate(n).
Definition bslma_allocatortraits.h:1494
BloombergLP::bslma::AllocatorTraits_ConstPointerType< ALLOCATOR_TYPE >::type const_pointer
Definition bslma_allocatortraits.h:1183
BloombergLP::bslma::AllocatorTraits_VoidPointerType< ALLOCATOR_TYPE >::type void_pointer
Definition bslma_allocatortraits.h:1186
BloombergLP::bslma::AllocatorTraits_PropOnCopyAssign< ALLOCATOR_TYPE >::type propagate_on_container_copy_assignment
Definition bslma_allocatortraits.h:1332
BloombergLP::bslma::AllocatorTraits_PropOnMoveAssign< ALLOCATOR_TYPE >::type propagate_on_container_move_assignment
Definition bslma_allocatortraits.h:1341
static ALLOCATOR_TYPE select_on_container_copy_construction(const ALLOCATOR_TYPE &rhs)
Definition bslma_allocatortraits.h:1587
BloombergLP::bslma::AllocatorTraits_SizeType< ALLOCATOR_TYPE >::type size_type
Definition bslma_allocatortraits.h:1196
static void construct(ALLOCATOR_TYPE &basicAllocator, ELEMENT_TYPE *elementAddr, Args &&... arguments)
Definition bslma_allocatortraits.h:1527
static size_type max_size(const ALLOCATOR_TYPE &basicAllocator) BSLS_KEYWORD_NOEXCEPT
Definition bslma_allocatortraits.h:1570
BloombergLP::bslma::AllocatorTraits_PointerType< ALLOCATOR_TYPE >::type pointer
Definition bslma_allocatortraits.h:1180
static void destroy(ALLOCATOR_TYPE &basicAllocator, ELEMENT_TYPE *elementAddr)
Definition bslma_allocatortraits.h:1549
BloombergLP::bslma::AllocatorTraits_IsAlwaysEqual< ALLOCATOR_TYPE >::type is_always_equal
Definition bslma_allocatortraits.h:1323
static void deallocate(ALLOCATOR_TYPE &basicAllocator, pointer elementAddr, size_type n)
Definition bslma_allocatortraits.h:1513
BloombergLP::bslma::AllocatorTraits_PropOnSwap< ALLOCATOR_TYPE >::type propagate_on_container_swap
Definition bslma_allocatortraits.h:1350
ALLOCATOR_TYPE allocator_type
Definition bslma_allocatortraits.h:1175
BloombergLP::bslma::AllocatorTraits_ConstVoidPointerType< ALLOCATOR_TYPE >::type const_void_pointer
Definition bslma_allocatortraits.h:1189
BloombergLP::bslma::AllocatorTraits_DifferenceType< ALLOCATOR_TYPE >::type difference_type
Definition bslma_allocatortraits.h:1193
ALLOCATOR_TYPE::value_type value_type
Definition bslma_allocatortraits.h:1176
Definition bslmf_integralconstant.h:261