11#ifndef INCLUDED_BSLTF_STDALLOCATORADAPTOR_CPP03
12#define INCLUDED_BSLTF_STDALLOCATORADAPTOR_CPP03
63#ifdef COMPILING_BSLTF_STDALLOCATORADAPTOR_H
78template <
class ALLOCATOR>
79class StdAllocatorAdaptor :
public ALLOCATOR {
85#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
88#ifndef BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT
89#define BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT 14
91#ifndef BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A
92#define BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT
95#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 0
96 template <
class ELEMENT_TYPE>
98 ELEMENT_TYPE *elemAddr);
101#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 1
102 template <
class ELEMENT_TYPE,
class Args_01>
104 ELEMENT_TYPE *elemAddr,
108#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 2
109 template <
class ELEMENT_TYPE,
class Args_01,
112 ELEMENT_TYPE *elemAddr,
117#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 3
118 template <
class ELEMENT_TYPE,
class Args_01,
122 ELEMENT_TYPE *elemAddr,
128#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 4
129 template <
class ELEMENT_TYPE,
class Args_01,
134 ELEMENT_TYPE *elemAddr,
141#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 5
142 template <
class ELEMENT_TYPE,
class Args_01,
148 ELEMENT_TYPE *elemAddr,
156#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 6
157 template <
class ELEMENT_TYPE,
class Args_01,
164 ELEMENT_TYPE *elemAddr,
173#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 7
174 template <
class ELEMENT_TYPE,
class Args_01,
182 ELEMENT_TYPE *elemAddr,
192#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 8
193 template <
class ELEMENT_TYPE,
class Args_01,
202 ELEMENT_TYPE *elemAddr,
213#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 9
214 template <
class ELEMENT_TYPE,
class Args_01,
224 ELEMENT_TYPE *elemAddr,
236#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 10
237 template <
class ELEMENT_TYPE,
class Args_01,
248 ELEMENT_TYPE *elemAddr,
261#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 11
262 template <
class ELEMENT_TYPE,
class Args_01,
274 ELEMENT_TYPE *elemAddr,
288#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 12
289 template <
class ELEMENT_TYPE,
class Args_01,
302 ELEMENT_TYPE *elemAddr,
317#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 13
318 template <
class ELEMENT_TYPE,
class Args_01,
332 ELEMENT_TYPE *elemAddr,
348#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 14
349 template <
class ELEMENT_TYPE,
class Args_01,
364 ELEMENT_TYPE *elemAddr,
382#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 0
383 template <
class ELEMENT_TYPE>
385 ELEMENT_TYPE *elemAddr);
388#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 1
389 template <
class ELEMENT_TYPE,
class Args_01>
391 ELEMENT_TYPE *elemAddr,
395#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 2
396 template <
class ELEMENT_TYPE,
class Args_01,
399 ELEMENT_TYPE *elemAddr,
404#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 3
405 template <
class ELEMENT_TYPE,
class Args_01,
409 ELEMENT_TYPE *elemAddr,
415#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 4
416 template <
class ELEMENT_TYPE,
class Args_01,
421 ELEMENT_TYPE *elemAddr,
428#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 5
429 template <
class ELEMENT_TYPE,
class Args_01,
435 ELEMENT_TYPE *elemAddr,
443#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 6
444 template <
class ELEMENT_TYPE,
class Args_01,
451 ELEMENT_TYPE *elemAddr,
460#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 7
461 template <
class ELEMENT_TYPE,
class Args_01,
469 ELEMENT_TYPE *elemAddr,
479#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 8
480 template <
class ELEMENT_TYPE,
class Args_01,
489 ELEMENT_TYPE *elemAddr,
500#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 9
501 template <
class ELEMENT_TYPE,
class Args_01,
511 ELEMENT_TYPE *elemAddr,
523#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 10
524 template <
class ELEMENT_TYPE,
class Args_01,
535 ELEMENT_TYPE *elemAddr,
548#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 11
549 template <
class ELEMENT_TYPE,
class Args_01,
561 ELEMENT_TYPE *elemAddr,
575#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 12
576 template <
class ELEMENT_TYPE,
class Args_01,
589 ELEMENT_TYPE *elemAddr,
604#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 13
605 template <
class ELEMENT_TYPE,
class Args_01,
619 ELEMENT_TYPE *elemAddr,
635#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_A >= 14
636 template <
class ELEMENT_TYPE,
class Args_01,
651 ELEMENT_TYPE *elemAddr,
672 template <
class ELEMENT_TYPE,
class... Args>
674 ELEMENT_TYPE *elemAddr,
677 template <
class ELEMENT_TYPE,
class... Args>
679 ELEMENT_TYPE *elemAddr,
690 typedef typename ALLOCATOR::size_type
size_type;
692 typedef typename ALLOCATOR::pointer
pointer;
694 typedef typename ALLOCATOR::reference
reference;
696 typedef typename ALLOCATOR::value_type
value_type;
704 template <
class BDE_OTHER_TYPE>
727 template <
class ANY_TYPE>
730#ifdef BSLS_COMPILERFEATURES_SUPPORT_DEFAULTED_FUNCTIONS
741#ifdef BSLS_COMPILERFEATURES_SUPPORT_DEFAULTED_FUNCTIONS
751#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
754#ifndef BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT
755#define BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT 14
757#ifndef BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B
758#define BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT
761#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 0
762 template <
class ELEMENT_TYPE>
766#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 1
767 template <
class ELEMENT_TYPE,
class Args_01>
772#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 2
773 template <
class ELEMENT_TYPE,
class Args_01,
780#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 3
781 template <
class ELEMENT_TYPE,
class Args_01,
790#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 4
791 template <
class ELEMENT_TYPE,
class Args_01,
802#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 5
803 template <
class ELEMENT_TYPE,
class Args_01,
816#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 6
817 template <
class ELEMENT_TYPE,
class Args_01,
832#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 7
833 template <
class ELEMENT_TYPE,
class Args_01,
850#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 8
851 template <
class ELEMENT_TYPE,
class Args_01,
870#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 9
871 template <
class ELEMENT_TYPE,
class Args_01,
892#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 10
893 template <
class ELEMENT_TYPE,
class Args_01,
916#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 11
917 template <
class ELEMENT_TYPE,
class Args_01,
942#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 12
943 template <
class ELEMENT_TYPE,
class Args_01,
970#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 13
971 template <
class ELEMENT_TYPE,
class Args_01,
1000#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 14
1001 template <
class ELEMENT_TYPE,
class Args_01,
1036 template <
class ELEMENT_TYPE,
class... Args>
1056 StdAllocatorAdaptor<ALLOCATOR>
1065template <
class TYPE1,
class TYPE2>
1066bool operator==(
const StdAllocatorAdaptor<TYPE1>& lhs,
1067 const StdAllocatorAdaptor<TYPE2>& rhs);
1072template <
class TYPE1,
class TYPE2>
1073bool operator!=(
const StdAllocatorAdaptor<TYPE1>& lhs,
1074 const StdAllocatorAdaptor<TYPE2>& rhs);
1085#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
1088#ifndef BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT
1089#define BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT 14
1091#ifndef BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C
1092#define BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT
1094#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 0
1095template <
class ALLOCATOR>
1096template <
class ELEMENT_TYPE>
1098void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1100 ELEMENT_TYPE *address)
1102 AllocatorTraits::construct(
1109#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 1
1110template <
class ALLOCATOR>
1111template <
class ELEMENT_TYPE,
class Args_01>
1113void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1115 ELEMENT_TYPE *address,
1118 AllocatorTraits::construct(
1126#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 2
1127template <
class ALLOCATOR>
1128template <
class ELEMENT_TYPE,
class Args_01,
1131void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1133 ELEMENT_TYPE *address,
1137 AllocatorTraits::construct(
1146#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 3
1147template <
class ALLOCATOR>
1148template <
class ELEMENT_TYPE,
class Args_01,
1152void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1154 ELEMENT_TYPE *address,
1159 AllocatorTraits::construct(
1169#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 4
1170template <
class ALLOCATOR>
1171template <
class ELEMENT_TYPE,
class Args_01,
1176void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1178 ELEMENT_TYPE *address,
1184 AllocatorTraits::construct(
1195#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 5
1196template <
class ALLOCATOR>
1197template <
class ELEMENT_TYPE,
class Args_01,
1203void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1205 ELEMENT_TYPE *address,
1212 AllocatorTraits::construct(
1224#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 6
1225template <
class ALLOCATOR>
1226template <
class ELEMENT_TYPE,
class Args_01,
1233void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1235 ELEMENT_TYPE *address,
1243 AllocatorTraits::construct(
1256#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 7
1257template <
class ALLOCATOR>
1258template <
class ELEMENT_TYPE,
class Args_01,
1266void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1268 ELEMENT_TYPE *address,
1277 AllocatorTraits::construct(
1291#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 8
1292template <
class ALLOCATOR>
1293template <
class ELEMENT_TYPE,
class Args_01,
1302void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1304 ELEMENT_TYPE *address,
1314 AllocatorTraits::construct(
1329#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 9
1330template <
class ALLOCATOR>
1331template <
class ELEMENT_TYPE,
class Args_01,
1341void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1343 ELEMENT_TYPE *address,
1354 AllocatorTraits::construct(
1370#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 10
1371template <
class ALLOCATOR>
1372template <
class ELEMENT_TYPE,
class Args_01,
1383void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1385 ELEMENT_TYPE *address,
1397 AllocatorTraits::construct(
1414#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 11
1415template <
class ALLOCATOR>
1416template <
class ELEMENT_TYPE,
class Args_01,
1428void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1430 ELEMENT_TYPE *address,
1443 AllocatorTraits::construct(
1461#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 12
1462template <
class ALLOCATOR>
1463template <
class ELEMENT_TYPE,
class Args_01,
1476void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1478 ELEMENT_TYPE *address,
1492 AllocatorTraits::construct(
1511#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 13
1512template <
class ALLOCATOR>
1513template <
class ELEMENT_TYPE,
class Args_01,
1527void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1529 ELEMENT_TYPE *address,
1544 AllocatorTraits::construct(
1564#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 14
1565template <
class ALLOCATOR>
1566template <
class ELEMENT_TYPE,
class Args_01,
1581void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1583 ELEMENT_TYPE *address,
1599 AllocatorTraits::construct(
1621#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 0
1622template <
class ALLOCATOR>
1623template <
class ELEMENT_TYPE>
1625void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1627 ELEMENT_TYPE *address)
1629 AllocatorTraits::construct(
1634#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 1
1635template <
class ALLOCATOR>
1636template <
class ELEMENT_TYPE,
class Args_01>
1638void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1640 ELEMENT_TYPE *address,
1643 AllocatorTraits::construct(
1648#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 2
1649template <
class ALLOCATOR>
1650template <
class ELEMENT_TYPE,
class Args_01,
1653void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1655 ELEMENT_TYPE *address,
1659 AllocatorTraits::construct(
1665#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 3
1666template <
class ALLOCATOR>
1667template <
class ELEMENT_TYPE,
class Args_01,
1671void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1673 ELEMENT_TYPE *address,
1678 AllocatorTraits::construct(
1685#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 4
1686template <
class ALLOCATOR>
1687template <
class ELEMENT_TYPE,
class Args_01,
1692void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1694 ELEMENT_TYPE *address,
1700 AllocatorTraits::construct(
1708#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 5
1709template <
class ALLOCATOR>
1710template <
class ELEMENT_TYPE,
class Args_01,
1716void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1718 ELEMENT_TYPE *address,
1725 AllocatorTraits::construct(
1734#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 6
1735template <
class ALLOCATOR>
1736template <
class ELEMENT_TYPE,
class Args_01,
1743void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1745 ELEMENT_TYPE *address,
1753 AllocatorTraits::construct(
1763#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 7
1764template <
class ALLOCATOR>
1765template <
class ELEMENT_TYPE,
class Args_01,
1773void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1775 ELEMENT_TYPE *address,
1784 AllocatorTraits::construct(
1795#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 8
1796template <
class ALLOCATOR>
1797template <
class ELEMENT_TYPE,
class Args_01,
1806void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1808 ELEMENT_TYPE *address,
1818 AllocatorTraits::construct(
1830#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 9
1831template <
class ALLOCATOR>
1832template <
class ELEMENT_TYPE,
class Args_01,
1842void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1844 ELEMENT_TYPE *address,
1855 AllocatorTraits::construct(
1868#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 10
1869template <
class ALLOCATOR>
1870template <
class ELEMENT_TYPE,
class Args_01,
1881void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1883 ELEMENT_TYPE *address,
1895 AllocatorTraits::construct(
1909#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 11
1910template <
class ALLOCATOR>
1911template <
class ELEMENT_TYPE,
class Args_01,
1923void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1925 ELEMENT_TYPE *address,
1938 AllocatorTraits::construct(
1953#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 12
1954template <
class ALLOCATOR>
1955template <
class ELEMENT_TYPE,
class Args_01,
1968void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1970 ELEMENT_TYPE *address,
1984 AllocatorTraits::construct(
2000#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 13
2001template <
class ALLOCATOR>
2002template <
class ELEMENT_TYPE,
class Args_01,
2016void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
2018 ELEMENT_TYPE *address,
2033 AllocatorTraits::construct(
2050#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 14
2051template <
class ALLOCATOR>
2052template <
class ELEMENT_TYPE,
class Args_01,
2067void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
2069 ELEMENT_TYPE *address,
2085 AllocatorTraits::construct(
2106template <
class ALLOCATOR>
2107template <
class ELEMENT_TYPE,
class... Args>
2109void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
2111 ELEMENT_TYPE *address,
2114 AllocatorTraits::construct(
2121template <
class ALLOCATOR>
2122template <
class ELEMENT_TYPE,
class... Args>
2124void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
2126 ELEMENT_TYPE *address,
2129 AllocatorTraits::construct(
2137template <
class ALLOCATOR>
2144template <
class ALLOCATOR>
2146StdAllocatorAdaptor<ALLOCATOR>::StdAllocatorAdaptor(
const ALLOCATOR& allocator)
2147: ALLOCATOR(allocator)
2151template <
class ALLOCATOR>
2153StdAllocatorAdaptor<ALLOCATOR>::StdAllocatorAdaptor(
bsl::nullptr_t)
2158template <
class ALLOCATOR>
2159template <
class ANY_TYPE>
2161StdAllocatorAdaptor<ALLOCATOR>::StdAllocatorAdaptor(
2162 const StdAllocatorAdaptor<ANY_TYPE>& other)
2168#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
2171#ifndef BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT
2172#define BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT 14
2174#ifndef BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D
2175#define BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT
2177#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 0
2178template <
class ALLOCATOR>
2179template <
class ELEMENT_TYPE>
2181StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address)
2183 enum { k_PassSelfAtEnd =
2195#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 1
2196template <
class ALLOCATOR>
2197template <
class ELEMENT_TYPE,
class Args_01>
2199StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2202 enum { k_PassSelfAtEnd =
2215#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 2
2216template <
class ALLOCATOR>
2217template <
class ELEMENT_TYPE,
class Args_01,
2220StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2224 enum { k_PassSelfAtEnd =
2238#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 3
2239template <
class ALLOCATOR>
2240template <
class ELEMENT_TYPE,
class Args_01,
2244StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2249 enum { k_PassSelfAtEnd =
2264#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 4
2265template <
class ALLOCATOR>
2266template <
class ELEMENT_TYPE,
class Args_01,
2271StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2277 enum { k_PassSelfAtEnd =
2293#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 5
2294template <
class ALLOCATOR>
2295template <
class ELEMENT_TYPE,
class Args_01,
2301StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2308 enum { k_PassSelfAtEnd =
2325#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 6
2326template <
class ALLOCATOR>
2327template <
class ELEMENT_TYPE,
class Args_01,
2334StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2342 enum { k_PassSelfAtEnd =
2360#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 7
2361template <
class ALLOCATOR>
2362template <
class ELEMENT_TYPE,
class Args_01,
2370StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2379 enum { k_PassSelfAtEnd =
2398#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 8
2399template <
class ALLOCATOR>
2400template <
class ELEMENT_TYPE,
class Args_01,
2409StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2419 enum { k_PassSelfAtEnd =
2439#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 9
2440template <
class ALLOCATOR>
2441template <
class ELEMENT_TYPE,
class Args_01,
2451StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2462 enum { k_PassSelfAtEnd =
2483#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 10
2484template <
class ALLOCATOR>
2485template <
class ELEMENT_TYPE,
class Args_01,
2496StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2508 enum { k_PassSelfAtEnd =
2530#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 11
2531template <
class ALLOCATOR>
2532template <
class ELEMENT_TYPE,
class Args_01,
2544StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2557 enum { k_PassSelfAtEnd =
2580#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 12
2581template <
class ALLOCATOR>
2582template <
class ELEMENT_TYPE,
class Args_01,
2595StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2609 enum { k_PassSelfAtEnd =
2633#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 13
2634template <
class ALLOCATOR>
2635template <
class ELEMENT_TYPE,
class Args_01,
2649StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2664 enum { k_PassSelfAtEnd =
2689#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 14
2690template <
class ALLOCATOR>
2691template <
class ELEMENT_TYPE,
class Args_01,
2706StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2722 enum { k_PassSelfAtEnd =
2751template <
class ALLOCATOR>
2752template <
class ELEMENT_TYPE,
class... Args>
2754StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2757 enum { k_PassSelfAtEnd =
2772template <
class ALLOCATOR>
2774const ALLOCATOR& StdAllocatorAdaptor<ALLOCATOR>::allocator()
const
2779template <
class ALLOCATOR>
2781StdAllocatorAdaptor<ALLOCATOR>
2782StdAllocatorAdaptor<ALLOCATOR>::select_on_container_copy_construction()
const
2784 return StdAllocatorAdaptor<ALLOCATOR>(
2785 AllocatorTraits::select_on_container_copy_construction(
2786 *
reinterpret_cast<const ALLOCATOR *
>(
this)));
2790template <
class TYPE1,
class TYPE2>
2798template <
class TYPE1,
class TYPE2>
2810# error Not valid except when included from bsltf_stdallocatoradaptor.h
#define BSLMF_NESTED_TRAIT_DECLARATION(t_TYPE, t_TRAIT)
Definition bslmf_nestedtraitdeclaration.h:231
Definition bslma_bslallocator.h:580
Definition bsltf_stdallocatoradaptor.h:168
ALLOCATOR::size_type size_type
Definition bsltf_stdallocatoradaptor.h:200
const ALLOCATOR & allocator() const
Definition bsltf_stdallocatoradaptor.h:409
StdAllocatorAdaptor< ALLOCATOR > select_on_container_copy_construction() const
Definition bsltf_stdallocatoradaptor.h:417
void construct(ELEMENT_TYPE *address, Args &&... arguments)
Definition bsltf_stdallocatoradaptor.h:383
ALLOCATOR::difference_type difference_type
Definition bsltf_stdallocatoradaptor.h:201
ALLOCATOR::reference reference
Definition bsltf_stdallocatoradaptor.h:204
StdAllocatorAdaptor & operator=(const StdAllocatorAdaptor &rhs)=default
ALLOCATOR::pointer pointer
Definition bsltf_stdallocatoradaptor.h:202
ALLOCATOR::const_reference const_reference
Definition bsltf_stdallocatoradaptor.h:205
StdAllocatorAdaptor()
Definition bsltf_stdallocatoradaptor.h:350
ALLOCATOR::value_type value_type
Definition bsltf_stdallocatoradaptor.h:206
ALLOCATOR::const_pointer const_pointer
Definition bsltf_stdallocatoradaptor.h:203
~StdAllocatorAdaptor()=default
#define BSLS_COMPILERFEATURES_FORWARD_REF(T)
Definition bsls_compilerfeatures.h:2012
#define BSLS_COMPILERFEATURES_FORWARD(T, V)
Definition bsls_compilerfeatures.h:2018
bool operator!=(const FileCleanerConfiguration &lhs, const FileCleanerConfiguration &rhs)
bool operator==(const FileCleanerConfiguration &lhs, const FileCleanerConfiguration &rhs)
BloombergLP::bsls::Nullptr_Impl::Type nullptr_t
Definition bsls_nullptr.h:281
Definition bsltf_allocargumenttype.h:92
Definition bslma_allocatortraits.h:1061
Definition bslmf_isconvertible.h:867
Definition bslmf_usesallocator.h:165
Definition bslma_isstdallocator.h:201
StdAllocatorAdaptor< typename ALLOCATOR::template rebind< BDE_OTHER_TYPE >::other > other
Definition bsltf_stdallocatoradaptor.h:219