GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
deductionguidesforstd::unordered_multimap(3) C++ Standard Libary deductionguidesforstd::unordered_multimap(3)

deductionguidesforstd::unordered_multimap - deductionguidesforstd::unordered_multimap


Defined in header <unordered_map>
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>>> (since
unordered_multimap(InputIt, InputIt, (1) C++17)
typename /*see below*/::size_type = /*see below*/,
Hash = Hash(), Pred = Pred(), Alloc = Alloc())


-> unordered_multimap<iter_key_t<InputIt>, iter_val_t<InputIt>, Hash,
Pred, Alloc>;
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>>> (since
unordered_multimap(std::initializer_list<std::pair<Key, T>>, (2) C++17)
typename /*see below*/::size_type = /*see below*/,
Hash = Hash(), Pred = Pred(), Alloc = Alloc())


-> unordered_multimap<Key, T, Hash, Pred, Alloc>;
template<class InputIt, class Alloc>


unordered_multimap(InputIt, InputIt, typename /*see below*/::size_type,
Alloc) (3) (since
-> unordered_multimap<iter_key_t<InputIt>, iter_val_t<InputIt>, C++17)
std::hash<iter_key_t<InputIt>>,


std::equal_to<iter_key_t<InputIt>>, Alloc>;
template<class InputIt, class Alloc>


unordered_multimap(InputIt, InputIt, Alloc) (since
-> unordered_multimap<iter_key_t<InputIt>, iter_val_t<InputIt>, (4) C++17)
std::hash<iter_key_t<InputIt>>,


std::equal_to<iter_key_t<InputIt>>, Alloc>;
template<class InputIt, class Hash, class Alloc>


unordered_multimap(InputIt, InputIt, typename /*see below*/::size_type, (since
Hash, Alloc) (5) C++17)
-> unordered_multimap<iter_key_t<InputIt>, iter_val_t<InputIt>, Hash,


std::equal_to<iter_key_t<InputIt>>, Alloc>;
template<class Key, class T, typename Alloc>


unordered_multimap(std::initializer_list<std::pair<Key, T>>, (since
typename /*see below*/::size_type, Alloc) (6) C++17)


-> unordered_multimap<Key, T, std::hash<Key>, std::equal_to<Key>,
Alloc>;
template<class Key, class T, typename Alloc>


unordered_multimap(std::initializer_list<std::pair<Key, T>>, Alloc) (7) (since
C++17)
-> unordered_multimap<Key, T, std::hash<Key>, std::equal_to<Key>,
Alloc>;
template<class Key, class T, class Hash, class Alloc>


unordered_multimap(std::initializer_list<std::pair<Key, T>>, (8) (since
typename /*see below*/::size_type, Hash, Alloc) C++17)


-> unordered_multimap<Key, T, Hash, std::equal_to<Key>, Alloc>;


where the type aliases iter_key_t, iter_val_t, iter_to_alloc_t are defined as if as
follows


template< class InputIt >
(exposition
using iter_key_t = std::remove_const_t< only)


typename std::iterator_traits<InputIt>::value_type::first_type>;
template< class InputIt > (exposition
using iter_val_t = typename only)
std::iterator_traits<InputIt>::value_type::second_type;
template< class InputIt >


using iter_to_alloc_t = std::pair<
std::add_const_t<typename (exposition
std::iterator_traits<InputIt>::value_type::first_type>, only)
typename std::iterator_traits<InputIt>::value_type::second_type


>


These deduction guide are provided for unordered_multimap to allow deduction from an
iterator range (overloads (1,3-5)) and std::initializer_list (overloads (2,6-8)).
These overloads participate in overload resolution only if InputIt satisfies
LegacyInputIterator, Alloc satisfies Allocator, neither Hash nor Pred satisfy
Allocator, and Hash is not an integral type.


Note: the extent to which the library determines that a type does not satisfy
LegacyInputIterator is unspecified, except that as a minimum integral types do not
qualify as input iterators. Likewise, the extent to which it determines that a type
does not satisfy Allocator is unspecified, except that as a minimum the member type
Alloc::value_type must exist and the expression
std::declval<Alloc&>().allocate(std::size_t{}) must be well-formed when treated as
an unevaluated operand.


The size_type parameter type in these guides in an refers to the size_type member
type of the type deduced by the deduction guide.

// Run this code


#include <unordered_map>
int main() {
// std::unordered_multimap m1 = {{"foo", 1}, {"bar", 2}}; // Error: braced-init-list has no type
// cannot deduce pair<Key, T> from
// {"foo", 1} or {"bar", 2}
std::unordered_multimap m1 = {std::pair{"foo", 2}, {"bar", 3}}; // guide #2
std::unordered_multimap m2(m1.begin(), m1.end()); // guide #1
}


Defect reports


The following behavior-changing defect reports were applied retroactively to
previously published C++ standards.


DR Applied to Behavior as published Correct behavior
LWG 3025 C++17 initializer-list guides take use std::pair<Key, T>
std::pair<const Key, T>

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.