[diff.cpp20.containers]

# Annex C (informative) Compatibility [[diff]](./#diff)

## C.2 C++ and ISO C++ 2020 [[diff.cpp20]](diff.cpp20#containers)

### C.2.12 [[containers]](containers "23 Containers library"): containers library [diff.cpp20.containers]

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L773)

**Affected subclauses:** [[associative.reqmts]](associative.reqmts) and [[unord.req]](unord.req)  


**Change:** Heterogeneous extract and erase overloads
for associative containers[.](#1.sentence-1)

  


**Rationale:** Improve efficiency of erasing elements from associative containers[.](#1.sentence-2)

  


**Effect on original feature:** Valid C++ 2020 code may fail to compile in this revision of C++[.](#1.sentence-3)

[*Example [1](#example-1)*: struct B {auto operator<=>(const B&) const = default;};

struct D : private B {void f(std::set<B, std::less<>>& s) { s.erase(*this); // ill-formed; previously well-formed}}; â *end example*]
