<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="">﻿[#concurrent_flat_map]</string>
    <string name="">Class Template concurrent_flat_map</string>
    <string name="">:idprefix: concurrent_flat_map_</string>
    <string name="">`boost::concurrent_flat_map` — A hash table that associates unique keys with another value and allows for concurrent element insertion, erasure, lookup and access without external synchronization mechanisms.</string>
    <string name="">Even though it acts as a container, `boost::concurrent_flat_map` does not model the standard C++ https://en.cppreference.com/w/cpp/named_req/Container[Container^] concept. In particular, iterators and associated operations (`begin`, `end`, etc.) are not provided. Element access and modification are done through user-provided _visitation functions_ that are passed to `concurrent_flat_map` operations where they are executed internally in a controlled fashion. Such visitation-based API allows for low-contention concurrent usage scenarios.</string>
    <string name="">The internal data structure of `boost::concurrent_flat_map` is similar to that of `boost::unordered_flat_map`. As a result of its using open-addressing techniques, `value_type` must be move-constructible and pointer stability is not kept under rehashing.</string>
    <string name="">Synopsis</string>
    <string name=":329">---</string>
    <string name="">Description</string>
    <string name="">*Template Parameters*</string>
    <string name="">_Key_</string>
    <string name="">`std::pair&lt;const Key, T&gt;` must be https://en.cppreference.com/w/cpp/named_req/EmplaceConstructible[EmplaceConstructible^] into the table from any `std::pair` object convertible to it, and it also must be https://en.cppreference.com/w/cpp/named_req/Erasable[Erasable^] from the table.</string>
    <string name="">_T_</string>
    <string name="">_Hash_</string>
    <string name="">A unary function object type that acts a hash function for a `Key`. It takes a single argument of type `Key` and returns a value of type `std::size_t`.</string>
    <string name="">_Pred_</string>
    <string name="">A binary function object that induces an equivalence relation on values of type `Key`. It takes two arguments of type `Key` and returns a value of type `bool`.</string>
    <string name="">_Allocator_</string>
    <string name="">An allocator whose value type is the same as the table\'s value type.</string>
    <string name="">Allocators using https://en.cppreference.com/w/cpp/named_req/Allocator#Fancy_pointers[fancy pointers] are supported.</string>
    <string name="">The elements of the table are held into an internal _bucket array_. An element is inserted into a bucket determined by its hash code, but if the bucket is already occupied (a _collision_), an available one in the vicinity of the original position is used.</string>
    <string name="">The size of the bucket array can be automatically increased by a call to `insert`/`emplace`, or as a result of calling `rehash`/`reserve`. The _load factor_ of the table (number of elements divided by number of buckets) is never greater than `max_load_factor()`, except possibly for small sizes where the implementation may decide to allow for higher loads.</string>
    <string name="">If `link:../../../../../container_hash/doc/html/hash.html#ref_hash_is_avalanchinghash[hash_is_avalanching]&lt;Hash&gt;::value` is `true`, the hash function is used as-is; otherwise, a bit-mixing post-processing stage is added to increase the quality of hashing at the expense of extra computational cost.</string>
    <string name=":371">---</string>
    <string name="">Concurrency Requirements and Guarantees</string>
    <string name="">Concurrent invocations of `operator()` on the same const instance of `Hash` or `Pred` are required to not introduce data races. For `Alloc` being either `Allocator` or any allocator type rebound from `Allocator`, concurrent invocations of the following operations on the same instance `al` of `Alloc` are required to not introduce data races:</string>
    <string name="">Copy construction from `al` of an allocator rebound from `Alloc`</string>
    <string name="">`std::allocator_traits&lt;Alloc&gt;::allocate`</string>
    <string name="">`std::allocator_traits&lt;Alloc&gt;::deallocate`</string>
    <string name="">`std::allocator_traits&lt;Alloc&gt;::construct`</string>
    <string name="">`std::allocator_traits&lt;Alloc&gt;::destroy`</string>
    <string name="">In general, these requirements on `Hash`, `Pred` and `Allocator` are met if these types are not stateful or if the operations only involve constant access to internal data members.</string>
    <string name="">With the exception of destruction, concurrent invocations of any operation on the same instance of a `concurrent_flat_map` do not introduce data races — that is, they are thread-safe.</string>
    <string name="">If an operation *op* is explicitly designated as _blocking on_ `x`, where `x` is an instance of a `boost::concurrent_flat_map`, prior blocking operations on `x` synchronize with *op*. So, blocking operations on the same `concurrent_flat_map` execute sequentially in a multithreaded scenario.</string>
    <string name="">An operation is said to be _blocking on rehashing of_ ``__x__`` if it blocks on `x` only when an internal rehashing is issued.</string>
    <string name="">When executed internally by a `boost::concurrent_flat_map`, the following operations by a user-provided visitation function on the element passed do not introduce data races:</string>
    <string name="">Read access to the element.</string>
    <string name="">Non-mutable modification of the element.</string>
    <string name="">Mutable modification of the element:</string>
    <string name="">** Within a container function accepting two visitation functions, always for the first function. ** Within a non-const container function whose name does not contain `cvisit`, for the last (or only) visitation function.</string>
    <string name="">Any `boost::concurrent_flat_map operation` that inserts or modifies an element `e` synchronizes with the internal invocation of a visitation function on `e`.</string>
    <string name="">Visitation functions executed by a `boost::concurrent_flat_map` `x` are not allowed to invoke any operation on `x`; invoking operations on a different `boost::concurrent_flat_map` instance `y` is allowed only if concurrent outstanding operations on `y` do not access `x` directly or indirectly.</string>
    <string name=":415">---</string>
    <string name="">Configuration Macros</string>
    <string name="">`BOOST_UNORDERED_DISABLE_REENTRANCY_CHECK`</string>
    <string name="">In debug builds (more precisely, when link:../../../../../assert/doc/html/assert.html#boost_assert_is_void[`BOOST_ASSERT_IS_VOID`^] is not defined), __container reentrancies__ (illegaly invoking an operation on `m` from within a function visiting elements of `m`) are detected and signalled through `BOOST_ASSERT_MSG`. When run-time speed is a concern, the feature can be disabled by globally defining this macro.</string>
    <string name=":428">---</string>
    <string name="">`BOOST_UNORDERED_ENABLE_STATS`</string>
    <string name="">Globally define this macro to enable xref:reference/stats.adoc#stats[statistics calculation] for the table. Note that this option decreases the overall performance of many operations.</string>
    <string name=":435">---</string>
    <string name="">Constants</string>
    <string name="">```cpp static constexpr size_type bulk_visit_size; ```</string>
    <string name="">Chunk size internally used in xref:concurrent_flat_map_bulk_visit[bulk visit] operations.</string>
    <string name="">Constructors</string>
    <string name="">Default Constructor</string>
    <string name="">```c++ concurrent_flat_map(); ```</string>
    <string name="">Constructs an empty table using `hasher()` as the hash function, `key_equal()` as the key equality predicate and `allocator_type()` as the allocator.</string>
    <string name=":456">Postconditions:;; `size() == 0` Requires:;; If the defaults are used, `hasher`, `key_equal` and `allocator_type` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":459">---</string>
    <string name="">Bucket Count Constructor</string>
    <string name="">```c++ explicit concurrent_flat_map(size_type n, const hasher&amp; hf = hasher(), const key_equal&amp; eql = key_equal(), const allocator_type&amp; a = allocator_type()); ```</string>
    <string name="">Constructs an empty table with at least `n` buckets, using `hf` as the hash function, `eql` as the key equality predicate, and `a` as the allocator.</string>
    <string name=":473">Postconditions:;; `size() == 0` Requires:;; If the defaults are used, `hasher`, `key_equal` and `allocator_type` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":476">---</string>
    <string name="">Iterator Range Constructor</string>
    <string name="">Constructs an empty table with at least `n` buckets, using `hf` as the hash function, `eql` as the key equality predicate and `a` as the allocator, and inserts the elements from `[f, l)` into it.</string>
    <string name=":492">Requires:;; If the defaults are used, `hasher`, `key_equal` and `allocator_type` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":494">---</string>
    <string name="">Copy Constructor</string>
    <string name="">```c++ concurrent_flat_map(concurrent_flat_map const&amp; other); ```</string>
    <string name="">The copy constructor. Copies the contained elements, hash function, predicate and allocator.</string>
    <string name="">If `Allocator::select_on_container_copy_construction` exists and has the right signature, the allocator will be constructed from its result.</string>
    <string name="">Requires:;; `value_type` is copy constructible Concurrency:;; Blocking on `other`.</string>
    <string name=":509">---</string>
    <string name="">Move Constructor</string>
    <string name="">```c++ concurrent_flat_map(concurrent_flat_map&amp;&amp; other); ```</string>
    <string name="">The move constructor. The internal bucket array of `other` is transferred directly to the new table. The hash function, predicate and allocator are moved-constructed from `other`. If statistics are xref:concurrent_flat_map_boost_unordered_enable_stats[enabled], transfers the internal statistical information from `other` and calls `other.reset_stats()`.</string>
    <string name=":522">Concurrency:;; Blocking on `other`.</string>
    <string name=":524">---</string>
    <string name="">Iterator Range Constructor with Allocator</string>
    <string name="">```c++ template&lt;class InputIterator&gt; concurrent_flat_map(InputIterator f, InputIterator l, const allocator_type&amp; a); ```</string>
    <string name="">Constructs an empty table using `a` as the allocator, with the default hash function and key equality predicate and inserts the elements from `[f, l)` into it.</string>
    <string name=":535">Requires:;; `hasher`, `key_equal` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":537">---</string>
    <string name="">Allocator Constructor</string>
    <string name="">```c++ explicit concurrent_flat_map(Allocator const&amp; a); ```</string>
    <string name="">Constructs an empty table, using allocator `a`.</string>
    <string name=":546">---</string>
    <string name="">Copy Constructor with Allocator</string>
    <string name="">```c++ concurrent_flat_map(concurrent_flat_map const&amp; other, Allocator const&amp; a); ```</string>
    <string name="">Constructs a table, copying ``other``\'s contained elements, hash function, and predicate, but using allocator `a`.</string>
    <string name=":556">Concurrency:;; Blocking on `other`.</string>
    <string name=":558">---</string>
    <string name="">Move Constructor with Allocator</string>
    <string name="">```c++ concurrent_flat_map(concurrent_flat_map&amp;&amp; other, Allocator const&amp; a); ```</string>
    <string name="">If `a == other.get_allocator()`, the elements of `other` are transferred directly to the new table; otherwise, elements are moved-constructed from those of `other`. The hash function and predicate are moved-constructed from `other`, and the allocator is copy-constructed from `a`. If statistics are xref:concurrent_flat_map_boost_unordered_enable_stats[enabled], transfers the internal statistical information from `other` iff `a == other.get_allocator()`, and always calls `other.reset_stats()`.</string>
    <string name=":573">Concurrency:;; Blocking on `other`.</string>
    <string name=":575">---</string>
    <string name="">Move Constructor from unordered_flat_map</string>
    <string name="">```c++ concurrent_flat_map(unordered_flat_map&lt;Key, T, Hash, Pred, Allocator&gt;&amp;&amp; other); ```</string>
    <string name="">Move construction from a xref:#unordered_flat_map[`unordered_flat_map`]. The internal bucket array of `other` is transferred directly to the new container. The hash function, predicate and allocator are moved-constructed from `other`. If statistics are xref:concurrent_flat_map_boost_unordered_enable_stats[enabled], transfers the internal statistical information from `other` and calls `other.reset_stats()`.</string>
    <string name="">Complexity:;; O(`bucket_count()`)</string>
    <string name=":592">---</string>
    <string name="">Initializer List Constructor</string>
    <string name="">Constructs an empty table with at least `n` buckets, using `hf` as the hash function, `eql` as the key equality predicate and `a`, and inserts the elements from `il` into it.</string>
    <string name=":607">Requires:;; If the defaults are used, `hasher`, `key_equal` and `allocator_type` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":609">---</string>
    <string name="">Bucket Count Constructor with Allocator</string>
    <string name="">```c++ concurrent_flat_map(size_type n, allocator_type const&amp; a); ```</string>
    <string name="">Constructs an empty table with at least `n` buckets, using `hf` as the hash function, the default hash function and key equality predicate and `a` as the allocator.</string>
    <string name="">Postconditions:;; `size() == 0` Requires:;; `hasher` and `key_equal` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":622">---</string>
    <string name="">Bucket Count Constructor with Hasher and Allocator</string>
    <string name="">```c++ concurrent_flat_map(size_type n, hasher const&amp; hf, allocator_type const&amp; a); ```</string>
    <string name="">Constructs an empty table with at least `n` buckets, using `hf` as the hash function, the default key equality predicate and `a` as the allocator.</string>
    <string name="">Postconditions:;; `size() == 0` Requires:;; `key_equal` needs to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":635">---</string>
    <string name="">Iterator Range Constructor with Bucket Count and Allocator</string>
    <string name="">Constructs an empty table with at least `n` buckets, using `a` as the allocator and default hash function and key equality predicate, and inserts the elements from `[f, l)` into it.</string>
    <string name=":647">Requires:;; `hasher`, `key_equal` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":649">---</string>
    <string name="">Iterator Range Constructor with Bucket Count and Hasher</string>
    <string name="">Constructs an empty table with at least `n` buckets, using `hf` as the hash function, `a` as the allocator, with the default key equality predicate, and inserts the elements from `[f, l)` into it.</string>
    <string name=":662">Requires:;; `key_equal` needs to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":664">---</string>
    <string name="">initializer_list Constructor with Allocator</string>
    <string name="">```c++ concurrent_flat_map(std::initializer_list&lt;value_type&gt; il, const allocator_type&amp; a); ```</string>
    <string name="">Constructs an empty table using `a` and default hash function and key equality predicate, and inserts the elements from `il` into it.</string>
    <string name=":675">Requires:;; `hasher` and `key_equal` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":677">---</string>
    <string name="">initializer_list Constructor with Bucket Count and Allocator</string>
    <string name="">```c++ concurrent_flat_map(std::initializer_list&lt;value_type&gt; il, size_type n, const allocator_type&amp; a); ```</string>
    <string name="">Constructs an empty table with at least `n` buckets, using `a` and default hash function and key equality predicate, and inserts the elements from `il` into it.</string>
    <string name=":688">Requires:;; `hasher` and `key_equal` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":690">---</string>
    <string name="">initializer_list Constructor with Bucket Count and Hasher and Allocator</string>
    <string name="">```c++ concurrent_flat_map(std::initializer_list&lt;value_type&gt; il, size_type n, const hasher&amp; hf, const allocator_type&amp; a); ```</string>
    <string name="">Constructs an empty table with at least `n` buckets, using `hf` as the hash function, `a` as the allocator and default key equality predicate,and inserts the elements from `il` into it.</string>
    <string name=":702">Requires:;; `key_equal` needs to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":704">---</string>
    <string name="">Destructor</string>
    <string name="">```c++ ~concurrent_flat_map(); ```</string>
    <string name="">Note:;; The destructor is applied to every element, and all memory is deallocated</string>
    <string name=":715">---</string>
    <string name="">Assignment</string>
    <string name="">Copy Assignment</string>
    <string name="">```c++ concurrent_flat_map&amp; operator=(concurrent_flat_map const&amp; other); ```</string>
    <string name="">The assignment operator. Destroys previously existing elements, copy-assigns the hash function and predicate from `other`, copy-assigns the allocator from `other` if `Alloc::propagate_on_container_copy_assignment` exists and `Alloc::propagate_on_container_copy_assignment::value` is `true`, and finally inserts copies of the elements of `other`.</string>
    <string name="">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/CopyInsertable[CopyInsertable^] Concurrency:;; Blocking on `*this` and `other`.</string>
    <string name=":733">---</string>
    <string name="">Move Assignment</string>
    <string name="">```c++ concurrent_flat_map&amp; operator=(concurrent_flat_map&amp;&amp; other) noexcept((boost::allocator_traits&lt;Allocator&gt;::is_always_equal::value || boost::allocator_traits&lt;Allocator&gt;::propagate_on_container_move_assignment::value) &amp;&amp; std::is_same&lt;pointer, value_type*&gt;::value); ``` The move assignment operator. Destroys previously existing elements, swaps the hash function and predicate from `other`, and move-assigns the allocator from `other` if `Alloc::propagate_on_container_move_assignment` exists and `Alloc::propagate_on_container_move_assignment::value` is `true`. If at this point the allocator is equal to `other.get_allocator()`, the internal bucket array of `other` is transferred directly to `*this`; otherwise, inserts move-constructed copies of the elements of `other`. If statistics are xref:concurrent_flat_map_boost_unordered_enable_stats[enabled], transfers the internal statistical information from `other` iff the final allocator is equal to `other.get_allocator()`, and always calls `other.reset_stats()`.</string>
    <string name="">Concurrency:;; Blocking on `*this` and `other`.</string>
    <string name=":753">---</string>
    <string name="">Initializer List Assignment</string>
    <string name="">```c++ concurrent_flat_map&amp; operator=(std::initializer_list&lt;value_type&gt; il); ```</string>
    <string name="">Assign from values in initializer list. All previously existing elements are destroyed.</string>
    <string name="">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/CopyInsertable[CopyInsertable^] Concurrency:;; Blocking on `*this`.</string>
    <string name=":766">---</string>
    <string name="">Visitation</string>
    <string name="">[c]visit</string>
    <string name="">```c++ template&lt;class F&gt; size_t visit(const key_type&amp; k, F f); template&lt;class F&gt; size_t visit(const key_type&amp; k, F f) const; template&lt;class F&gt; size_t cvisit(const key_type&amp; k, F f) const; template&lt;class K, class F&gt; size_t visit(const K&amp; k, F f); template&lt;class K, class F&gt; size_t visit(const K&amp; k, F f) const; template&lt;class K, class F&gt; size_t cvisit(const K&amp; k, F f) const; ```</string>
    <string name="">If an element `x` exists with key equivalent to `k`, invokes `f` with a reference to `x`. Such reference is const iff `*this` is const.</string>
    <string name="">Returns:;; The number of elements visited (0 or 1). Notes:;; The `template&lt;class K, class F&gt;` overloads only participate in overload resolution if `Hash::is_transparent` and `Pred::is_transparent` are valid member typedefs. The library assumes that `Hash` is callable with both `K` and `Key` and that `Pred` is transparent. This enables heterogeneous lookup which avoids the cost of instantiating an instance of the `Key` type.</string>
    <string name=":788">---</string>
    <string name="">Bulk visit</string>
    <string name="">```c++ template&lt;class FwdIterator, class F&gt; size_t visit(FwdIterator first, FwdIterator last, F f); template&lt;class FwdIterator, class F&gt; size_t visit(FwdIterator first, FwdIterator last, F f) const; template&lt;class FwdIterator, class F&gt; size_t cvisit(FwdIterator first, FwdIterator last, F f) const; ```</string>
    <string name="">For each element `k` in the range [`first`, `last`), if there is an element `x` in the container with key equivalent to `k`, invokes `f` with a reference to `x`. Such reference is const iff `*this` is const.</string>
    <string name="">Although functionally equivalent to individually invoking xref:concurrent_flat_map_cvisit[`[c\\]visit`] for each key, bulk visitation performs generally faster due to internal streamlining optimizations. It is advisable that `std::distance(first,last)` be at least xref:#concurrent_flat_map_constants[`bulk_visit_size`] to enjoy a performance gain: beyond this size, performance is not expected to increase further.</string>
    <string name="">Requires:;; `FwdIterator` is a https://en.cppreference.com/w/cpp/named_req/ForwardIterator[LegacyForwardIterator^] ({cpp}11 to {cpp}17), or satisfies https://en.cppreference.com/w/cpp/iterator/forward_iterator[std::forward_iterator^] ({cpp}20 and later). For `K` = `std::iterator_traits&lt;FwdIterator&gt;::value_type`, either `K` is `key_type` or else `Hash::is_transparent` and `Pred::is_transparent` are valid member typedefs. In the latter case, the library assumes that `Hash` is callable with both `K` and `Key` and that `Pred` is transparent. This enables heterogeneous lookup which avoids the cost of instantiating an instance of the `Key` type. Returns:;; The number of elements visited.</string>
    <string name=":824">---</string>
    <string name="">[c]visit_all</string>
    <string name="">```c++ template&lt;class F&gt; size_t visit_all(F f); template&lt;class F&gt; size_t visit_all(F f) const; template&lt;class F&gt; size_t cvisit_all(F f) const; ```</string>
    <string name="">Successively invokes `f` with references to each of the elements in the table. Such references are const iff `*this` is const.</string>
    <string name="">Returns:;; The number of elements visited.</string>
    <string name=":840">---</string>
    <string name="">Parallel [c]visit_all</string>
    <string name="">```c++ template&lt;class ExecutionPolicy, class F&gt; void visit_all(ExecutionPolicy&amp;&amp; policy, F f); template&lt;class ExecutionPolicy, class F&gt; void visit_all(ExecutionPolicy&amp;&amp; policy, F f) const; template&lt;class ExecutionPolicy, class F&gt; void cvisit_all(ExecutionPolicy&amp;&amp; policy, F f) const; ```</string>
    <string name="">Invokes `f` with references to each of the elements in the table. Such references are const iff `*this` is const. Execution is parallelized according to the semantics of the execution policy specified.</string>
    <string name="">Throws:;; Depending on the exception handling mechanism of the execution policy used, may call `std::terminate` if an exception is thrown within `f`. Notes:;; Only available in compilers supporting C++17 parallel algorithms. + + These overloads only participate in overload resolution if `std::is_execution_policy_v&lt;std::remove_cvref_t&lt;ExecutionPolicy&gt;&gt;` is `true`. + + Unsequenced execution policies are not allowed.</string>
    <string name=":861">---</string>
    <string name="">[c]visit_while</string>
    <string name="">```c++ template&lt;class F&gt; bool visit_while(F f); template&lt;class F&gt; bool visit_while(F f) const; template&lt;class F&gt; bool cvisit_while(F f) const; ```</string>
    <string name="">Successively invokes `f` with references to each of the elements in the table until `f` returns `false` or all the elements are visited. Such references to the elements are const iff `*this` is const.</string>
    <string name="">Returns:;; `false` iff `f` ever returns `false`.</string>
    <string name=":878">---</string>
    <string name="">Parallel [c]visit_while</string>
    <string name="">```c++ template&lt;class ExecutionPolicy, class F&gt; bool visit_while(ExecutionPolicy&amp;&amp; policy, F f); template&lt;class ExecutionPolicy, class F&gt; bool visit_while(ExecutionPolicy&amp;&amp; policy, F f) const; template&lt;class ExecutionPolicy, class F&gt; bool cvisit_while(ExecutionPolicy&amp;&amp; policy, F f) const; ```</string>
    <string name="">Invokes `f` with references to each of the elements in the table until `f` returns `false` or all the elements are visited. Such references to the elements are const iff `*this` is const. Execution is parallelized according to the semantics of the execution policy specified.</string>
    <string name="">Returns:;; `false` iff `f` ever returns `false`. Throws:;; Depending on the exception handling mechanism of the execution policy used, may call `std::terminate` if an exception is thrown within `f`. Notes:;; Only available in compilers supporting C++17 parallel algorithms. + + These overloads only participate in overload resolution if `std::is_execution_policy_v&lt;std::remove_cvref_t&lt;ExecutionPolicy&gt;&gt;` is `true`. + + Unsequenced execution policies are not allowed. + + Parallelization implies that execution does not necessary finish as soon as `f` returns `false`, and as a result `f` may be invoked with further elements for which the return value is also `false`.</string>
    <string name=":905">---</string>
    <string name="">Size and Capacity</string>
    <string name="">empty</string>
    <string name="">```c++ [[nodiscard]] bool empty() const noexcept; ```</string>
    <string name="">Returns:;; `size() == 0`</string>
    <string name=":918">---</string>
    <string name="">size</string>
    <string name="">```c++ size_type size() const noexcept; ```</string>
    <string name="">Returns:;; The number of elements in the table.</string>
    <string name="">Notes:;; In the presence of concurrent insertion operations, the value returned may not accurately reflect the true size of the table right after execution.</string>
    <string name=":933">---</string>
    <string name="">max_size</string>
    <string name="">```c++ size_type max_size() const noexcept; ```</string>
    <string name="">Returns:;; `size()` of the largest possible table.</string>
    <string name=":944">---</string>
    <string name="">Modifiers</string>
    <string name="">emplace</string>
    <string name="">```c++ template&lt;class... Args&gt; bool emplace(Args&amp;&amp;... args); ```</string>
    <string name="">Inserts an object, constructed with the arguments `args`, in the table if and only if there is no element in the table with an equivalent key.</string>
    <string name="">Requires:;; `value_type` is constructible from `args`. Returns:;; `true` if an insert took place. Concurrency:;; Blocking on rehashing of `*this`. Notes:;; Invalidates pointers and references to elements if a rehashing is issued. + + If `args...` is of the form `k,v`, it delays constructing the whole object until it is certain that an element should be inserted, using only the `k` argument to check.</string>
    <string name=":963">---</string>
    <string name="">Copy Insert</string>
    <string name="">```c++ bool insert(const value_type&amp; obj); bool insert(const init_type&amp; obj); ```</string>
    <string name=":971">Inserts `obj` in the table if and only if there is no element in the table with an equivalent key.</string>
    <string name="">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/CopyInsertable[CopyInsertable^]. Returns:;; `true` if an insert took place. + Concurrency:;; Blocking on rehashing of `*this`. Notes:;; Invalidates pointers and references to elements if a rehashing is issued. + + A call of the form `insert(x)`, where `x` is equally convertible to both `const value_type&amp;` and `const init_type&amp;`, is not ambiguous and selects the `init_type` overload.</string>
    <string name=":981">---</string>
    <string name="">Move Insert</string>
    <string name="">```c++ bool insert(value_type&amp;&amp; obj); bool insert(init_type&amp;&amp; obj); ```</string>
    <string name=":989">Inserts `obj` in the table if and only if there is no element in the table with an equivalent key.</string>
    <string name="">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/MoveInsertable[MoveInsertable^]. Returns:;; `true` if an insert took place. Concurrency:;; Blocking on rehashing of `*this`. Notes:;; Invalidates pointers and references to elements if a rehashing is issued. + + A call of the form `insert(x)`, where `x` is equally convertible to both `value_type&amp;&amp;` and `init_type&amp;&amp;`, is not ambiguous and selects the `init_type` overload.</string>
    <string name=":999">---</string>
    <string name="">Insert Iterator Range</string>
    <string name="">```c++ template&lt;class InputIterator&gt; size_type insert(InputIterator first, InputIterator last); ```</string>
    <string name=":1006">Equivalent to [listing,subs=\"+macros,+quotes\"]</string>
    <string name=":1013">Returns:;; The number of elements inserted.</string>
    <string name=":1015">---</string>
    <string name="">Insert Initializer List</string>
    <string name="">```c++ size_type insert(std::initializer_list&lt;value_type&gt; il); ```</string>
    <string name=":1022">Equivalent to [listing,subs=\"+macros,+quotes\"]</string>
    <string name=":1029">Returns:;; The number of elements inserted.</string>
    <string name=":1031">---</string>
    <string name="">emplace_or_[c]visit</string>
    <string name="">```c++ template&lt;class... Args, class F&gt; bool emplace_or_visit(Args&amp;&amp;... args, F&amp;&amp; f); template&lt;class... Args, class F&gt; bool emplace_or_cvisit(Args&amp;&amp;... args, F&amp;&amp; f); ```</string>
    <string name="">Inserts an object, constructed with the arguments `args`, in the table if there is no element in the table with an equivalent key. Otherwise, invokes `f` with a reference to the equivalent element; such reference is const iff `emplace_or_cvisit` is used.</string>
    <string name="">Requires:;; `value_type` is constructible from `args`. Returns:;; `true` if an insert took place. Concurrency:;; Blocking on rehashing of `*this`. Notes:;; Invalidates pointers and references to elements if a rehashing is issued. + + The interface is exposition only, as C++ does not allow to declare a parameter `f` after a variadic parameter pack.</string>
    <string name=":1050">---</string>
    <string name="">Copy insert_or_[c]visit</string>
    <string name="">```c++ template&lt;class F&gt; bool insert_or_visit(const value_type&amp; obj, F f); template&lt;class F&gt; bool insert_or_cvisit(const value_type&amp; obj, F f); template&lt;class F&gt; bool insert_or_visit(const init_type&amp; obj, F f); template&lt;class F&gt; bool insert_or_cvisit(const init_type&amp; obj, F f); ```</string>
    <string name=":1060">Inserts `obj` in the table if and only if there is no element in the table with an equivalent key. Otherwise, invokes `f` with a reference to the equivalent element; such reference is const iff a `*_cvisit` overload is used.</string>
    <string name="">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/CopyInsertable[CopyInsertable^]. Returns:;; `true` if an insert took place. + Concurrency:;; Blocking on rehashing of `*this`. Notes:;; Invalidates pointers and references to elements if a rehashing is issued. + + In a call of the form `insert_or_[c]visit(obj, f)`, the overloads accepting a `const value_type&amp;` argument participate in overload resolution only if `std::remove_cv&lt;std::remove_reference&lt;decltype(obj)&gt;::type&gt;::type` is `value_type`.</string>
    <string name=":1072">---</string>
    <string name="">Move insert_or_[c]visit</string>
    <string name="">```c++ template&lt;class F&gt; bool insert_or_visit(value_type&amp;&amp; obj, F f); template&lt;class F&gt; bool insert_or_cvisit(value_type&amp;&amp; obj, F f); template&lt;class F&gt; bool insert_or_visit(init_type&amp;&amp; obj, F f); template&lt;class F&gt; bool insert_or_cvisit(init_type&amp;&amp; obj, F f); ```</string>
    <string name=":1082">Inserts `obj` in the table if and only if there is no element in the table with an equivalent key. Otherwise, invokes `f` with a reference to the equivalent element; such reference is const iff a `*_cvisit` overload is used.</string>
    <string name="">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/MoveInsertable[MoveInsertable^]. Returns:;; `true` if an insert took place. + Concurrency:;; Blocking on rehashing of `*this`. Notes:;; Invalidates pointers and references to elements if a rehashing is issued. + + In a call of the form `insert_or_[c]visit(obj, f)`, the overloads accepting a `value_type&amp;&amp;` argument participate in overload resolution only if `std::remove_reference&lt;decltype(obj)&gt;::type` is `value_type`.</string>
    <string name=":1094">---</string>
    <string name="">Insert Iterator Range or Visit</string>
    <string name="">```c++ template&lt;class InputIterator,class F&gt; size_type insert_or_visit(InputIterator first, InputIterator last, F f); template&lt;class InputIterator,class F&gt; size_type insert_or_cvisit(InputIterator first, InputIterator last, F f); ```</string>
    <string name=":1104">Equivalent to [listing,subs=\"+macros,+quotes\"]</string>
    <string name=":1111">Returns:;; The number of elements inserted.</string>
    <string name=":1113">---</string>
    <string name="">Insert Initializer List or Visit</string>
    <string name="">```c++ template&lt;class F&gt; size_type insert_or_visit(std::initializer_list&lt;value_type&gt; il, F f); template&lt;class F&gt; size_type insert_or_cvisit(std::initializer_list&lt;value_type&gt; il, F f); ```</string>
    <string name=":1121">Equivalent to [listing,subs=\"+macros,+quotes\"]</string>
    <string name=":1128">Returns:;; The number of elements inserted.</string>
    <string name=":1130">---</string>
    <string name="">emplace_and_[c]visit</string>
    <string name="">```c++ template&lt;class... Args, class F1, class F2&gt; bool emplace_and_visit(Args&amp;&amp;... args, F1&amp;&amp; f1, F2&amp;&amp; f2); template&lt;class... Args, class F1, class F2&gt; bool emplace_and_cvisit(Args&amp;&amp;... args, F1&amp;&amp; f1, F2&amp;&amp; f2); ```</string>
    <string name="">Inserts an object, constructed with the arguments `args`, in the table if there is no element in the table with an equivalent key, and then invokes `f1` with a non-const reference to the newly created element. Otherwise, invokes `f2` with a reference to the equivalent element; such reference is const iff `emplace_and_cvisit` is used.</string>
    <string name="">Requires:;; `value_type` is constructible from `args`. Returns:;; `true` if an insert took place. Concurrency:;; Blocking on rehashing of `*this`. Notes:;; Invalidates pointers and references to elements if a rehashing is issued. + + The interface is exposition only, as C++ does not allow to declare parameters `f1` and `f2` after a variadic parameter pack.</string>
    <string name=":1152">---</string>
    <string name="">Copy insert_and_[c]visit</string>
    <string name="">```c++ template&lt;class F1, class F2&gt; bool insert_and_visit(const value_type&amp; obj, F1 f1, F2 f2); template&lt;class F1, class F2&gt; bool insert_and_cvisit(const value_type&amp; obj, F1 f1, F2 f2); template&lt;class F1, class F2&gt; bool insert_and_visit(const init_type&amp; obj, F1 f1, F2 f2); template&lt;class F1, class F2&gt; bool insert_and_cvisit(const init_type&amp; obj, F1 f1, F2 f2); ```</string>
    <string name=":1162">Inserts `obj` in the table if and only if there is no element in the table with an equivalent key, and then invokes `f1` with a non-const reference to the newly created element. Otherwise, invokes `f2` with a reference to the equivalent element; such reference is const iff a `*_cvisit` overload is used.</string>
    <string name="">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/CopyInsertable[CopyInsertable^]. Returns:;; `true` if an insert took place. + Concurrency:;; Blocking on rehashing of `*this`. Notes:;; Invalidates pointers and references to elements if a rehashing is issued. + + In a call of the form `insert_and_[c]visit(obj, f1, f2)`, the overloads accepting a `const value_type&amp;` argument participate in overload resolution only if `std::remove_cv&lt;std::remove_reference&lt;decltype(obj)&gt;::type&gt;::type` is `value_type`.</string>
    <string name=":1175">---</string>
    <string name="">Move insert_and_[c]visit</string>
    <string name="">```c++ template&lt;class F1, class F2&gt; bool insert_and_visit(value_type&amp;&amp; obj, F1 f1, F2 f2); template&lt;class F1, class F2&gt; bool insert_and_cvisit(value_type&amp;&amp; obj, F1 f1, F2 f2); template&lt;class F1, class F2&gt; bool insert_and_visit(init_type&amp;&amp; obj, F1 f1, F2 f2); template&lt;class F1, class F2&gt; bool insert_and_cvisit(init_type&amp;&amp; obj, F1 f1, F2 f2); ```</string>
    <string name=":1185">Inserts `obj` in the table if and only if there is no element in the table with an equivalent key, and then invokes `f1` with a non-const reference to the newly created element. Otherwise, invokes `f2` with a reference to the equivalent element; such reference is const iff a `*_cvisit` overload is used.</string>
    <string name="">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/MoveInsertable[MoveInsertable^]. Returns:;; `true` if an insert took place. + Concurrency:;; Blocking on rehashing of `*this`. Notes:;; Invalidates pointers and references to elements if a rehashing is issued. + + In a call of the form `insert_and_[c]visit(obj, f1, f2)`, the overloads accepting a `value_type&amp;&amp;` argument participate in overload resolution only if `std::remove_reference&lt;decltype(obj)&gt;::type` is `value_type`.</string>
    <string name=":1198">---</string>
    <string name="">Insert Iterator Range and Visit</string>
    <string name="">```c++ template&lt;class InputIterator, class F1, class F2&gt; size_type insert_or_visit(InputIterator first, InputIterator last, F1 f1, F2 f2); template&lt;class InputIterator, class F1, class F2&gt; size_type insert_or_cvisit(InputIterator first, InputIterator last, F1 f1, F2 f2); ```</string>
    <string name=":1208">Equivalent to [listing,subs=\"+macros,+quotes\"]</string>
    <string name=":1215">Returns:;; The number of elements inserted.</string>
    <string name=":1217">---</string>
    <string name="">Insert Initializer List and Visit</string>
    <string name="">```c++ template&lt;class F1, class F2&gt; size_type insert_and_visit(std::initializer_list&lt;value_type&gt; il, F1 f1, F2 f2); template&lt;class F1, class F2&gt; size_type insert_and_cvisit(std::initializer_list&lt;value_type&gt; il, F1 f1, F2 f2); ```</string>
    <string name=":1227">Equivalent to [listing,subs=\"+macros,+quotes\"]</string>
    <string name=":1234">Returns:;; The number of elements inserted.</string>
    <string name=":1236">---</string>
    <string name="">try_emplace</string>
    <string name="">```c++ template&lt;class... Args&gt; bool try_emplace(const key_type&amp; k, Args&amp;&amp;... args); template&lt;class... Args&gt; bool try_emplace(key_type&amp;&amp; k, Args&amp;&amp;... args); template&lt;class K, class... Args&gt; bool try_emplace(K&amp;&amp; k, Args&amp;&amp;... args); ```</string>
    <string name="">Inserts an element constructed from `k` and `args` into the table if there is no existing element with key `k` contained within it.</string>
    <string name="">Returns:;; `true` if an insert took place. + Concurrency:;; Blocking on rehashing of `*this`. Notes:;; This function is similiar to xref:#concurrent_flat_map_emplace[emplace], with the difference that no `value_type` is constructed if there is an element with an equivalent key; otherwise, the construction is of the form: + + -- ```c++</string>
    <string name=":1256">value_type(std::piecewise_construct, std::forward_as_tuple(std::forward&lt;Key&gt;(k)), std::forward_as_tuple(std::forward&lt;Args&gt;(args)...))</string>
    <string name=":1261">value_type(std::piecewise_construct, std::forward_as_tuple(std::forward&lt;K&gt;(k)), std::forward_as_tuple(std::forward&lt;Args&gt;(args)...)) ```</string>
    <string name="">unlike xref:#concurrent_flat_map_emplace[emplace], which simply forwards all arguments to ``value_type``\'s constructor.</string>
    <string name=":1268">Invalidates pointers and references to elements if a rehashing is issued.</string>
    <string name="">The `template&lt;class K, class\\... Args&gt;` overload only participates in overload resolution if `Hash::is_transparent` and `Pred::is_transparent` are valid member typedefs. The library assumes that `Hash` is callable with both `K` and `Key` and that `Pred` is transparent. This enables heterogeneous lookup which avoids the cost of instantiating an instance of the `Key` type.</string>
    <string name=":1272">--</string>
    <string name=":1274">---</string>
    <string name="">try_emplace_or_[c]visit</string>
    <string name="">```c++ template&lt;class... Args, class F&gt; bool try_emplace_or_visit(const key_type&amp; k, Args&amp;&amp;... args, F&amp;&amp; f); template&lt;class... Args, class F&gt; bool try_emplace_or_cvisit(const key_type&amp; k, Args&amp;&amp;... args, F&amp;&amp; f); template&lt;class... Args, class F&gt; bool try_emplace_or_visit(key_type&amp;&amp; k, Args&amp;&amp;... args, F&amp;&amp; f); template&lt;class... Args, class F&gt; bool try_emplace_or_cvisit(key_type&amp;&amp; k, Args&amp;&amp;... args, F&amp;&amp; f); template&lt;class K, class... Args, class F&gt; bool try_emplace_or_visit(K&amp;&amp; k, Args&amp;&amp;... args, F&amp;&amp; f); template&lt;class K, class... Args, class F&gt; bool try_emplace_or_cvisit(K&amp;&amp; k, Args&amp;&amp;... args, F&amp;&amp; f); ```</string>
    <string name="">Inserts an element constructed from `k` and `args` into the table if there is no existing element with key `k` contained within it. Otherwise, invokes `f` with a reference to the equivalent element; such reference is const iff a `*_cvisit` overload is used.</string>
    <string name=":1296">Returns:;; `true` if an insert took place. + Concurrency:;; Blocking on rehashing of `*this`. Notes:;; No `value_type` is constructed if there is an element with an equivalent key; otherwise, the construction is of the form: + + -- ```c++</string>
    <string name=":1304">value_type(std::piecewise_construct, std::forward_as_tuple(std::forward&lt;Key&gt;(k)), std::forward_as_tuple(std::forward&lt;Args&gt;(args)...))</string>
    <string name=":1309">value_type(std::piecewise_construct, std::forward_as_tuple(std::forward&lt;K&gt;(k)), std::forward_as_tuple(std::forward&lt;Args&gt;(args)...)) ```</string>
    <string name=":1314">Invalidates pointers and references to elements if a rehashing is issued.</string>
    <string name="">The interface is exposition only, as C++ does not allow to declare a parameter `f` after a variadic parameter pack.</string>
    <string name="">The `template&lt;class K, class\\... Args, class F&gt;` overloads only participate in overload resolution if `Hash::is_transparent` and `Pred::is_transparent` are valid member typedefs. The library assumes that `Hash` is callable with both `K` and `Key` and that `Pred` is transparent. This enables heterogeneous lookup which avoids the cost of instantiating an instance of the `Key` type.</string>
    <string name=":1320">--</string>
    <string name=":1322">---</string>
    <string name="">try_emplace_and_[c]visit</string>
    <string name="">```c++ template&lt;class... Args, class F1, class F2&gt; bool try_emplace_and_visit(const key_type&amp; k, Args&amp;&amp;... args, F1&amp;&amp; f1, F2&amp;&amp; f2); template&lt;class... Args, class F1, class F2&gt; bool try_emplace_and_cvisit(const key_type&amp; k, Args&amp;&amp;... args, F1&amp;&amp; f1, F2&amp;&amp; f2); template&lt;class... Args, class F1, class F2&gt; bool try_emplace_and_visit(key_type&amp;&amp; k, Args&amp;&amp;... args, F1&amp;&amp; f1, F2&amp;&amp; f2); template&lt;class... Args, class F1, class F2&gt; bool try_emplace_and_cvisit(key_type&amp;&amp; k, Args&amp;&amp;... args, F1&amp;&amp; f1, F2&amp;&amp; f2); template&lt;class K, class... Args, class F1, class F2&gt; bool try_emplace_and_visit(K&amp;&amp; k, Args&amp;&amp;... args, F1&amp;&amp; f1, F2&amp;&amp; f2); template&lt;class K, class... Args, class F1, class F2&gt; bool try_emplace_and_cvisit(K&amp;&amp; k, Args&amp;&amp;... args, F1&amp;&amp; f1, F2&amp;&amp; f2); ```</string>
    <string name="">Inserts an element constructed from `k` and `args` into the table if there is no existing element with key `k` contained within it, and then invokes `f1` with a non-const reference to the newly created element. Otherwise, invokes `f2` with a reference to the equivalent element; such reference is const iff a `*_cvisit` overload is used.</string>
    <string name=":1345">Returns:;; `true` if an insert took place. + Concurrency:;; Blocking on rehashing of `*this`. Notes:;; No `value_type` is constructed if there is an element with an equivalent key; otherwise, the construction is of the form: + + -- ```c++</string>
    <string name=":1353">value_type(std::piecewise_construct, std::forward_as_tuple(std::forward&lt;Key&gt;(k)), std::forward_as_tuple(std::forward&lt;Args&gt;(args)...))</string>
    <string name=":1358">value_type(std::piecewise_construct, std::forward_as_tuple(std::forward&lt;K&gt;(k)), std::forward_as_tuple(std::forward&lt;Args&gt;(args)...)) ```</string>
    <string name=":1363">Invalidates pointers and references to elements if a rehashing is issued.</string>
    <string name="">The interface is exposition only, as C++ does not allow to declare parameters `f1` and `f2` after a variadic parameter pack.</string>
    <string name="">The `template&lt;class K, class\\... Args, class F1, class F2&gt;` overloads only participate in overload resolution if `Hash::is_transparent` and `Pred::is_transparent` are valid member typedefs. The library assumes that `Hash` is callable with both `K` and `Key` and that `Pred` is transparent. This enables heterogeneous lookup which avoids the cost of instantiating an instance of the `Key` type.</string>
    <string name=":1369">--</string>
    <string name=":1371">---</string>
    <string name="">insert_or_assign</string>
    <string name="">```c++ template&lt;class M&gt; bool insert_or_assign(const key_type&amp; k, M&amp;&amp; obj); template&lt;class M&gt; bool insert_or_assign(key_type&amp;&amp; k, M&amp;&amp; obj); template&lt;class K, class M&gt; bool insert_or_assign(K&amp;&amp; k, M&amp;&amp; obj); ```</string>
    <string name="">Inserts a new element into the table or updates an existing one by assigning to the contained value.</string>
    <string name="">If there is an element with key `k`, then it is updated by assigning `std::forward&lt;M&gt;(obj)`.</string>
    <string name="">If there is no such element, it is added to the table as: ```c++</string>
    <string name="">value_type(std::piecewise_construct, std::forward_as_tuple(std::forward&lt;Key&gt;(k)), std::forward_as_tuple(std::forward&lt;M&gt;(obj)))</string>
    <string name="">value_type(std::piecewise_construct, std::forward_as_tuple(std::forward&lt;K&gt;(k)), std::forward_as_tuple(std::forward&lt;M&gt;(obj))) ```</string>
    <string name="">Returns:;; `true` if an insert took place. Concurrency:;; Blocking on rehashing of `*this`. Notes:;; Invalidates pointers and references to elements if a rehashing is issued. + + The `template&lt;class K, class M&gt;` only participates in overload resolution if `Hash::is_transparent` and `Pred::is_transparent` are valid member typedefs. The library assumes that `Hash` is callable with both `K` and `Key` and that `Pred` is transparent. This enables heterogeneous lookup which avoids the cost of instantiating an instance of the `Key` type.</string>
    <string name=":1404">---</string>
    <string name="">erase</string>
    <string name="">```c++ size_type erase(const key_type&amp; k); template&lt;class K&gt; size_type erase(const K&amp; k); ```</string>
    <string name="">Erases the element with key equivalent to `k` if it exists.</string>
    <string name="">Returns:;; The number of elements erased (0 or 1). Throws:;; Only throws an exception if it is thrown by `hasher` or `key_equal`. Notes:;; The `template&lt;class K&gt;` overload only participates in overload resolution if `Hash::is_transparent` and `Pred::is_transparent` are valid member typedefs. The library assumes that `Hash` is callable with both `K` and `Key` and that `Pred` is transparent. This enables heterogeneous lookup which avoids the cost of instantiating an instance of the `Key` type.</string>
    <string name=":1419">---</string>
    <string name="">erase_if by Key</string>
    <string name="">```c++ template&lt;class F&gt; size_type erase_if(const key_type&amp; k, F f); template&lt;class K, class F&gt; size_type erase_if(const K&amp; k, F f); ```</string>
    <string name="">Erases the element `x` with key equivalent to `k` if it exists and `f(x)` is `true`.</string>
    <string name="">Returns:;; The number of elements erased (0 or 1). Throws:;; Only throws an exception if it is thrown by `hasher`, `key_equal` or `f`. Notes:;; `f` is passed a non-const reference to `x`. + + The `template&lt;class K, class F&gt;` overload only participates in overload resolution if `std::is_execution_policy_v&lt;std::remove_cvref_t&lt;ExecutionPolicy&gt;&gt;` is `false`. + + The `template&lt;class K, class F&gt;` overload only participates in overload resolution if `Hash::is_transparent` and `Pred::is_transparent` are valid member typedefs. The library assumes that `Hash` is callable with both `K` and `Key` and that `Pred` is transparent. This enables heterogeneous lookup which avoids the cost of instantiating an instance of the `Key` type.</string>
    <string name=":1438">---</string>
    <string name=":1440">erase_if</string>
    <string name="">```c++ template&lt;class F&gt; size_type erase_if(F f); ```</string>
    <string name="">Successively invokes `f` with non-const references to each of the elements in the table, and erases those for which `f` returns `true`.</string>
    <string name="">Returns:;; The number of elements erased. Throws:;; Only throws an exception if it is thrown by `f`.</string>
    <string name=":1451">---</string>
    <string name="">Parallel erase_if</string>
    <string name="">"```c++ template&lt;class ExecutionPolicy, class  F&gt; void erase_if(ExecutionPolicy&amp;&amp; policy, F f); ```"</string>
    <string name="">Invokes `f` with non-const references to each of the elements in the table, and erases those for which `f` returns `true`. Execution is parallelized according to the semantics of the execution policy specified.</string>
    <string name="">Throws:;; Depending on the exception handling mechanism of the execution policy used, may call `std::terminate` if an exception is thrown within `f`. Notes:;; Only available in compilers supporting C++17 parallel algorithms. + + This overload only participates in overload resolution if `std::is_execution_policy_v&lt;std::remove_cvref_t&lt;ExecutionPolicy&gt;&gt;` is `true`. + + Unsequenced execution policies are not allowed.</string>
    <string name=":1469">---</string>
    <string name="">swap</string>
    <string name="">```c++ void swap(concurrent_flat_map&amp; other) noexcept(boost::allocator_traits&lt;Allocator&gt;::is_always_equal::value || boost::allocator_traits&lt;Allocator&gt;::propagate_on_container_swap::value); ```</string>
    <string name="">Swaps the contents of the table with the parameter.</string>
    <string name="">If `Allocator::propagate_on_container_swap` is declared and `Allocator::propagate_on_container_swap::value` is `true` then the tables\' allocators are swapped. Otherwise, swapping with unequal allocators results in undefined behavior.</string>
    <string name="">Throws:;; Nothing unless `key_equal` or `hasher` throw on swapping. Concurrency:;; Blocking on `*this` and `other`.</string>
    <string name=":1486">---</string>
    <string name="">clear</string>
    <string name="">```c++ void clear() noexcept; ```</string>
    <string name="">Erases all elements in the table.</string>
    <string name="">Postconditions:;; `size() == 0`, `max_load() &gt;= max_load_factor() * bucket_count()` Concurrency:;; Blocking on `*this`.</string>
    <string name=":1499">---</string>
    <string name="">merge</string>
    <string name="">```c++ template&lt;class H2, class P2&gt; size_type merge(concurrent_flat_map&lt;Key, T, H2, P2, Allocator&gt;&amp; source); template&lt;class H2, class P2&gt; size_type merge(concurrent_flat_map&lt;Key, T, H2, P2, Allocator&gt;&amp;&amp; source); ```</string>
    <string name="">Move-inserts all the elements from `source` whose key is not already present in `*this`, and erases them from `source`.</string>
    <string name="">Returns:;; The number of elements inserted. Concurrency:;; Blocking on `*this` and `source`.</string>
    <string name=":1515">---</string>
    <string name="">Observers</string>
    <string name="">get_allocator</string>
    <string name="">``` allocator_type get_allocator() const noexcept; ```</string>
    <string name="">Returns:;; The table\'s allocator.</string>
    <string name=":1527">---</string>
    <string name="">hash_function</string>
    <string name="">``` hasher hash_function() const; ```</string>
    <string name="">Returns:;; The table\'s hash function.</string>
    <string name=":1537">---</string>
    <string name="">key_eq</string>
    <string name="">``` key_equal key_eq() const; ```</string>
    <string name="">Returns:;; The table\'s key equality predicate.</string>
    <string name=":1547">---</string>
    <string name="">Map Operations</string>
    <string name="">count</string>
    <string name="">"```c++ size_type        count(const key_type&amp; k) const; template&lt;class K&gt; size_type      count(const K&amp; k) const; ```"</string>
    <string name="">Returns:;; The number of elements with key equivalent to `k` (0 or 1). Notes:;; The `template&lt;class K&gt;` overload only participates in overload resolution if `Hash::is_transparent` and `Pred::is_transparent` are valid member typedefs. The library assumes that `Hash` is callable with both `K` and `Key` and that `Pred` is transparent. This enables heterogeneous lookup which avoids the cost of instantiating an instance of the `Key` type. + + In the presence of concurrent insertion operations, the value returned may not accurately reflect the true state of the table right after execution.</string>
    <string name=":1565">---</string>
    <string name="">contains</string>
    <string name="">"```c++ bool             contains(const key_type&amp; k) const; template&lt;class K&gt; bool           contains(const K&amp; k) const; ```"</string>
    <string name="">"Returns:;; A boolean indicating whether or not there is an element with key equal to `k` in the table. Notes:;; The `template&lt;class K&gt;` overload only participates in overload resolution if `Hash::is_transparent` and `Pred::is_transparent` are valid member typedefs. The library assumes that `Hash` is callable with both `K` and `Key` and that `Pred` is transparent. This enables heterogeneous lookup which avoids the cost of instantiating an instance of the `Key` type.  + + In the presence of concurrent insertion operations, the value returned may not accurately reflect the true state of the table right after execution."</string>
    <string name=":1581">---</string>
    <string name="">Bucket Interface</string>
    <string name="">bucket_count</string>
    <string name="">```c++ size_type bucket_count() const noexcept; ```</string>
    <string name="">Returns:;; The size of the bucket array.</string>
    <string name=":1592">---</string>
    <string name="">Hash Policy</string>
    <string name="">load_factor</string>
    <string name="">```c++ float load_factor() const noexcept; ```</string>
    <string name="">Returns:;; `static_cast&lt;float&gt;(size())/static_cast&lt;float&gt;(bucket_count())`, or `0` if `bucket_count() == 0`.</string>
    <string name=":1604">---</string>
    <string name="">max_load_factor</string>
    <string name="">```c++ float max_load_factor() const noexcept; ```</string>
    <string name="">Returns:;; Returns the table\'s maximum load factor.</string>
    <string name=":1615">---</string>
    <string name="">Set max_load_factor</string>
    <string name="">```c++ void max_load_factor(float z); ```</string>
    <string name="">Effects:;; Does nothing, as the user is not allowed to change this parameter. Kept for compatibility with `boost::unordered_map`.</string>
    <string name=":1625">---</string>
    <string name="">max_load</string>
    <string name="">```c++ size_type max_load() const noexcept; ```</string>
    <string name="">Returns:;; The maximum number of elements the table can hold without rehashing, assuming that no further elements will be erased. Note:;; After construction, rehash or clearance, the table\'s maximum load is at least `max_load_factor() * bucket_count()`. This number may decrease on erasure under high-load conditions. + + In the presence of concurrent insertion operations, the value returned may not accurately reflect the true state of the table right after execution.</string>
    <string name=":1642">---</string>
    <string name="">rehash</string>
    <string name="">```c++ void rehash(size_type n); ```</string>
    <string name="">Changes if necessary the size of the bucket array so that there are at least `n` buckets, and so that the load factor is less than or equal to the maximum load factor. When applicable, this will either grow or shrink the `bucket_count()` associated with the table.</string>
    <string name="">When `size() == 0`, `rehash(0)` will deallocate the underlying buckets array.</string>
    <string name=":1653">Invalidates pointers and references to elements, and changes the order of elements.</string>
    <string name="">Throws:;; The function has no effect if an exception is thrown, unless it is thrown by the table\'s hash function or comparison function. Concurrency:;; Blocking on `*this`. ---</string>
    <string name="">reserve</string>
    <string name="">```c++ void reserve(size_type n); ```</string>
    <string name="">Equivalent to `a.rehash(ceil(n / a.max_load_factor()))`.</string>
    <string name="">Similar to `rehash`, this function can be used to grow or shrink the number of buckets in the table.</string>
    <string name=":1669">Invalidates pointers and references to elements, and changes the order of elements.</string>
    <string name="">Throws:;; The function has no effect if an exception is thrown, unless it is thrown by the table\'s hash function or comparison function. Concurrency:;; Blocking on `*this`.</string>
    <string name=":1675">---</string>
    <string name="">Statistics</string>
    <string name="">get_stats</string>
    <string name="">```c++ stats get_stats() const; ```</string>
    <string name="">Returns:;; A statistical description of the insertion and lookup operations performed by the table so far. Notes:;; Only available if xref:reference/stats.adoc#stats[statistics calculation] is xref:concurrent_flat_map_boost_unordered_enable_stats[enabled].</string>
    <string name=":1688">---</string>
    <string name="">reset_stats</string>
    <string name="">```c++ void reset_stats() noexcept; ```</string>
    <string name="">Effects:;; Sets to zero the internal statistics kept by the table. Notes:;; Only available if xref:reference/stats.adoc#stats[statistics calculation] is xref:concurrent_flat_map_boost_unordered_enable_stats[enabled].</string>
    <string name=":1699">---</string>
    <string name="">Deduction Guides</string>
    <string name="">A deduction guide will not participate in overload resolution if any of the following are true:</string>
    <string name="">- It has an `InputIterator` template parameter and a type that does not qualify as an input iterator is deduced for that parameter. - It has an `Allocator` template parameter and a type that does not qualify as an allocator is deduced for that parameter. - It has a `Hash` template parameter and an integral type or a type that qualifies as an allocator is deduced for that parameter. - It has a `Pred` template parameter and a type that qualifies as an allocator is deduced for that parameter.</string>
    <string name="">A `size_­type` parameter type in a deduction guide refers to the `size_­type` member type of the table type deduced by the deduction guide. Its default value coincides with the default value of the constructor selected.</string>
    <string name="">__iter-value-type__</string>
    <string name="">__iter-key-type__</string>
    <string name="">__iter-mapped-type__</string>
    <string name="">__iter-to-alloc-type__</string>
    <string name="">Equality Comparisons</string>
    <string name="">operator</string>
    <string name="">```c++ template&lt;class Key, class T, class Hash, class Pred, class Alloc&gt; bool operator==(const concurrent_flat_map&lt;Key, T, Hash, Pred, Alloc&gt;&amp; x, const concurrent_flat_map&lt;Key, T, Hash, Pred, Alloc&gt;&amp; y); ```</string>
    <string name="">Returns `true` if `x.size() == y.size()` and for every element in `x`, there is an element in `y` with the same key, with an equal value (using `operator==` to compare the value types).</string>
    <string name=":1758">Concurrency:;; Blocking on `x` and `y`. Notes:;; Behavior is undefined if the two tables don\'t have equivalent equality predicates.</string>
    <string name=":1761">---</string>
    <string name="">operator!</string>
    <string name="">```c++ template&lt;class Key, class T, class Hash, class Pred, class Alloc&gt; bool operator!=(const concurrent_flat_map&lt;Key, T, Hash, Pred, Alloc&gt;&amp; x, const concurrent_flat_map&lt;Key, T, Hash, Pred, Alloc&gt;&amp; y); ```</string>
    <string name="">Returns `false` if `x.size() == y.size()` and for every element in `x`, there is an element in `y` with the same key, with an equal value (using `operator==` to compare the value types).</string>
    <string name=":1773">Concurrency:;; Blocking on `x` and `y`. Notes:;; Behavior is undefined if the two tables don\'t have equivalent equality predicates.</string>
    <string name=":1776">---</string>
    <string name="">Swap</string>
    <string name="">```c++ template&lt;class Key, class T, class Hash, class Pred, class Alloc&gt; void swap(concurrent_flat_map&lt;Key, T, Hash, Pred, Alloc&gt;&amp; x, concurrent_flat_map&lt;Key, T, Hash, Pred, Alloc&gt;&amp; y) noexcept(noexcept(x.swap(y))); ```</string>
    <string name=":1786">Equivalent to [listing,subs=\"+macros,+quotes\"]</string>
    <string name=":1792">---</string>
    <string name=":1794">erase_if</string>
    <string name="">```c++ template&lt;class K, class T, class H, class P, class A, class Predicate&gt; typename concurrent_flat_map&lt;K, T, H, P, A&gt;::size_type erase_if(concurrent_flat_map&lt;K, T, H, P, A&gt;&amp; c, Predicate pred); ```</string>
    <string name=":1801">Equivalent to [listing,subs=\"+macros,+quotes\"]</string>
    <string name="">Serialization</string>
    <string name="">``concurrent_flat_map``s can be archived/retrieved by means of link:../../../../../serialization/index.html[Boost.Serialization^] using the API provided by this library. Both regular and XML archives are supported.</string>
    <string name="">Saving an concurrent_flat_map to an archive</string>
    <string name="">Saves all the elements of a `concurrent_flat_map` `x` to an archive (XML archive) `ar`.</string>
    <string name="">Requires:;; `std::remove_const&lt;key_type&gt;::type` and `std::remove_const&lt;mapped_type&gt;::type` are serializable (XML serializable), and they do support Boost.Serialization `save_construct_data`/`load_construct_data` protocol (automatically suported by https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^] types). Concurrency:;; Blocking on `x`.</string>
    <string name=":1825">---</string>
    <string name="">Loading an concurrent_flat_map from an archive</string>
    <string name="">Deletes all preexisting elements of a `concurrent_flat_map` `x` and inserts from an archive (XML archive) `ar` restored copies of the elements of the original `concurrent_flat_map` `other` saved to the storage read by `ar`.</string>
    <string name="">Requires:;; `x.key_equal()` is functionally equivalent to `other.key_equal()`. Concurrency:;; Blocking on `x`.</string>
</resources>
