Containers & iterators (C++17)
Node splicing, try_emplace/insert_or_assign, emplace return type, size/data/empty free functions, contiguous iterators, incomplete types, shared_ptr arrays.
Connected features
No dependency lines — on the map this feature hangs off C++17 by a star edge.
Papers
16 · Urbana 2014 → Kona 2017Allows safe conversions in unique_ptr<T[]>. In [unique.ptr.runtime.modifiers] the paper removed text that was not present; only the insertion of a default argument was applied in the first paragraph..
Adds try_emplace and insert_or_assign for maps.
Adds non-member size(), empty() and data().
Introduces the contiguous iterator category (as a named requirement).
Allows vector, list and forward_list of incomplete types.
Makes reverse_iterator, move_iterator, array and range access constexpr.
Specifies shared_from_this via weak_from_this and a nothrow enable_shared_from_this.
Adds a non-const string::data().
Adds uninitialized_move, uninitialized_value_construct, destroy and friends.
Adds node handles and extract/merge for splicing maps and sets.
Makes emplace_back/emplace_front return a reference to the new element.
Adds shared_ptr::weak_type.
Deletes operator= for polymorphic_allocator.
Disables std::hash specializations that are not usable ('poisoned' hashes).
Deprecates shared_ptr::unique().
Makes the standard hash functions noexcept.