deduction guides for
std::queue
|
Défini dans l'en-tête
<queue>
|
||
|
template
<
class
Container
>
queue
(
Container
)
|
(1) | (depuis C++17) |
|
template
<
class
Container,
class
Alloc
>
file d'attente
(
Container, Alloc
)
|
(2) | (depuis C++17) |
|
template
<
class
InputIt
>
queue
(
InputIt, InputIt
)
|
(3) | (depuis C++23) |
|
template
<
class
InputIt,
class
Alloc
>
queue
(
InputIt, InputIt, Alloc
)
|
(4) | (depuis C++23) |
|
template
<
ranges::
input_range
R
>
queue
(
std::
from_range_t
, R
&&
)
|
(5) | (depuis C++23) |
|
template
<
ranges::
input_range
R,
class
Allocator
>
queue
(
std::
from_range_t
, R
&&
, Allocator
)
|
(6) | (depuis C++23) |
Ces
guides de déduction
sont fournis pour
queue
afin de permettre la déduction à partir du type de conteneur sous-jacent.
Ces surcharges participent à la résolution de surcharge seulement si
-
InputIt(s'il existe) satisfait LegacyInputIterator , -
Container(s'il existe) ne satisfait pas Allocator , -
pour
(3)
(until C++23)
(4)
(since C++23)
,
Allocsatisfait Allocator , et -
std::
uses_allocator_v
<
Container, Alloc
>
est
true
si
ContaineretAllocexistent tous deux.
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 | Norme | Fonctionnalité |
|---|---|---|---|
__cpp_lib_adaptor_iterator_pair_constructor
|
202106L
|
(C++23) | Constructeurs de paire d'itérateurs pour std::queue et std::stack ; surcharges (2) et (4) |
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Construction et insertion compatibles avec les gammes ; surcharges (5) et (6) |
Exemple
#include <queue> #include <vector> int main() { std::vector<int> v = {1, 2, 3, 4}; std::queue s{v}; // guide #1 déduit std::queue<int, vector<int>> }