Created on 2017-06-14.00:00:00 last changed 46 months ago
Proposed resolution:
This wording is relative to N4659.
In [unord.req], edit Table 91 "Unordered associative container requirements" as indicated:
Table 91 — Unordered associative container requirements (in addition to container) Expression Return type Assertion/note
pre-/post-conditionComplexity … a.merge(a2) void Requires: a.get_allocator() == a2.get_allocator().
Attempts to extract each element in a2 and insert it into a using the hash function and key equality predicate of a. In containers with unique keys, if there is an element in a with key equivalent to the key of an element from a2, then that element is not extracted from a2.
Postconditions: Pointers and references to the transferred elements of a2 refer to those same elements but as members of a. Iterators referring to the transferred elements and all iterators referring to a will be invalidated, but iterators to elements remaining in a2 will remain valid.
Throws: Nothing unless the hash function or key equality predicate throws.Average case 𝒪(N), where N is a2.size().
Worst case 𝒪(N*a.size()+N).…
[ 2017-07 Toronto Monday issue prioritization ]
Priority 0; move to Ready
As pointed out in this StackOverflow question, unordered_{map,multimap,set,multiset}::merge() may need to rehash to maintain its max_load_factor invariant, which may require allocation, which may throw.
History | |||
---|---|---|---|
Date | User | Action | Args |
2021-02-25 10:48:01 | admin | set | status: wp -> c++20 |
2017-11-13 19:01:36 | admin | set | status: voting -> wp |
2017-10-17 18:34:55 | admin | set | status: ready -> voting |
2017-07-12 01:30:31 | admin | set | messages: + msg9343 |
2017-07-12 01:30:31 | admin | set | status: new -> ready |
2017-06-14 17:40:49 | admin | set | messages: + msg9258 |
2017-06-14 00:00:00 | admin | create |