deduction guides for
std::multiset
|
Défini dans l'en-tête
<set>
|
||
|
template
<
class
InputIt,
|
(1) | (depuis C++17) |
|
template
<
class
Key,
class
Comp
=
std::
less
<
Key
>
,
|
(2) | (depuis C++17) |
|
template
<
class
InputIt,
class
Alloc
>
multiset
(
InputIt, InputIt, Alloc
)
|
(3) | (depuis C++17) |
|
template
<
class
Key,
class
Alloc
>
multiset
(
std::
initializer_list
<
Key
>
, Alloc
)
|
(4) | (depuis C++17) |
|
template
<
ranges::
input_range
R,
class
Compare
=
less
<
ranges::
range_value_t
<
R
>>
,
class
Alloc
=
std::
allocator
<
ranges::
range_value_t
<
R
>>
>
|
(5) | (depuis C++23) |
|
template
<
ranges::
input_range
R,
class
Alloc
>
multiset
(
std::
from_range_t
, R
&&
, Alloc
)
|
(6) | (depuis C++23) |
multiset
afin de permettre la déduction à partir d'une plage d'itérateurs (surcharges
(1,3)
) et de
std::initializer_list
(surcharges
(2,4)
).
multiset
afin de permettre la déduction à partir d'un tag
std::from_range_t
et d'un
input_range
.
Ces surcharges participent à la résolution de surcharge seulement si
InputIt
satisfait
LegacyInputIterator
,
Alloc
satisfait
Allocator
, et
Comp
ne satisfait pas
Allocator
.
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 sont pas qualifiés 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é.
Notes
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Construction et insertion compatibles avec les gammes ; surcharge (5,6) |
Exemple
#include <set> int main() { // guide #2 déduit std::multiset<int> std::multiset s = {1, 2, 3, 4}; // guide #1 déduit std::multiset<int> std::multiset s2(s.begin(), s.end()); }