[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>& s) { s.erase(*this); // ill-formed; previously well-formed}}; — *end example*]