23 Containers library [containers]

23.4 Associative containers [associative]

23.4.1 General [associative.general]

The header <map> defines the class templates map and multimap; the header <set> defines the class templates set and multiset.
The following exposition-only alias templates may appear in deduction guides for associative containers: template<class InputIterator> using iter-value-type = iterator_traits<InputIterator>::value_type; // exposition only template<class InputIterator> using iter-key-type = remove_cvref_t< tuple_element_t<0, iter-value-type<InputIterator>>>; // exposition only template<class InputIterator> using iter-mapped-type = remove_cvref_t< tuple_element_t<1, iter-value-type<InputIterator>>>; // exposition only template<class InputIterator> using iter-to-alloc-type = pair< const iter-key-type<InputIterator>, iter-mapped-type<InputIterator>>; // exposition only template<ranges::input_range Range> using range-key-type = remove_cvref_t<tuple_element_t<0, ranges::range_value_t<Range>>>; // exposition only template<ranges::input_range Range> using range-mapped-type = remove_cvref_t<tuple_element_t<1, ranges::range_value_t<Range>>>; // exposition only template<ranges::input_range Range> using range-to-alloc-type = pair<const range-key-type<Range>, range-mapped-type<Range>>; // exposition only