deduction guides for
std::unordered_multimap
|
Definiert in Header
<unordered_map>
|
||
|
template
<
class
InputIt,
class
Hash
=
std::
hash
<
/*iter-key-t*/
<
InputIt
>>
,
|
(1) | (seit C++17) |
|
template
<
class
Key,
class
T,
class
Hash
=
std::
hash
<
Key
>
,
class
Pred
=
std::
equal_to
<
Key
>
,
|
(2) | (seit C++17) |
|
template
<
class
InputIt,
class
Alloc
>
unordered_multimap
(
InputIt, InputIt,
typename
/* siehe unten */
::
size_type
, Alloc
)
|
(3) | (seit C++17) |
|
template
<
class
InputIt,
class
Alloc
>
unordered_multimap
(
InputIt, InputIt, Alloc
)
|
(4) | (seit C++17) |
|
template
<
class
InputIt,
class
Hash,
class
Alloc
>
unordered_multimap
(
InputIt, InputIt,
typename
/* siehe unten */
::
size_type
, Hash,
|
(5) | (seit C++17) |
|
template
<
class
Key,
class
T,
typename
Alloc
>
unordered_multimap
(
std::
initializer_list
<
std::
pair
<
Key, T
>>
,
|
(6) | (seit C++17) |
|
template
<
class
Key,
class
T,
typename
Alloc
>
unordered_multimap
(
std::
initializer_list
<
std::
pair
<
Key, T
>>
, Alloc
)
|
(7) | (seit C++17) |
|
template
<
class
Key,
class
T,
class
Hash,
class
Alloc
>
unordered_multimap
(
std::
initializer_list
<
std::
pair
<
Key, T
>>
,
|
(8) | (seit C++17) |
|
template
<
ranges::
input_range
R,
class
Hash
=
std::
hash
<
/*range-key-t*/
<
R
>>
,
|
(9) | (seit C++23) |
|
template
<
ranges::
input_range
R,
class
Alloc
>
unordered_multimap
(
std::
from_range_t
, R
&&
,
|
(10) | (seit C++23) |
|
template
<
ranges::
input_range
R,
class
Alloc
>
unordered_multimap
(
std::
from_range_t
, R
&&
, Alloc
)
|
(11) | (seit C++23) |
|
template
<
ranges::
input_range
R,
class
Hash,
class
Alloc
>
unordered_multimap
(
std::
from_range_t
, R
&&
,
typename
/* siehe unten */
::
size_type
,
|
(12) | (seit C++23) |
|
Nur zur Darstellung dienende Hilfstyp-Aliase
|
||
|
template
<
class
InputIt
>
using
/*iter-val-t*/
=
|
( nur zur Darstellung* ) | |
|
template
<
class
InputIt
>
using
/*iter-key-t*/
=
|
( nur zur Darstellung* ) | |
|
template
<
class
InputIt
>
using
/*iter-mapped-t*/
=
|
( Nur zur Darstellung* ) | |
|
template
<
class
InputIt
>
using
/*iter-to-alloc-t*/
=
|
( Nur zur Darstellung* ) | |
|
template
<
ranges::
input_range
Range
>
using
/*range-key-t*/
=
|
(seit C++23)
( Nur zur Darstellung* ) |
|
|
template
<
ranges::
input_range
Range
>
using
/*range-mapped-t*/
=
|
(seit C++23)
( nur zur Darstellung* ) |
|
|
template
<
ranges::
input_range
Range
>
using
/*range-to-alloc-t*/
=
|
(seit C++23)
( Nur zur Darstellung* ) |
|
unordered_multimap
bereitgestellt, um die Ableitung aus einem Iteratorbereich (Overloads
(1,3-5)
) und
std::initializer_list
(Overloads
(2,6-8)
) zu ermöglichen.
unordered_multimap
bereitgestellt, um die Ableitung von einem
std::from_range_t
-Tag und einem
input_range
zu ermöglichen.
Diese Überladungen nehmen nur dann an der Überladungsauflösung teil, wenn
InputIt
die Anforderungen
LegacyInputIterator
erfüllt,
Alloc
die Anforderungen
Allocator
erfüllt, weder
Hash
noch
Pred
die Anforderungen
Allocator
erfüllen und
Hash
kein integraler Typ ist.
Hinweis: Das Ausmaß, in dem die Bibliothek feststellt, dass ein Typ nicht die Anforderungen eines
LegacyInputIterator
erfüllt, ist nicht spezifiziert, außer dass mindestens integrale Typen nicht als Input-Iteratoren qualifizieren. Ebenso ist das Ausmaß, in dem sie feststellt, dass ein Typ nicht die Anforderungen eines
Allocator
erfüllt, nicht spezifiziert, außer dass mindestens der Member-Typ
Alloc::value_type
existieren muss und der Ausdruck
std::
declval
<
Alloc
&
>
(
)
.
allocate
(
std::
size_t
{
}
)
wohlgeformt sein muss, wenn er als nicht ausgewerteter Operand behandelt wird.
Der
size_type
-Parametertyp in diesen Leitfäden bezieht sich auf den
size_type
-Mitgliedstyp des durch den Deduktionsleitfaden abgeleiteten Typs.
Hinweise
| Feature-Test Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Ranges-basierte Konstruktion und Einfügung; Überladungen ( 9-12 ) |
Beispiel
#include <unordered_map> int main() { // std::unordered_multimap m1 = {{"foo", 1}, {"bar", 2}}; // Fehler: Initialisierungsliste hat keinen Typ: kann // pair<Key, T> nicht von {"foo", 1} oder {"bar", 2} ableiten std::unordered_multimap m1 = {std::pair{"foo", 2}, {"bar", 3}}; // Anleitung #2 std::unordered_multimap m2(m1.begin(), m1.end()); // Anleitung #1 }
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 3025 | C++17 | Initializer-List-Deduktionsregeln ( 2 ) und ( 6-8 ) verwenden std:: pair < const Key, T > | verwenden std:: pair < Key, T > |