11#ifndef INCLUDED_BDLC_FLATHASHMAP_CPP03
12#define INCLUDED_BDLC_FLATHASHMAP_CPP03
63#ifdef COMPILING_BDLC_FLATHASHMAP_H
65#if defined(BSLS_COMPILERFEATURES_SUPPORT_TRAITS_HEADER)
66#include <bsl_type_traits.h>
68 #ifndef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
69 #error Rvalue references curiously absent despite native 'type_traits'.
84template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
85bool operator==(
const FlatHashMap<KEY, VALUE, HASH, EQUAL> &lhs,
86 const FlatHashMap<KEY, VALUE, HASH, EQUAL> &rhs);
88template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
89bool operator!=(
const FlatHashMap<KEY, VALUE, HASH, EQUAL> &lhs,
90 const FlatHashMap<KEY, VALUE, HASH, EQUAL> &rhs);
92template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
93void swap(FlatHashMap<KEY, VALUE, HASH, EQUAL>& a,
94 FlatHashMap<KEY, VALUE, HASH, EQUAL>& b);
102template <
class KEY,
class VALUE,
class ENTRY>
103struct FlatHashMap_EntryUtil
106#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
109#ifndef BDLC_FLATHASHMAP_VARIADIC_LIMIT
110#define BDLC_FLATHASHMAP_VARIADIC_LIMIT 10
112#ifndef BDLC_FLATHASHMAP_VARIADIC_LIMIT_A
113#define BDLC_FLATHASHMAP_VARIADIC_LIMIT_A BDLC_FLATHASHMAP_VARIADIC_LIMIT
115#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_A >= 0
121#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_A >= 1
122 template <
class ARGS_01>
129#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_A >= 2
130 template <
class ARGS_01,
139#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_A >= 3
140 template <
class ARGS_01,
151#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_A >= 4
152 template <
class ARGS_01,
165#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_A >= 5
166 template <
class ARGS_01,
181#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_A >= 6
182 template <
class ARGS_01,
199#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_A >= 7
200 template <
class ARGS_01,
219#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_A >= 8
220 template <
class ARGS_01,
241#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_A >= 9
242 template <
class ARGS_01,
265#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_A >= 10
266 template <
class ARGS_01,
294 template <
class... ARGS>
306 template <
class KEY_TYPE>
313 static const KEY&
key(
const ENTRY& entry);
330template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
337 typedef FlatHashTable<KEY,
339 FlatHashMap_EntryUtil<KEY,
350 template <
class K,
class V,
class H,
class E>
351 friend void swap(FlatHashMap<K, V, H, E>&, FlatHashMap<K, V, H, E>&);
422 template <
class INPUT_ITERATOR>
426 template <
class INPUT_ITERATOR>
431 template <
class INPUT_ITERATOR>
437 template <
class INPUT_ITERATOR>
445#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
446 FlatHashMap(bsl::initializer_list<value_type> values,
448 FlatHashMap(bsl::initializer_list<value_type> values,
451 FlatHashMap(bsl::initializer_list<value_type> values,
471 FlatHashMap(bsl::initializer_list<value_type> values,
523#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
541 template <
class KEY_TYPE>
548 VALUE&
at(
const KEY& key);
565#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
568#ifndef BDLC_FLATHASHMAP_VARIADIC_LIMIT
569#define BDLC_FLATHASHMAP_VARIADIC_LIMIT 10
571#ifndef BDLC_FLATHASHMAP_VARIADIC_LIMIT_B
572#define BDLC_FLATHASHMAP_VARIADIC_LIMIT_B BDLC_FLATHASHMAP_VARIADIC_LIMIT
574#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_B >= 0
579#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_B >= 1
580 template <
class ARGS_01>
585#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_B >= 2
586 template <
class ARGS_01,
593#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_B >= 3
594 template <
class ARGS_01,
603#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_B >= 4
604 template <
class ARGS_01,
615#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_B >= 5
616 template <
class ARGS_01,
629#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_B >= 6
630 template <
class ARGS_01,
645#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_B >= 7
646 template <
class ARGS_01,
663#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_B >= 8
664 template <
class ARGS_01,
683#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_B >= 9
684 template <
class ARGS_01,
705#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_B >= 10
706 template <
class ARGS_01,
730#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_B >= 0
734#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_B >= 1
735 template <
class ARGS_01>
740#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_B >= 2
741 template <
class ARGS_01,
748#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_B >= 3
749 template <
class ARGS_01,
758#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_B >= 4
759 template <
class ARGS_01,
770#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_B >= 5
771 template <
class ARGS_01,
784#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_B >= 6
785 template <
class ARGS_01,
800#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_B >= 7
801 template <
class ARGS_01,
818#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_B >= 8
819 template <
class ARGS_01,
838#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_B >= 9
839 template <
class ARGS_01,
860#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_B >= 10
861 template <
class ARGS_01,
887 template <
class... ARGS>
891 template <
class... ARGS>
902 bsl::size_t
erase(
const KEY& key);
929#if defined(BSLS_PLATFORM_CMP_SUN) && BSLS_PLATFORM_CMP_VERSION < 0x5130
930 template <
class VALUE_TYPE>
932#elif !defined(BSLS_COMPILERFEATURES_SUPPORT_TRAITS_HEADER)
933 template <
class VALUE_TYPE>
945 template <
class VALUE_TYPE>
947 VALUE_TYPE&&>::value,
958#if defined(BSLS_PLATFORM_CMP_SUN) && BSLS_PLATFORM_CMP_VERSION < 0x5130
959 template <
class VALUE_TYPE>
961#elif !defined(BSLS_COMPILERFEATURES_SUPPORT_TRAITS_HEADER)
962 template <
class VALUE_TYPE>
972 template <
class VALUE_TYPE>
974 VALUE_TYPE&&>::value,
994 template <
class INPUT_ITERATOR>
995 void insert(INPUT_ITERATOR first, INPUT_ITERATOR last);
997#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
1003 void insert(bsl::initializer_list<value_type> values);
1013 void rehash(bsl::size_t minimumCapacity);
1027 void reserve(bsl::size_t numEntries);
1033#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
1036#ifndef BDLC_FLATHASHMAP_VARIADIC_LIMIT
1037#define BDLC_FLATHASHMAP_VARIADIC_LIMIT 10
1039#ifndef BDLC_FLATHASHMAP_VARIADIC_LIMIT_C
1040#define BDLC_FLATHASHMAP_VARIADIC_LIMIT_C BDLC_FLATHASHMAP_VARIADIC_LIMIT
1042#ifdef BSLS_LIBRARYFEATURES_HAS_CPP11_PAIR_PIECEWISE_CONSTRUCTOR
1043#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 0
1047#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 1
1048 template<
class ARGS_01>
1053#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 2
1054 template<
class ARGS_01,
1061#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 3
1062 template<
class ARGS_01,
1071#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 4
1072 template<
class ARGS_01,
1083#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 5
1084 template<
class ARGS_01,
1097#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 6
1098 template<
class ARGS_01,
1113#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 7
1114 template<
class ARGS_01,
1131#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 8
1132 template<
class ARGS_01,
1151#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 9
1152 template<
class ARGS_01,
1173#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 10
1174 template<
class ARGS_01,
1198#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 0
1200 BloombergLP::bslmf::MovableRef<KEY> key);
1203#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 1
1204 template <
class ARGS_01>
1206 BloombergLP::bslmf::MovableRef<KEY> key,
1210#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 2
1211 template <
class ARGS_01,
1214 BloombergLP::bslmf::MovableRef<KEY> key,
1219#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 3
1220 template <
class ARGS_01,
1224 BloombergLP::bslmf::MovableRef<KEY> key,
1230#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 4
1231 template <
class ARGS_01,
1236 BloombergLP::bslmf::MovableRef<KEY> key,
1243#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 5
1244 template <
class ARGS_01,
1250 BloombergLP::bslmf::MovableRef<KEY> key,
1258#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 6
1259 template <
class ARGS_01,
1266 BloombergLP::bslmf::MovableRef<KEY> key,
1275#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 7
1276 template <
class ARGS_01,
1284 BloombergLP::bslmf::MovableRef<KEY> key,
1294#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 8
1295 template <
class ARGS_01,
1304 BloombergLP::bslmf::MovableRef<KEY> key,
1315#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 9
1316 template <
class ARGS_01,
1326 BloombergLP::bslmf::MovableRef<KEY> key,
1338#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 10
1339 template <
class ARGS_01,
1350 BloombergLP::bslmf::MovableRef<KEY> key,
1364#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 0
1369#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 1
1370 template<
class ARGS_01>
1376#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 2
1377 template<
class ARGS_01,
1385#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 3
1386 template<
class ARGS_01,
1396#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 4
1397 template<
class ARGS_01,
1409#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 5
1410 template<
class ARGS_01,
1424#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 6
1425 template<
class ARGS_01,
1441#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 7
1442 template<
class ARGS_01,
1460#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 8
1461 template<
class ARGS_01,
1481#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 9
1482 template<
class ARGS_01,
1504#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 10
1505 template<
class ARGS_01,
1530#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 0
1532 BloombergLP::bslmf::MovableRef<KEY> key);
1535#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 1
1536 template <
class ARGS_01>
1538 BloombergLP::bslmf::MovableRef<KEY> key,
1542#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 2
1543 template <
class ARGS_01,
1546 BloombergLP::bslmf::MovableRef<KEY> key,
1551#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 3
1552 template <
class ARGS_01,
1556 BloombergLP::bslmf::MovableRef<KEY> key,
1562#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 4
1563 template <
class ARGS_01,
1568 BloombergLP::bslmf::MovableRef<KEY> key,
1575#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 5
1576 template <
class ARGS_01,
1582 BloombergLP::bslmf::MovableRef<KEY> key,
1590#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 6
1591 template <
class ARGS_01,
1598 BloombergLP::bslmf::MovableRef<KEY> key,
1607#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 7
1608 template <
class ARGS_01,
1616 BloombergLP::bslmf::MovableRef<KEY> key,
1626#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 8
1627 template <
class ARGS_01,
1636 BloombergLP::bslmf::MovableRef<KEY> key,
1647#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 9
1648 template <
class ARGS_01,
1658 BloombergLP::bslmf::MovableRef<KEY> key,
1670#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_C >= 10
1671 template <
class ARGS_01,
1682 BloombergLP::bslmf::MovableRef<KEY> key,
1699#ifdef BSLS_LIBRARYFEATURES_HAS_CPP11_PAIR_PIECEWISE_CONSTRUCTOR
1700 template<
class... ARGS>
1704 template <
class... ARGS>
1706 BloombergLP::bslmf::MovableRef<KEY> key,
1709 template<
class... ARGS>
1714 template <
class... ARGS>
1716 BloombergLP::bslmf::MovableRef<KEY> key,
1747 const VALUE&
at(
const KEY& key)
const;
1755 bool contains(
const KEY& key)
const;
1760 bsl::size_t
count(
const KEY& key)
const;
1774 const KEY& key)
const;
1804 bsl::size_t
size()
const;
1841 bsl::ostream&
print(bsl::ostream& stream,
1843 int spacesPerLevel = 4)
const;
1853template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1854bool operator==(
const FlatHashMap<KEY, VALUE, HASH, EQUAL> &lhs,
1855 const FlatHashMap<KEY, VALUE, HASH, EQUAL> &rhs);
1862template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1863bool operator!=(
const FlatHashMap<KEY, VALUE, HASH, EQUAL> &lhs,
1864 const FlatHashMap<KEY, VALUE, HASH, EQUAL> &rhs);
1871template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1872bsl::ostream&
operator<<(bsl::ostream& stream,
1873 const FlatHashMap<KEY, VALUE, HASH, EQUAL>& map);
1881template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1882void swap(FlatHashMap<KEY, VALUE, HASH, EQUAL>& a,
1883 FlatHashMap<KEY, VALUE, HASH, EQUAL>& b);
1894#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
1897#ifndef BDLC_FLATHASHMAP_VARIADIC_LIMIT
1898#define BDLC_FLATHASHMAP_VARIADIC_LIMIT 10
1900#ifndef BDLC_FLATHASHMAP_VARIADIC_LIMIT_D
1901#define BDLC_FLATHASHMAP_VARIADIC_LIMIT_D BDLC_FLATHASHMAP_VARIADIC_LIMIT
1903#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_D >= 0
1904template <
class KEY,
class VALUE,
class ENTRY>
1917#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_D >= 1
1918template <
class KEY,
class VALUE,
class ENTRY>
1919template <
class ARGS_01>
1934#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_D >= 2
1935template <
class KEY,
class VALUE,
class ENTRY>
1936template <
class ARGS_01,
1954#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_D >= 3
1955template <
class KEY,
class VALUE,
class ENTRY>
1956template <
class ARGS_01,
1977#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_D >= 4
1978template <
class KEY,
class VALUE,
class ENTRY>
1979template <
class ARGS_01,
2003#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_D >= 5
2004template <
class KEY,
class VALUE,
class ENTRY>
2005template <
class ARGS_01,
2032#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_D >= 6
2033template <
class KEY,
class VALUE,
class ENTRY>
2034template <
class ARGS_01,
2064#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_D >= 7
2065template <
class KEY,
class VALUE,
class ENTRY>
2066template <
class ARGS_01,
2099#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_D >= 8
2100template <
class KEY,
class VALUE,
class ENTRY>
2101template <
class ARGS_01,
2137#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_D >= 9
2138template <
class KEY,
class VALUE,
class ENTRY>
2139template <
class ARGS_01,
2178#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_D >= 10
2179template <
class KEY,
class VALUE,
class ENTRY>
2180template <
class ARGS_01,
2225template <
class KEY,
class VALUE,
class ENTRY>
2226template <
class... ARGS>
2242template <
class KEY,
class VALUE,
class ENTRY>
2243template <
class KEY_TYPE>
2264template <
class KEY,
class VALUE,
class ENTRY>
2276template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2279: d_impl(0, HASH(), EQUAL())
2283template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2285FlatHashMap<KEY, VALUE, HASH, EQUAL>::FlatHashMap(
2287: d_impl(0, HASH(), EQUAL(), basicAllocator)
2291template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2293FlatHashMap<KEY, VALUE, HASH, EQUAL>::FlatHashMap(bsl::size_t capacity)
2294: d_impl(capacity, HASH(), EQUAL())
2298template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2300FlatHashMap<KEY, VALUE, HASH, EQUAL>::FlatHashMap(
2301 bsl::size_t capacity,
2303: d_impl(capacity, HASH(), EQUAL(), basicAllocator)
2307template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2309FlatHashMap<KEY, VALUE, HASH, EQUAL>::FlatHashMap(
2310 bsl::size_t capacity,
2313: d_impl(capacity, hash, EQUAL(), basicAllocator)
2317template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2319FlatHashMap<KEY, VALUE, HASH, EQUAL>::FlatHashMap(
2320 bsl::size_t capacity,
2324: d_impl(capacity, hash, equal, basicAllocator)
2328template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2329template <
class INPUT_ITERATOR>
2331FlatHashMap<KEY, VALUE, HASH, EQUAL>::FlatHashMap(
2332 INPUT_ITERATOR first,
2333 INPUT_ITERATOR last,
2335: d_impl(0, HASH(), EQUAL(), basicAllocator)
2337 insert(first, last);
2340template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2341template <
class INPUT_ITERATOR>
2343FlatHashMap<KEY, VALUE, HASH, EQUAL>::FlatHashMap(
2344 INPUT_ITERATOR first,
2345 INPUT_ITERATOR last,
2346 bsl::size_t capacity,
2348: d_impl(capacity, HASH(), EQUAL(), basicAllocator)
2350 insert(first, last);
2353template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2354template <
class INPUT_ITERATOR>
2356FlatHashMap<KEY, VALUE, HASH, EQUAL>::FlatHashMap(
2357 INPUT_ITERATOR first,
2358 INPUT_ITERATOR last,
2359 bsl::size_t capacity,
2362: d_impl(capacity, hash, EQUAL(), basicAllocator)
2364 insert(first, last);
2367template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2368template <
class INPUT_ITERATOR>
2370FlatHashMap<KEY, VALUE, HASH, EQUAL>::FlatHashMap(
2371 INPUT_ITERATOR first,
2372 INPUT_ITERATOR last,
2373 bsl::size_t capacity,
2377: d_impl(capacity, hash, equal, basicAllocator)
2379 insert(first, last);
2382#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
2383template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2385FlatHashMap<KEY, VALUE, HASH, EQUAL>::FlatHashMap(
2386 bsl::initializer_list<value_type> values,
2388: FlatHashMap(values.
begin(),
2397template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2399FlatHashMap<KEY, VALUE, HASH, EQUAL>::FlatHashMap(
2400 bsl::initializer_list<value_type> values,
2401 bsl::size_t capacity,
2403: FlatHashMap(values.
begin(),
2412template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2414FlatHashMap<KEY, VALUE, HASH, EQUAL>::FlatHashMap(
2415 bsl::initializer_list<value_type> values,
2416 bsl::size_t capacity,
2419: FlatHashMap(values.
begin(),
2428template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2430FlatHashMap<KEY, VALUE, HASH, EQUAL>::FlatHashMap(
2431 bsl::initializer_list<value_type> values,
2432 bsl::size_t capacity,
2436: FlatHashMap(values.
begin(),
2446template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2448FlatHashMap<KEY, VALUE, HASH, EQUAL>::FlatHashMap(
2449 const FlatHashMap& original,
2451: d_impl(original.d_impl, basicAllocator)
2455template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2457FlatHashMap<KEY, VALUE, HASH, EQUAL>::FlatHashMap(
2459: d_impl(
bslmf::MovableRefUtil::move(
2460 bslmf::MovableRefUtil::access(original).d_impl))
2464template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2466FlatHashMap<KEY, VALUE, HASH, EQUAL>::FlatHashMap(
2469: d_impl(
bslmf::MovableRefUtil::move(
2470 bslmf::MovableRefUtil::access(original).d_impl),
2475template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2477FlatHashMap<KEY, VALUE, HASH, EQUAL>::~FlatHashMap()
2482template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2484FlatHashMap<KEY, VALUE, HASH, EQUAL>&
2485FlatHashMap<KEY, VALUE, HASH, EQUAL>::operator=(
const FlatHashMap& rhs)
2487 d_impl = rhs.d_impl;
2492template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2494FlatHashMap<KEY, VALUE, HASH, EQUAL>&
2495FlatHashMap<KEY, VALUE, HASH, EQUAL>::operator=(
2498 FlatHashMap& lvalue = rhs;
2505#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
2506template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2508FlatHashMap<KEY, VALUE, HASH, EQUAL>&
2509FlatHashMap<KEY, VALUE, HASH, EQUAL>::operator=(
2510 bsl::initializer_list<value_type> values)
2512 FlatHashMap tmp(values.begin(),
2515 d_impl.hash_function(),
2517 d_impl.allocator());
2525template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2526template <
class KEY_TYPE>
2528VALUE& FlatHashMap<KEY, VALUE, HASH, EQUAL>::operator[](
2534template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2536VALUE& FlatHashMap<KEY, VALUE, HASH, EQUAL>::at(
const KEY& key)
2538 iterator node = d_impl.find(key);
2540 if (node == d_impl.end()) {
2541 BloombergLP::bslstl::StdExceptUtil::throwOutOfRange(
2542 "FlatHashMap<...>::at(key_type): invalid key value");
2545 return node->second;
2548template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2551FlatHashMap<KEY, VALUE, HASH, EQUAL>::clear()
2556template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2558 typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator>
2559FlatHashMap<KEY, VALUE, HASH, EQUAL>::equal_range(
const KEY& key)
2561 return d_impl.equal_range(key);
2564#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
2567#ifndef BDLC_FLATHASHMAP_VARIADIC_LIMIT
2568#define BDLC_FLATHASHMAP_VARIADIC_LIMIT 10
2570#ifndef BDLC_FLATHASHMAP_VARIADIC_LIMIT_E
2571#define BDLC_FLATHASHMAP_VARIADIC_LIMIT_E BDLC_FLATHASHMAP_VARIADIC_LIMIT
2573#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_E >= 0
2574template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2577FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace(
2580 return d_impl.emplace();
2584#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_E >= 1
2585template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2586template <
class ARGS_01>
2589FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace(
2596#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_E >= 2
2597template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2598template <
class ARGS_01,
2602FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace(
2611#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_E >= 3
2612template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2613template <
class ARGS_01,
2618FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace(
2629#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_E >= 4
2630template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2631template <
class ARGS_01,
2637FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace(
2650#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_E >= 5
2651template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2652template <
class ARGS_01,
2659FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace(
2674#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_E >= 6
2675template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2676template <
class ARGS_01,
2684FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace(
2701#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_E >= 7
2702template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2703template <
class ARGS_01,
2712FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace(
2731#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_E >= 8
2732template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2733template <
class ARGS_01,
2743FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace(
2764#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_E >= 9
2765template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2766template <
class ARGS_01,
2777FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace(
2800#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_E >= 10
2801template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2802template <
class ARGS_01,
2814FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace(
2840#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_E >= 0
2841template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2843typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
2844FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace_hint(const_iterator)
2846 return emplace().
first;
2850#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_E >= 1
2851template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2852template <
class ARGS_01>
2854typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
2855FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace_hint(const_iterator,
2862#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_E >= 2
2863template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2864template <
class ARGS_01,
2867typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
2868FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace_hint(const_iterator,
2877#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_E >= 3
2878template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2879template <
class ARGS_01,
2883typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
2884FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace_hint(const_iterator,
2895#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_E >= 4
2896template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2897template <
class ARGS_01,
2902typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
2903FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace_hint(const_iterator,
2916#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_E >= 5
2917template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2918template <
class ARGS_01,
2924typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
2925FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace_hint(const_iterator,
2940#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_E >= 6
2941template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2942template <
class ARGS_01,
2949typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
2950FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace_hint(const_iterator,
2967#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_E >= 7
2968template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2969template <
class ARGS_01,
2977typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
2978FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace_hint(const_iterator,
2997#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_E >= 8
2998template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
2999template <
class ARGS_01,
3008typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
3009FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace_hint(const_iterator,
3030#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_E >= 9
3031template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3032template <
class ARGS_01,
3042typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
3043FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace_hint(const_iterator,
3066#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_E >= 10
3067template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3068template <
class ARGS_01,
3079typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
3080FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace_hint(const_iterator,
3108template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3109template <
class... ARGS>
3112FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace(
3118template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3119template <
class... ARGS>
3121typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
3122FlatHashMap<KEY, VALUE, HASH, EQUAL>::emplace_hint(const_iterator,
3131template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3132bsl::size_t FlatHashMap<KEY, VALUE, HASH, EQUAL>::erase(
const KEY& key)
3134 return d_impl.erase(key);
3137template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3139typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
3140FlatHashMap<KEY, VALUE, HASH, EQUAL>::erase(const_iterator position)
3144 return d_impl.erase(position);
3147template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3149typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
3150FlatHashMap<KEY, VALUE, HASH, EQUAL>::erase(iterator position)
3157 return d_impl.erase(position);
3160template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3161typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
3162FlatHashMap<KEY, VALUE, HASH, EQUAL>::erase(const_iterator first,
3163 const_iterator last)
3165 return d_impl.erase(first, last);
3168template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3170typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
3171FlatHashMap<KEY, VALUE, HASH, EQUAL>::find(
const KEY& key)
3173 return d_impl.find(key);
3176template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3177template <
class INPUT_ITERATOR>
3178void FlatHashMap<KEY, VALUE, HASH, EQUAL>::insert(INPUT_ITERATOR first,
3179 INPUT_ITERATOR last)
3181 d_impl.insert(first, last);
3184#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
3185template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3186void FlatHashMap<KEY, VALUE, HASH, EQUAL>::insert(
3187 bsl::initializer_list<value_type> values)
3189 insert(values.begin(), values.end());
3193template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3195void FlatHashMap<KEY, VALUE, HASH, EQUAL>::rehash(bsl::size_t minimumCapacity)
3197 d_impl.rehash(minimumCapacity);
3200template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3202void FlatHashMap<KEY, VALUE, HASH, EQUAL>::reserve(bsl::size_t numEntries)
3204 d_impl.reserve(numEntries);
3207template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3209void FlatHashMap<KEY, VALUE, HASH, EQUAL>::reset()
3214#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
3217#ifndef BDLC_FLATHASHMAP_VARIADIC_LIMIT
3218#define BDLC_FLATHASHMAP_VARIADIC_LIMIT 10
3220#ifndef BDLC_FLATHASHMAP_VARIADIC_LIMIT_F
3221#define BDLC_FLATHASHMAP_VARIADIC_LIMIT_F BDLC_FLATHASHMAP_VARIADIC_LIMIT
3223#ifdef BSLS_LIBRARYFEATURES_HAS_CPP11_PAIR_PIECEWISE_CONSTRUCTOR
3224#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 0
3225template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3228FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
const KEY& key)
3230 return d_impl.try_emplace(
3232 std::piecewise_construct,
3233 std::forward_as_tuple(key),
3234 std::forward_as_tuple());
3238#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 1
3239template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3240template<
class ARGS_01>
3243FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
const KEY& key,
3246 return d_impl.try_emplace(
3248 std::piecewise_construct,
3249 std::forward_as_tuple(key),
3250 std::forward_as_tuple(
3255#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 2
3256template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3257template<
class ARGS_01,
3261FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
const KEY& key,
3265 return d_impl.try_emplace(
3267 std::piecewise_construct,
3268 std::forward_as_tuple(key),
3269 std::forward_as_tuple(
3275#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 3
3276template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3277template<
class ARGS_01,
3282FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
const KEY& key,
3287 return d_impl.try_emplace(
3289 std::piecewise_construct,
3290 std::forward_as_tuple(key),
3291 std::forward_as_tuple(
3298#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 4
3299template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3300template<
class ARGS_01,
3306FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
const KEY& key,
3312 return d_impl.try_emplace(
3314 std::piecewise_construct,
3315 std::forward_as_tuple(key),
3316 std::forward_as_tuple(
3324#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 5
3325template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3326template<
class ARGS_01,
3333FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
const KEY& key,
3340 return d_impl.try_emplace(
3342 std::piecewise_construct,
3343 std::forward_as_tuple(key),
3344 std::forward_as_tuple(
3353#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 6
3354template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3355template<
class ARGS_01,
3363FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
const KEY& key,
3371 return d_impl.try_emplace(
3373 std::piecewise_construct,
3374 std::forward_as_tuple(key),
3375 std::forward_as_tuple(
3385#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 7
3386template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3387template<
class ARGS_01,
3396FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
const KEY& key,
3405 return d_impl.try_emplace(
3407 std::piecewise_construct,
3408 std::forward_as_tuple(key),
3409 std::forward_as_tuple(
3420#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 8
3421template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3422template<
class ARGS_01,
3432FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
const KEY& key,
3442 return d_impl.try_emplace(
3444 std::piecewise_construct,
3445 std::forward_as_tuple(key),
3446 std::forward_as_tuple(
3458#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 9
3459template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3460template<
class ARGS_01,
3471FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
const KEY& key,
3482 return d_impl.try_emplace(
3484 std::piecewise_construct,
3485 std::forward_as_tuple(key),
3486 std::forward_as_tuple(
3499#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 10
3500template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3501template<
class ARGS_01,
3513FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
const KEY& key,
3525 return d_impl.try_emplace(
3527 std::piecewise_construct,
3528 std::forward_as_tuple(key),
3529 std::forward_as_tuple(
3544#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 0
3545template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3547FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
3548 BloombergLP::bslmf::MovableRef<KEY> key)
3550 return d_impl.try_emplace(
3552 std::piecewise_construct,
3554 std::forward_as_tuple());
3558#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 1
3559template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3560template <
class ARGS_01>
3562FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
3563 BloombergLP::bslmf::MovableRef<KEY> key,
3566 return d_impl.try_emplace(
3568 std::piecewise_construct,
3570 std::forward_as_tuple(
3575#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 2
3576template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3577template <
class ARGS_01,
3580FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
3581 BloombergLP::bslmf::MovableRef<KEY> key,
3585 return d_impl.try_emplace(
3587 std::piecewise_construct,
3589 std::forward_as_tuple(
3595#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 3
3596template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3597template <
class ARGS_01,
3601FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
3602 BloombergLP::bslmf::MovableRef<KEY> key,
3607 return d_impl.try_emplace(
3609 std::piecewise_construct,
3611 std::forward_as_tuple(
3618#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 4
3619template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3620template <
class ARGS_01,
3625FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
3626 BloombergLP::bslmf::MovableRef<KEY> key,
3632 return d_impl.try_emplace(
3634 std::piecewise_construct,
3636 std::forward_as_tuple(
3644#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 5
3645template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3646template <
class ARGS_01,
3652FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
3653 BloombergLP::bslmf::MovableRef<KEY> key,
3660 return d_impl.try_emplace(
3662 std::piecewise_construct,
3664 std::forward_as_tuple(
3673#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 6
3674template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3675template <
class ARGS_01,
3682FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
3683 BloombergLP::bslmf::MovableRef<KEY> key,
3691 return d_impl.try_emplace(
3693 std::piecewise_construct,
3695 std::forward_as_tuple(
3705#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 7
3706template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3707template <
class ARGS_01,
3715FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
3716 BloombergLP::bslmf::MovableRef<KEY> key,
3725 return d_impl.try_emplace(
3727 std::piecewise_construct,
3729 std::forward_as_tuple(
3740#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 8
3741template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3742template <
class ARGS_01,
3751FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
3752 BloombergLP::bslmf::MovableRef<KEY> key,
3762 return d_impl.try_emplace(
3764 std::piecewise_construct,
3766 std::forward_as_tuple(
3778#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 9
3779template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3780template <
class ARGS_01,
3790FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
3791 BloombergLP::bslmf::MovableRef<KEY> key,
3802 return d_impl.try_emplace(
3804 std::piecewise_construct,
3806 std::forward_as_tuple(
3819#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 10
3820template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3821template <
class ARGS_01,
3832FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
3833 BloombergLP::bslmf::MovableRef<KEY> key,
3845 return d_impl.try_emplace(
3847 std::piecewise_construct,
3849 std::forward_as_tuple(
3864#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 0
3865template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3866typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
3867FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
3870 return d_impl.try_emplace(
3872 std::piecewise_construct,
3873 std::forward_as_tuple(key),
3874 std::forward_as_tuple())
3879#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 1
3880template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3881template<
class ARGS_01>
3882typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
3883FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
3887 return d_impl.try_emplace(
3889 std::piecewise_construct,
3890 std::forward_as_tuple(key),
3891 std::forward_as_tuple(
3897#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 2
3898template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3899template<
class ARGS_01,
3901typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
3902FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
3907 return d_impl.try_emplace(
3909 std::piecewise_construct,
3910 std::forward_as_tuple(key),
3911 std::forward_as_tuple(
3918#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 3
3919template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3920template<
class ARGS_01,
3923typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
3924FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
3930 return d_impl.try_emplace(
3932 std::piecewise_construct,
3933 std::forward_as_tuple(key),
3934 std::forward_as_tuple(
3942#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 4
3943template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3944template<
class ARGS_01,
3948typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
3949FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
3956 return d_impl.try_emplace(
3958 std::piecewise_construct,
3959 std::forward_as_tuple(key),
3960 std::forward_as_tuple(
3969#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 5
3970template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
3971template<
class ARGS_01,
3976typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
3977FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
3985 return d_impl.try_emplace(
3987 std::piecewise_construct,
3988 std::forward_as_tuple(key),
3989 std::forward_as_tuple(
3999#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 6
4000template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4001template<
class ARGS_01,
4007typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
4008FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
4017 return d_impl.try_emplace(
4019 std::piecewise_construct,
4020 std::forward_as_tuple(key),
4021 std::forward_as_tuple(
4032#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 7
4033template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4034template<
class ARGS_01,
4041typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
4042FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
4052 return d_impl.try_emplace(
4054 std::piecewise_construct,
4055 std::forward_as_tuple(key),
4056 std::forward_as_tuple(
4068#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 8
4069template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4070template<
class ARGS_01,
4078typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
4079FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
4090 return d_impl.try_emplace(
4092 std::piecewise_construct,
4093 std::forward_as_tuple(key),
4094 std::forward_as_tuple(
4107#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 9
4108template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4109template<
class ARGS_01,
4118typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
4119FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
4131 return d_impl.try_emplace(
4133 std::piecewise_construct,
4134 std::forward_as_tuple(key),
4135 std::forward_as_tuple(
4149#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 10
4150template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4151template<
class ARGS_01,
4161typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
4162FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
4175 return d_impl.try_emplace(
4177 std::piecewise_construct,
4178 std::forward_as_tuple(key),
4179 std::forward_as_tuple(
4195#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 0
4196template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4197typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
4198FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
4199 BloombergLP::bslmf::MovableRef<KEY> key)
4201 return d_impl.try_emplace(
4203 std::piecewise_construct,
4205 std::forward_as_tuple())
4210#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 1
4211template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4212template <
class ARGS_01>
4213typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
4214FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
4215 BloombergLP::bslmf::MovableRef<KEY> key,
4218 return d_impl.try_emplace(
4220 std::piecewise_construct,
4222 std::forward_as_tuple(
4228#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 2
4229template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4230template <
class ARGS_01,
4232typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
4233FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
4234 BloombergLP::bslmf::MovableRef<KEY> key,
4238 return d_impl.try_emplace(
4240 std::piecewise_construct,
4242 std::forward_as_tuple(
4249#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 3
4250template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4251template <
class ARGS_01,
4254typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
4255FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
4256 BloombergLP::bslmf::MovableRef<KEY> key,
4261 return d_impl.try_emplace(
4263 std::piecewise_construct,
4265 std::forward_as_tuple(
4273#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 4
4274template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4275template <
class ARGS_01,
4279typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
4280FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
4281 BloombergLP::bslmf::MovableRef<KEY> key,
4287 return d_impl.try_emplace(
4289 std::piecewise_construct,
4291 std::forward_as_tuple(
4300#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 5
4301template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4302template <
class ARGS_01,
4307typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
4308FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
4309 BloombergLP::bslmf::MovableRef<KEY> key,
4316 return d_impl.try_emplace(
4318 std::piecewise_construct,
4320 std::forward_as_tuple(
4330#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 6
4331template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4332template <
class ARGS_01,
4338typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
4339FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
4340 BloombergLP::bslmf::MovableRef<KEY> key,
4348 return d_impl.try_emplace(
4350 std::piecewise_construct,
4352 std::forward_as_tuple(
4363#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 7
4364template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4365template <
class ARGS_01,
4372typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
4373FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
4374 BloombergLP::bslmf::MovableRef<KEY> key,
4383 return d_impl.try_emplace(
4385 std::piecewise_construct,
4387 std::forward_as_tuple(
4399#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 8
4400template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4401template <
class ARGS_01,
4409typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
4410FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
4411 BloombergLP::bslmf::MovableRef<KEY> key,
4421 return d_impl.try_emplace(
4423 std::piecewise_construct,
4425 std::forward_as_tuple(
4438#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 9
4439template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4440template <
class ARGS_01,
4449typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
4450FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
4451 BloombergLP::bslmf::MovableRef<KEY> key,
4462 return d_impl.try_emplace(
4464 std::piecewise_construct,
4466 std::forward_as_tuple(
4480#if BDLC_FLATHASHMAP_VARIADIC_LIMIT_F >= 10
4481template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4482template <
class ARGS_01,
4492typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
4493FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
4494 BloombergLP::bslmf::MovableRef<KEY> key,
4506 return d_impl.try_emplace(
4508 std::piecewise_construct,
4510 std::forward_as_tuple(
4529#ifdef BSLS_LIBRARYFEATURES_HAS_CPP11_PAIR_PIECEWISE_CONSTRUCTOR
4530template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4531template<
class... ARGS>
4534FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
const KEY& key,
4537 return d_impl.try_emplace(
4539 std::piecewise_construct,
4540 std::forward_as_tuple(key),
4544template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4545template <
class... ARGS>
4547FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(
4548 BloombergLP::bslmf::MovableRef<KEY> key,
4551 return d_impl.try_emplace(
4553 std::piecewise_construct,
4558template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4559template<
class... ARGS>
4560typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
4561FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
4565 return d_impl.try_emplace(
4567 std::piecewise_construct,
4568 std::forward_as_tuple(key),
4573template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4574template <
class... ARGS>
4575typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
4576FlatHashMap<KEY, VALUE, HASH, EQUAL>::try_emplace(const_iterator,
4577 BloombergLP::bslmf::MovableRef<KEY> key,
4580 return d_impl.try_emplace(
4582 std::piecewise_construct,
4593template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4595typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
4596 FlatHashMap<KEY, VALUE, HASH, EQUAL>::begin()
4598 return d_impl.begin();
4601template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4603typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::iterator
4604 FlatHashMap<KEY, VALUE, HASH, EQUAL>::end()
4606 return d_impl.end();
4611template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4613void FlatHashMap<KEY, VALUE, HASH, EQUAL>::swap(FlatHashMap& other)
4617 d_impl.swap(other.d_impl);
4621template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4623const VALUE& FlatHashMap<KEY, VALUE, HASH, EQUAL>::at(
const KEY& key)
const
4625 const_iterator node = d_impl.find(key);
4627 if (node == d_impl.end()) {
4628 BloombergLP::bslstl::StdExceptUtil::throwOutOfRange(
4629 "FlatHashMap<...>::at(key_type) const: invalid key value");
4632 return node->second;
4635template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4637bsl::size_t FlatHashMap<KEY, VALUE, HASH, EQUAL>::capacity()
const
4639 return d_impl.capacity();
4642template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4644bool FlatHashMap<KEY, VALUE, HASH, EQUAL>::contains(
const KEY& key)
const
4646 return d_impl.contains(key);
4649template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4651bsl::size_t FlatHashMap<KEY, VALUE, HASH, EQUAL>::count(
const KEY& key)
const
4653 return d_impl.count(key);
4656template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4658bool FlatHashMap<KEY, VALUE, HASH, EQUAL>::empty()
const
4660 return d_impl.empty();
4663template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4665 typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::const_iterator>
4666FlatHashMap<KEY, VALUE, HASH, EQUAL>::equal_range(
const KEY& key)
const
4668 return d_impl.equal_range(key);
4671template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4673typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::const_iterator
4674FlatHashMap<KEY, VALUE, HASH, EQUAL>::find(
const KEY& key)
const
4676 return d_impl.find(key);
4679template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4681HASH FlatHashMap<KEY, VALUE, HASH, EQUAL>::hash_function()
const
4683 return d_impl.hash_function();
4686template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4688EQUAL FlatHashMap<KEY, VALUE, HASH, EQUAL>::key_eq()
const
4690 return d_impl.key_eq();
4693template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4695float FlatHashMap<KEY, VALUE, HASH, EQUAL>::load_factor()
const
4697 return d_impl.load_factor();
4700template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4702float FlatHashMap<KEY, VALUE, HASH, EQUAL>::max_load_factor()
const
4704 return d_impl.max_load_factor();
4707template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4709bsl::size_t FlatHashMap<KEY, VALUE, HASH, EQUAL>::size()
const
4711 return d_impl.size();
4716template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4718typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::const_iterator
4719 FlatHashMap<KEY, VALUE, HASH, EQUAL>::begin()
const
4721 return d_impl.begin();
4723template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4725typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::const_iterator
4726 FlatHashMap<KEY, VALUE, HASH, EQUAL>::cbegin()
const
4728 return d_impl.cbegin();
4731template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4733typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::const_iterator
4734 FlatHashMap<KEY, VALUE, HASH, EQUAL>::cend()
const
4736 return d_impl.cend();
4739template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4741typename FlatHashMap<KEY, VALUE, HASH, EQUAL>::const_iterator
4742 FlatHashMap<KEY, VALUE, HASH, EQUAL>::end()
const
4744 return d_impl.end();
4749template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4753 return d_impl.allocator();
4756template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4757bsl::ostream& FlatHashMap<KEY, VALUE, HASH, EQUAL>::print(
4758 bsl::ostream& stream,
4760 int spacesPerLevel)
const
4770 const_iterator iter =
begin();
4771 while (iter !=
end()) {
4772 printer.printValue(*iter);
4784template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4787 const FlatHashMap<KEY, VALUE, HASH, EQUAL>& rhs)
4789 return lhs.d_impl == rhs.d_impl;
4792template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4795 const FlatHashMap<KEY, VALUE, HASH, EQUAL>& rhs)
4797 return lhs.d_impl != rhs.d_impl;
4800template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4803 bsl::ostream& stream,
4804 const FlatHashMap<KEY, VALUE, HASH, EQUAL>& map)
4806 return map.print(stream, 0, -1);
4810template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4812void bdlc::swap(FlatHashMap<KEY, VALUE, HASH, EQUAL>& a,
4813 FlatHashMap<KEY, VALUE, HASH, EQUAL>& b)
4824template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4825struct HasStlIterators<
bdlc::FlatHashMap<KEY, VALUE, HASH, EQUAL> >
4833template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
4834struct UsesBslmaAllocator<
bdlc::FlatHashMap<KEY, VALUE, HASH, EQUAL> >
4842# error Not valid except when included from bdlc_flathashmap.h
HASH hasher
Definition bdlc_flathashmap.h:464
const value_type * const_pointer
Definition bdlc_flathashmap.h:468
value_type * pointer
Definition bdlc_flathashmap.h:467
bsl::ptrdiff_t difference_type
Definition bdlc_flathashmap.h:462
friend void swap(FlatHashMap< K, V, H, E > &, FlatHashMap< K, V, H, E > &)
const value_type & const_reference
Definition bdlc_flathashmap.h:466
void clear()
Definition bdlc_flathashmap.h:1394
VALUE & at(const KEY &key)
Definition bdlc_flathashmap.h:1379
EQUAL key_eq() const
Definition bdlc_flathashmap.h:1671
iterator find(const KEY &key)
Definition bdlc_flathashmap.h:1469
bool contains(const KEY &key) const
Definition bdlc_flathashmap.h:1627
ImplType::const_iterator const_iterator
Definition bdlc_flathashmap.h:470
bool empty() const
Definition bdlc_flathashmap.h:1641
const_iterator cbegin() const
Definition bdlc_flathashmap.h:1709
bsl::size_t size() const
Return the number of elements in this map.
Definition bdlc_flathashmap.h:1692
bsl::enable_if< bsl::is_convertible< VALUE_TYPE, value_type >::value, bsl::pair< iterator, bool > >::type insert(BSLS_COMPILERFEATURES_FORWARD_REF(VALUE_TYPE) value)
Definition bdlc_flathashmap.h:758
void rehash(bsl::size_t minimumCapacity)
Definition bdlc_flathashmap.h:1493
bslma::Allocator * allocator() const
Return the allocator used by this flat hash map to supply memory.
Definition bdlc_flathashmap.h:1734
bsl::pair< iterator, bool > emplace(ARGS &&... args)
bsl::pair< iterator, iterator > equal_range(const KEY &key)
Definition bdlc_flathashmap.h:1402
VALUE & operator[](BSLS_COMPILERFEATURES_FORWARD_REF(KEY_TYPE) key)
Definition bdlc_flathashmap.h:1371
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
Definition bdlc_flathashmap.h:1740
const_iterator cend() const
Definition bdlc_flathashmap.h:1717
void reserve(bsl::size_t numEntries)
Definition bdlc_flathashmap.h:1500
float load_factor() const
Definition bdlc_flathashmap.h:1678
HASH hash_function() const
Definition bdlc_flathashmap.h:1664
~FlatHashMap()
Destroy this object and each of its elements.
Definition bdlc_flathashmap.h:1320
bsl::size_t erase(const KEY &key)
Definition bdlc_flathashmap.h:1430
iterator begin()
Definition bdlc_flathashmap.h:1579
FlatHashMap & operator=(const FlatHashMap &rhs)
Definition bdlc_flathashmap.h:1328
EQUAL key_compare
Definition bdlc_flathashmap.h:463
KEY key_type
Definition bdlc_flathashmap.h:459
FlatHashMap()
Definition bdlc_flathashmap.h:1121
ImplType::iterator iterator
Definition bdlc_flathashmap.h:469
float max_load_factor() const
Definition bdlc_flathashmap.h:1685
value_type & reference
Definition bdlc_flathashmap.h:465
void reset()
Definition bdlc_flathashmap.h:1507
bsl::size_t capacity() const
Definition bdlc_flathashmap.h:1620
iterator emplace_hint(const_iterator hint, ARGS &&... args)
Definition bdlc_flathashmap.h:1421
bsl::size_t count(const KEY &key) const
Definition bdlc_flathashmap.h:1634
VALUE mapped_type
Definition bdlc_flathashmap.h:460
bsl::pair< typename bsl::add_const< KEY >::type, VALUE > value_type
Definition bdlc_flathashmap.h:457
iterator end()
Definition bdlc_flathashmap.h:1587
bsl::size_t size_type
Definition bdlc_flathashmap.h:461
bslstl::ForwardIterator< const bsl::pair< KEY, VALUE >, IteratorImp > const_iterator
Definition bdlc_flathashtable.h:334
bslstl::ForwardIterator< bsl::pair< KEY, VALUE >, IteratorImp > iterator
Definition bdlc_flathashtable.h:332
Definition bslstl_pair.h:1210
static void swap(T *a, T *b)
Definition bslalg_swaputil.h:194
Definition bslh_fibonaccibadhashwrapper.h:165
Definition bslim_printer.h:601
Definition bslma_allocator.h:457
Definition bslma_destructorguard.h:132
Definition bslmf_movableref.h:751
#define BSLS_ASSERT_SAFE(X)
Definition bsls_assert.h:1762
#define BSLS_COMPILERFEATURES_FORWARD_REF(T)
Definition bsls_compilerfeatures.h:2012
#define BSLS_COMPILERFEATURES_FORWARD(T, V)
Definition bsls_compilerfeatures.h:2018
bool operator!=(const FileCleanerConfiguration &lhs, const FileCleanerConfiguration &rhs)
bool operator==(const FileCleanerConfiguration &lhs, const FileCleanerConfiguration &rhs)
void swap(OptionValue &a, OptionValue &b)
Definition bdlc_bitarray.h:503
void swap(BitArray &a, BitArray &b)
bool operator==(const BitArray &lhs, const BitArray &rhs)
bool operator!=(const BitArray &lhs, const BitArray &rhs)
BitArray operator<<(const BitArray &array, bsl::size_t numBits)
T::iterator begin(T &container)
Definition bslstl_iterator.h:1495
T::iterator end(T &container)
Definition bslstl_iterator.h:1523
Definition bdlc_flathashmap.h:1805
Definition balxml_encoderoptions.h:68
Definition bdlbb_blob.h:576
static void constructFromKey(ENTRY *entry, bslma::Allocator *allocator, BSLS_COMPILERFEATURES_FORWARD_REF(KEY_TYPE) key)
Definition bdlc_flathashmap.h:1088
static const KEY & key(const ENTRY &entry)
Return the key of the specified entry.
Definition bdlc_flathashmap.h:1109
static void construct(ENTRY *entry, bslma::Allocator *allocator, ARGS &&... args)
Definition bdlc_flathashmap.h:1072
TYPE first
Definition bslstl_pair.h:605
Definition bslmf_enableif.h:525
Definition bslstl_equalto.h:311
static void construct(TARGET_TYPE *address, const ALLOCATOR &allocator)
Definition bslma_constructionutil.h:1243
static MovableRef< t_TYPE > move(t_TYPE &reference) BSLS_KEYWORD_NOEXCEPT
Definition bslmf_movableref.h:1060
Definition bsls_objectbuffer.h:276
TYPE * address()
Definition bsls_objectbuffer.h:334
TYPE & object()
Definition bsls_objectbuffer.h:351