Namespaces
Variants

deduction guides for std::queue

From cppreference.net

Défini dans l'en-tête <queue>
template < class Container >

queue ( Container )

- > queue < typename Container :: value_type , Container > ;
(1) (depuis C++17)
template < class Container, class Alloc >

file d'attente ( Container, Alloc )

- > file d'attente < typename Container :: value_type , Container > ;
(2) (depuis C++17)
template < class InputIt >

queue ( InputIt, InputIt )

- > queue < typename std:: iterator_traits < InputIt > :: value_type > ;
(3) (depuis C++23)
template < class InputIt, class Alloc >

queue ( InputIt, InputIt, Alloc )
- > queue < typename std:: iterator_traits < InputIt > :: value_type ,

std:: deque < typename std:: iterator_traits < InputIt > :: value_type , Alloc >> ;
(4) (depuis C++23)
template < ranges:: input_range R >

queue ( std:: from_range_t , R && )

- > queue < ranges:: range_value_t < R >> ;
(5) (depuis C++23)
template < ranges:: input_range R, class Allocator >

queue ( std:: from_range_t , R && , Allocator )
- > queue < ranges:: range_value_t < R > ,

std:: deque < ranges:: range_value_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.

1) Déduit le type de conteneur sous-jacent à partir de l'argument.
2) Identique à (1) , sauf que l'allocateur est fourni.
3) Déduit le type d'élément à partir de l'itérateur, en utilisant std:: deque < typename std:: iterator_traits < InputIt > :: value_type > comme type de conteneur sous-jacent.
4) Identique à (3) , sauf que l'allocateur est fourni.
5) Déduit le type d'élément à partir d'un tag std::from_range_t et d'un input_range .
6) Identique à (5) , sauf que l'allocateur est fourni.

Ces surcharges participent à la résolution de surcharge seulement si

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>>
}