deduction guides for
std::unordered_multiset
|
Défini dans l'en-tête
<unordered_set>
|
||
|
template
<
class
InputIt,
|
(1) | (depuis C++17) |
|
template
<
class
T,
class
Hash
=
std::
hash
<
T
>
,
|
(2) | (depuis C++17) |
|
template
<
class
InputIt,
class
Alloc
>
unordered_multiset
(
InputIt, InputIt,
typename
/* voir ci-dessous */
::
size_type
, Alloc
)
|
(3) | (depuis C++17) |
|
template
<
class
InputIt,
class
Hash,
class
Alloc
>
unordered_multiset
(
InputIt, InputIt,
typename
/* voir ci-dessous */
::
size_type
, Hash, Alloc
)
|
(4) | (depuis C++17) |
|
template
<
class
T,
class
Alloc
>
unordered_multiset
(
std::
initializer_list
<
T
>
,
typename
/* voir ci-dessous */
::
size_type
, Alloc
)
|
(5) | (depuis C++17) |
|
template
<
class
T,
class
Hash,
class
Alloc
>
unordered_multiset
(
std::
initializer_list
<
T
>
,
typename
/* voir ci-dessous */
::
size_type
,
|
(6) | (depuis C++17) |
|
template
<
ranges::
input_range
R,
class
Hash
=
std::
hash
<
ranges::
range_value_t
<
R
>>
,
|
(7) | (depuis C++23) |
|
template
<
ranges::
input_range
R,
class
Alloc
>
unordered_multiset
(
std::
from_range_t
, R
&&
,
|
(8) | (depuis C++23) |
|
template
<
ranges::
input_range
R,
class
Alloc
>
unordered_multiset
(
std::
from_range_t
, R
&&
, Alloc
)
|
(9) | (depuis C++23) |
|
template
<
ranges::
input_range
R,
class
Hash,
class
Alloc
>
unordered_multiset
(
std::
from_range_t
, R
&&
,
|
(10) | (depuis C++23) |
unordered_multiset
afin de permettre la déduction à partir d'une plage d'itérateurs (surcharges
(1,3,4)
) et
std::initializer_list
(surcharges
(2,5,6)
). Cette surcharge participe à la résolution de surcharge uniquement si
InputIt
satisfait
LegacyInputIterator
,
Alloc
satisfait
Allocator
, ni
Hash
ni
Pred
ne satisfont
Allocator
, et
Hash
n'est pas un type intégral.
unordered_multiset
afin de permettre la déduction à partir d'un tag
std::from_range_t
et d'un
input_range
.
Note : la mesure dans laquelle la bibliothèque détermine qu'un type ne satisfait pas
LegacyInputIterator
n'est pas spécifiée, sauf qu'au minimum les types entiers ne se qualifient pas comme itérateurs d'entrée. De même, la mesure dans laquelle elle détermine qu'un type ne satisfait pas
Allocator
n'est pas spécifiée, sauf qu'au minimum le type membre
Alloc::value_type
doit exister et l'expression
std::
declval
<
Alloc
&
>
(
)
.
allocate
(
std::
size_t
{
}
)
doit être bien formée lorsqu'elle est traitée comme un opérande non évalué.
Le size_type type de paramètre dans ces guides fait référence au size_type type membre du type déduit par le guide de déduction.
Notes
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Construction et insertion compatibles avec les gammes ; surcharges (7-10) |
Exemple
#include <unordered_set> int main() { // guide #2 déduit std::unordered_multiset<int> std::unordered_multiset s = {1, 2, 3, 4}; // guide #1 déduit std::unordered_multiset<int> std::unordered_multiset s2(s.begin(), s.end()); }