| |
|
|
| template< class InputIt, class Hash = std::hash</*iter-key-t*/<InputIt>>, class Pred = std::equal_to</*iter-key-t*/<InputIt>>, class Alloc = std::allocator</*iter-to-alloc-t*/<InputIt>> > unordered_multimap( InputIt, InputIt, {{#pad:|18}} typename /* see below */::size_type = /* see below */, {{#pad:|18}} Hash = Hash(), Pred = Pred(), Alloc = Alloc() ) -> unordered_multimap</*iter-key-t*/<InputIt>, /*iter-val-t*/<InputIt>, {{#pad:|18}} Hash, Pred, Alloc>;
|
(1) |
(since C++17) |
template< class Key, class T, class Hash = std::hash<Key>, class Pred = std::equal_to<Key>, class Alloc = std::allocator<std::pair<const Key, T>> > unordered_multimap( std::initializer_list<std::pair<Key, T>>, {{#pad:|18}} typename /* see below */::size_type = /* see below */, {{#pad:|18}} Hash = Hash(), Pred = Pred(), Alloc = Alloc() ) -> unordered_multimap<Key, T, Hash, Pred, Alloc>;
|
(2) |
(since C++17) |
| template< class InputIt, class Alloc > unordered_multimap( InputIt, InputIt, typename /* see below */::size_type, Alloc ) -> unordered_multimap</*iter-key-t*/<InputIt>, /*iter-val-t*/<InputIt>, {{#pad:|18}} std::hash</*iter-key-t*/<InputIt>>, {{#pad:|18}} std::equal_to</*iter-key-t*/<InputIt>>, Alloc>;
|
(3) |
(since C++17) |
| template< class InputIt, class Alloc > unordered_multimap( InputIt, InputIt, Alloc ) -> unordered_multimap</*iter-key-t*/<InputIt>, /*iter-val-t*/<InputIt>, {{#pad:|18}} std::hash</*iter-key-t*/<InputIt>>, {{#pad:|18}} std::equal_to</*iter-key-t*/<InputIt>>, Alloc>;
|
(4) |
(since C++17) |
| template< class InputIt, class Hash, class Alloc > unordered_multimap( InputIt, InputIt, typename /* see below */::size_type, Hash, {{#pad:|18}} Alloc ) -> unordered_multimap</*iter-key-t*/<InputIt>, /*iter-val-t*/<InputIt>, Hash, {{#pad:|18}} std::equal_to</*iter-key-t*/<InputIt>>, Alloc>;
|
(5) |
(since C++17) |
template< class Key, class T, typename Alloc > unordered_multimap( std::initializer_list<std::pair<Key, T>>, {{#pad:|18}} typename /* see below */::size_type, Alloc ) -> unordered_multimap<Key, T, std::hash<Key>, std::equal_to<Key>, Alloc>;
|
(6) |
(since C++17) |
| template< class Key, class T, typename Alloc > unordered_multimap( std::initializer_list<std::pair<Key, T>>, Alloc ) -> unordered_multimap<Key, T, std::hash<Key>, std::equal_to<Key>, Alloc>;
|
(7) |
(since C++17) |
| template< class Key, class T, class Hash, class Alloc > unordered_multimap( std::initializer_list<std::pair<Key, T>>, {{#pad:|18}} typename /* see below */::size_type, Hash, Alloc ) -> unordered_multimap<Key, T, Hash, std::equal_to<Key>, Alloc>;
|
(8) |
(since C++17) |
template< ranges::input_range R, class Hash = std::hash</*range-key-t*/<R>>, class Pred = std::equal_to</*range-key-t*/<R>>, class Alloc = std::allocator</*range-to-alloc-t*/<R>> > unordered_multimap( std::from_range_t, R&&, {{#pad:|18}} typename /* see below */::size_type = /* see below */, {{#pad:|18}} Hash = Hash(), Pred = Pred(), Alloc = Alloc() ) -> unordered_multimap</*range-key-t*/<R>, /*range-mapped-t*/<R>, {{#pad:|18}} Hash, Pred, Alloc>;
|
(9) |
(since C++23) |
| template< ranges::input_range R, class Alloc > unordered_multimap( std::from_range_t, R&&, {{#pad:|18}} typename /* see below */::size_type, Alloc ) -> unordered_multimap</*range-key-t*/<R>, /*range-mapped-t*/<R>, {{#pad:|18}} std::hash</*range-key-t*/<R>>, {{#pad:|18}} std::equal_to</*range-key-t*/<R>>, Alloc>;
|
(10) |
(since C++23) |
| template< ranges::input_range R, class Alloc > unordered_multimap( std::from_range_t, R&&, Alloc ) -> unordered_multimap</*range-key-t*/<R>, /*range-mapped-t*/<R>, {{#pad:|18}} std::hash</*range-key-t*/<R>>, {{#pad:|18}} std::equal_to</*range-key-t*/<R>>, Alloc>;
|
(11) |
(since C++23) |
| template< ranges::input_range R, class Hash, class Alloc > unordered_multimap( std::from_range_t, R&&, typename /* see below */::size_type, {{#pad:|18}} Hash, Alloc ) -> unordered_multimap</*range-key-t*/<R>, /*range-mapped-t*/<R>, Hash, {{#pad:|18}} std::equal_to</*range-key-t*/<R>>, Alloc>;
|
(12) |
(since C++23) |
| Exposition-only helper type aliases |
|
|
template< class InputIt > using /*iter-val-t*/ = typename std::iterator_traits<InputIt>::value_type;
|
|
(exposition only*) |
template< class InputIt > using /*iter-key-t*/ = std::remove_const_t< std::tuple_element_t<0, /*iter-val-t*/<InputIt>>>;
|
|
(exposition only*) |
template< class InputIt > using /*iter-mapped-t*/ = std::tuple_element_t<1, /*iter-val-t*/<InputIt>>;
|
|
(exposition only*) |
template< class InputIt > using /*iter-to-alloc-t*/ = std::pair<std::add_const_t<tuple_element_t<0, /*iter-val-t*/<InputIt>>>, std::tuple_element_t<1, /*iter-val-t*/<InputIt>>>;
|
|
(exposition only*) |
template< ranges::input_range Range > using /*range-key-t*/ = std::remove_const_t<typename ranges::range_value_t<Range>::first_type>;
|
|
(since C++23) (exposition only*) |
template< ranges::input_range Range > using /*range-mapped-t*/ = typename ranges::range_value_t<Range>::second_type;
|
|
(since C++23) (exposition only*) |
template< ranges::input_range Range > using /*range-to-alloc-t*/ = std::pair<std::add_const_t<typename ranges::range_value_t<Range>::first_type>, typename ranges::range_value_t<Range>::second_type>;
|
|
(since C++23) (exposition only*) |
| | |