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;
705 template <
class BDE_OTHER_TYPE>
728 template <
class ANY_TYPE>
731#ifdef BSLS_COMPILERFEATURES_SUPPORT_DEFAULTED_FUNCTIONS
742#ifdef BSLS_COMPILERFEATURES_SUPPORT_DEFAULTED_FUNCTIONS
752#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
755#ifndef BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT
756#define BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT 14
758#ifndef BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B
759#define BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT
762#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 0
763 template <
class ELEMENT_TYPE>
767#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 1
768 template <
class ELEMENT_TYPE,
class Args_01>
773#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 2
774 template <
class ELEMENT_TYPE,
class Args_01,
781#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 3
782 template <
class ELEMENT_TYPE,
class Args_01,
791#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 4
792 template <
class ELEMENT_TYPE,
class Args_01,
803#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 5
804 template <
class ELEMENT_TYPE,
class Args_01,
817#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 6
818 template <
class ELEMENT_TYPE,
class Args_01,
833#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 7
834 template <
class ELEMENT_TYPE,
class Args_01,
851#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 8
852 template <
class ELEMENT_TYPE,
class Args_01,
871#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 9
872 template <
class ELEMENT_TYPE,
class Args_01,
893#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 10
894 template <
class ELEMENT_TYPE,
class Args_01,
917#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 11
918 template <
class ELEMENT_TYPE,
class Args_01,
943#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 12
944 template <
class ELEMENT_TYPE,
class Args_01,
971#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 13
972 template <
class ELEMENT_TYPE,
class Args_01,
1001#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_B >= 14
1002 template <
class ELEMENT_TYPE,
class Args_01,
1037 template <
class ELEMENT_TYPE,
class... Args>
1057 StdAllocatorAdaptor<ALLOCATOR>
1066template <
class TYPE1,
class TYPE2>
1067bool operator==(
const StdAllocatorAdaptor<TYPE1>& lhs,
1068 const StdAllocatorAdaptor<TYPE2>& rhs);
1073template <
class TYPE1,
class TYPE2>
1074bool operator!=(
const StdAllocatorAdaptor<TYPE1>& lhs,
1075 const StdAllocatorAdaptor<TYPE2>& rhs);
1086#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
1089#ifndef BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT
1090#define BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT 14
1092#ifndef BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C
1093#define BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT
1095#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 0
1096template <
class ALLOCATOR>
1097template <
class ELEMENT_TYPE>
1099void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1101 ELEMENT_TYPE *address)
1103 AllocatorTraits::construct(
1110#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 1
1111template <
class ALLOCATOR>
1112template <
class ELEMENT_TYPE,
class Args_01>
1114void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1116 ELEMENT_TYPE *address,
1119 AllocatorTraits::construct(
1127#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 2
1128template <
class ALLOCATOR>
1129template <
class ELEMENT_TYPE,
class Args_01,
1132void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1134 ELEMENT_TYPE *address,
1138 AllocatorTraits::construct(
1147#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 3
1148template <
class ALLOCATOR>
1149template <
class ELEMENT_TYPE,
class Args_01,
1153void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1155 ELEMENT_TYPE *address,
1160 AllocatorTraits::construct(
1170#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 4
1171template <
class ALLOCATOR>
1172template <
class ELEMENT_TYPE,
class Args_01,
1177void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1179 ELEMENT_TYPE *address,
1185 AllocatorTraits::construct(
1196#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 5
1197template <
class ALLOCATOR>
1198template <
class ELEMENT_TYPE,
class Args_01,
1204void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1206 ELEMENT_TYPE *address,
1213 AllocatorTraits::construct(
1225#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 6
1226template <
class ALLOCATOR>
1227template <
class ELEMENT_TYPE,
class Args_01,
1234void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1236 ELEMENT_TYPE *address,
1244 AllocatorTraits::construct(
1257#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 7
1258template <
class ALLOCATOR>
1259template <
class ELEMENT_TYPE,
class Args_01,
1267void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1269 ELEMENT_TYPE *address,
1278 AllocatorTraits::construct(
1292#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 8
1293template <
class ALLOCATOR>
1294template <
class ELEMENT_TYPE,
class Args_01,
1303void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1305 ELEMENT_TYPE *address,
1315 AllocatorTraits::construct(
1330#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 9
1331template <
class ALLOCATOR>
1332template <
class ELEMENT_TYPE,
class Args_01,
1342void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1344 ELEMENT_TYPE *address,
1355 AllocatorTraits::construct(
1371#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 10
1372template <
class ALLOCATOR>
1373template <
class ELEMENT_TYPE,
class Args_01,
1384void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1386 ELEMENT_TYPE *address,
1398 AllocatorTraits::construct(
1415#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 11
1416template <
class ALLOCATOR>
1417template <
class ELEMENT_TYPE,
class Args_01,
1429void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1431 ELEMENT_TYPE *address,
1444 AllocatorTraits::construct(
1462#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 12
1463template <
class ALLOCATOR>
1464template <
class ELEMENT_TYPE,
class Args_01,
1477void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1479 ELEMENT_TYPE *address,
1493 AllocatorTraits::construct(
1512#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 13
1513template <
class ALLOCATOR>
1514template <
class ELEMENT_TYPE,
class Args_01,
1528void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1530 ELEMENT_TYPE *address,
1545 AllocatorTraits::construct(
1565#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 14
1566template <
class ALLOCATOR>
1567template <
class ELEMENT_TYPE,
class Args_01,
1582void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1584 ELEMENT_TYPE *address,
1600 AllocatorTraits::construct(
1622#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 0
1623template <
class ALLOCATOR>
1624template <
class ELEMENT_TYPE>
1626void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1628 ELEMENT_TYPE *address)
1630 AllocatorTraits::construct(
1635#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 1
1636template <
class ALLOCATOR>
1637template <
class ELEMENT_TYPE,
class Args_01>
1639void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1641 ELEMENT_TYPE *address,
1644 AllocatorTraits::construct(
1649#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 2
1650template <
class ALLOCATOR>
1651template <
class ELEMENT_TYPE,
class Args_01,
1654void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1656 ELEMENT_TYPE *address,
1660 AllocatorTraits::construct(
1666#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 3
1667template <
class ALLOCATOR>
1668template <
class ELEMENT_TYPE,
class Args_01,
1672void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1674 ELEMENT_TYPE *address,
1679 AllocatorTraits::construct(
1686#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 4
1687template <
class ALLOCATOR>
1688template <
class ELEMENT_TYPE,
class Args_01,
1693void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1695 ELEMENT_TYPE *address,
1701 AllocatorTraits::construct(
1709#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 5
1710template <
class ALLOCATOR>
1711template <
class ELEMENT_TYPE,
class Args_01,
1717void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1719 ELEMENT_TYPE *address,
1726 AllocatorTraits::construct(
1735#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 6
1736template <
class ALLOCATOR>
1737template <
class ELEMENT_TYPE,
class Args_01,
1744void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1746 ELEMENT_TYPE *address,
1754 AllocatorTraits::construct(
1764#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 7
1765template <
class ALLOCATOR>
1766template <
class ELEMENT_TYPE,
class Args_01,
1774void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1776 ELEMENT_TYPE *address,
1785 AllocatorTraits::construct(
1796#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 8
1797template <
class ALLOCATOR>
1798template <
class ELEMENT_TYPE,
class Args_01,
1807void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1809 ELEMENT_TYPE *address,
1819 AllocatorTraits::construct(
1831#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 9
1832template <
class ALLOCATOR>
1833template <
class ELEMENT_TYPE,
class Args_01,
1843void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1845 ELEMENT_TYPE *address,
1856 AllocatorTraits::construct(
1869#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 10
1870template <
class ALLOCATOR>
1871template <
class ELEMENT_TYPE,
class Args_01,
1882void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1884 ELEMENT_TYPE *address,
1896 AllocatorTraits::construct(
1910#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 11
1911template <
class ALLOCATOR>
1912template <
class ELEMENT_TYPE,
class Args_01,
1924void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1926 ELEMENT_TYPE *address,
1939 AllocatorTraits::construct(
1954#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 12
1955template <
class ALLOCATOR>
1956template <
class ELEMENT_TYPE,
class Args_01,
1969void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
1971 ELEMENT_TYPE *address,
1985 AllocatorTraits::construct(
2001#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 13
2002template <
class ALLOCATOR>
2003template <
class ELEMENT_TYPE,
class Args_01,
2017void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
2019 ELEMENT_TYPE *address,
2034 AllocatorTraits::construct(
2051#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_C >= 14
2052template <
class ALLOCATOR>
2053template <
class ELEMENT_TYPE,
class Args_01,
2068void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
2070 ELEMENT_TYPE *address,
2086 AllocatorTraits::construct(
2107template <
class ALLOCATOR>
2108template <
class ELEMENT_TYPE,
class... Args>
2110void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
2112 ELEMENT_TYPE *address,
2115 AllocatorTraits::construct(
2122template <
class ALLOCATOR>
2123template <
class ELEMENT_TYPE,
class... Args>
2125void StdAllocatorAdaptor<ALLOCATOR>::privateConstruct(
2127 ELEMENT_TYPE *address,
2130 AllocatorTraits::construct(
2138template <
class ALLOCATOR>
2145template <
class ALLOCATOR>
2147StdAllocatorAdaptor<ALLOCATOR>::StdAllocatorAdaptor(
const ALLOCATOR& allocator)
2148: ALLOCATOR(allocator)
2152template <
class ALLOCATOR>
2154StdAllocatorAdaptor<ALLOCATOR>::StdAllocatorAdaptor(
bsl::nullptr_t)
2159template <
class ALLOCATOR>
2160template <
class ANY_TYPE>
2162StdAllocatorAdaptor<ALLOCATOR>::StdAllocatorAdaptor(
2163 const StdAllocatorAdaptor<ANY_TYPE>& other)
2169#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
2172#ifndef BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT
2173#define BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT 14
2175#ifndef BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D
2176#define BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT
2178#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 0
2179template <
class ALLOCATOR>
2180template <
class ELEMENT_TYPE>
2182StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address)
2184 enum { k_PassSelfAtEnd =
2196#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 1
2197template <
class ALLOCATOR>
2198template <
class ELEMENT_TYPE,
class Args_01>
2200StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2203 enum { k_PassSelfAtEnd =
2216#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 2
2217template <
class ALLOCATOR>
2218template <
class ELEMENT_TYPE,
class Args_01,
2221StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2225 enum { k_PassSelfAtEnd =
2239#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 3
2240template <
class ALLOCATOR>
2241template <
class ELEMENT_TYPE,
class Args_01,
2245StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2250 enum { k_PassSelfAtEnd =
2265#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 4
2266template <
class ALLOCATOR>
2267template <
class ELEMENT_TYPE,
class Args_01,
2272StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2278 enum { k_PassSelfAtEnd =
2294#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 5
2295template <
class ALLOCATOR>
2296template <
class ELEMENT_TYPE,
class Args_01,
2302StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2309 enum { k_PassSelfAtEnd =
2326#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 6
2327template <
class ALLOCATOR>
2328template <
class ELEMENT_TYPE,
class Args_01,
2335StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2343 enum { k_PassSelfAtEnd =
2361#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 7
2362template <
class ALLOCATOR>
2363template <
class ELEMENT_TYPE,
class Args_01,
2371StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2380 enum { k_PassSelfAtEnd =
2399#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 8
2400template <
class ALLOCATOR>
2401template <
class ELEMENT_TYPE,
class Args_01,
2410StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2420 enum { k_PassSelfAtEnd =
2440#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 9
2441template <
class ALLOCATOR>
2442template <
class ELEMENT_TYPE,
class Args_01,
2452StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2463 enum { k_PassSelfAtEnd =
2484#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 10
2485template <
class ALLOCATOR>
2486template <
class ELEMENT_TYPE,
class Args_01,
2497StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2509 enum { k_PassSelfAtEnd =
2531#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 11
2532template <
class ALLOCATOR>
2533template <
class ELEMENT_TYPE,
class Args_01,
2545StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2558 enum { k_PassSelfAtEnd =
2581#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 12
2582template <
class ALLOCATOR>
2583template <
class ELEMENT_TYPE,
class Args_01,
2596StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2610 enum { k_PassSelfAtEnd =
2634#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 13
2635template <
class ALLOCATOR>
2636template <
class ELEMENT_TYPE,
class Args_01,
2650StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2665 enum { k_PassSelfAtEnd =
2690#if BSLTF_STDALLOCATORADAPTOR_VARIADIC_LIMIT_D >= 14
2691template <
class ALLOCATOR>
2692template <
class ELEMENT_TYPE,
class Args_01,
2707StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2723 enum { k_PassSelfAtEnd =
2752template <
class ALLOCATOR>
2753template <
class ELEMENT_TYPE,
class... Args>
2755StdAllocatorAdaptor<ALLOCATOR>::construct(ELEMENT_TYPE *address,
2758 enum { k_PassSelfAtEnd =
2773template <
class ALLOCATOR>
2775const ALLOCATOR& StdAllocatorAdaptor<ALLOCATOR>::allocator()
const
2780template <
class ALLOCATOR>
2782StdAllocatorAdaptor<ALLOCATOR>
2783StdAllocatorAdaptor<ALLOCATOR>::select_on_container_copy_construction()
const
2785 return StdAllocatorAdaptor<ALLOCATOR>(
2786 AllocatorTraits::select_on_container_copy_construction(
2787 *
reinterpret_cast<const ALLOCATOR *
>(
this)));
2791template <
class TYPE1,
class TYPE2>
2796 return lhs.allocator() ==
rhs.allocator();
2799template <
class TYPE1,
class TYPE2>
2804 return lhs.allocator() !=
rhs.allocator();
2811# 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:588
Definition bsltf_stdallocatoradaptor.h:172
ALLOCATOR::size_type size_type
Definition bsltf_stdallocatoradaptor.h:204
const ALLOCATOR & allocator() const
Definition bsltf_stdallocatoradaptor.h:415
StdAllocatorAdaptor< ALLOCATOR > select_on_container_copy_construction() const
Definition bsltf_stdallocatoradaptor.h:423
void construct(ELEMENT_TYPE *address, Args &&... arguments)
Definition bsltf_stdallocatoradaptor.h:389
ALLOCATOR::difference_type difference_type
Definition bsltf_stdallocatoradaptor.h:205
ALLOCATOR::reference reference
Definition bsltf_stdallocatoradaptor.h:208
StdAllocatorAdaptor & operator=(const StdAllocatorAdaptor &rhs)=default
ALLOCATOR::pointer pointer
Definition bsltf_stdallocatoradaptor.h:206
ALLOCATOR::const_reference const_reference
Definition bsltf_stdallocatoradaptor.h:209
StdAllocatorAdaptor()
Definition bsltf_stdallocatoradaptor.h:356
ALLOCATOR::value_type value_type
Definition bsltf_stdallocatoradaptor.h:210
ALLOCATOR::const_pointer const_pointer
Definition bsltf_stdallocatoradaptor.h:207
~StdAllocatorAdaptor()=default
#define BSLS_COMPILERFEATURES_FORWARD_REF(T)
Definition bsls_compilerfeatures.h:2343
#define BSLS_COMPILERFEATURES_FORWARD(T, V)
Definition bsls_compilerfeatures.h:2349
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:283
ALLOCATOR const STRING_VIEW_LIKE_TYPE & rhs
Definition bslstl_string.h:3918
ALLOCATOR & lhs
Definition bslstl_string.h:3917
Definition bsltf_allocargumenttype.h:92
Definition bslma_allocatortraits.h:1089
Definition bslmf_isconvertible.h:875
Definition bslmf_usesallocator.h:165
Definition bslma_isstdallocator.h:202
StdAllocatorAdaptor< typename ALLOCATOR::template rebind< BDE_OTHER_TYPE >::other > other
Definition bsltf_stdallocatoradaptor.h:224