This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of Resolved status.
1041. Add associative/unordered container functions that allow to extract elementsSection: 23.2.7 [associative.reqmts] Status: Resolved Submitter: Alisdair Meredith Opened: 2009-03-12 Last modified: 2020-09-06
Priority: Not Prioritized
View other active issues in [associative.reqmts].
View all other issues in [associative.reqmts].
View all issues with Resolved status.
Discussion:
Addresses UK 239 [CD1]
It is not possible to take a move-only key out of an unordered container, such as (multi
)set
or (multi
)map
, or the new unordered containers.
Add below a.erase(q)
, a.extract(q)
, with the following notation:
a.extract(q)>
, Return type pair<key, iterator>
Extracts the element pointed to by q
and erases it from the set
. Returns a pair
containing the value pointed to by q
and an iterator
pointing to the element immediately following q
prior to the element being erased. If no such element exists,returns a.end()
.
[ Summit: ]
We look forward to a paper on this topic. We recommend no action until a paper is available. The paper would need to address exception safety.
[ Post Summit Alisdair adds: ]
Would
value_type
be a better return type thankey_type
?
[ 2009-07 post-Frankfurt: ]
Leave Open. Alisdair to contact Chris Jefferson about this.
[ 2009-09-20 Howard adds: ]
See the 2009-09-19 comment of 839(i) for an API which accomplishes this functionality and also addresses several other use cases which this proposal does not.
[ 2009-10 Santa Cruz: ]
Mark as NAD Future. No consensus to make the change at this time.
Original resolution [SUPERSEDED]:
In 23.2.7 [associative.reqmts] Table 85, add:
Table 85 -- Associative container requirements (in addition to container) Expression Return type Assertion/note
pre-/post-condition Complexitya.erase(q)
... ... ...a.extract(q)
pair<key_type, iterator>
Extracts the element pointed to byq
and erases it from theset
. Returns apair
containing the value pointed to byq
and aniterator
pointing to the element immediately followingq
prior to the element being erased. If no such element exists, returnsa.end()
. amortized constantIn 23.2.8 [unord.req] Table 87, add:
Table 87 -- Unordered associative container requirements (in addition to container) Expression Return type Assertion/note
pre-/post-condition Complexitya.erase(q)
... ... ...a.extract(q)
pair<key_type, iterator>
Extracts the element pointed to byq
and erases it from theset
. Returns apair
containing the value pointed to byq
and aniterator
pointing to the element immediately followingq
prior to the element being erased. If no such element exists, returnsa.end()
. amortized constant
[08-2016, Post-Chicago]
Move to Tentatively Resolved
Proposed resolution:
This functionality is provided by P0083R3
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4