On this page
deduction guides for std::queue
  | Defined in header <queue> | ||
|---|---|---|
|  | (1) | (since C++17) | 
|  | (2) | (since C++17) | 
|  | (3) | (since C++23) | 
|  | (4) | (since C++23) | 
|  | (5) | (since C++23) | 
|  | (6) | (since C++23) | 
These deduction guides are provided for queue to allow deduction from underlying container type.
std::deque<typename std::iterator_traits<InputIt>::value_type> as the underlying container type.
  These overloads participate in overload resolution only if
- InputIt(if exists) satisfies LegacyInputIterator,
- Container(if exists) does not satisfy Allocator,
- for (3)(until C++23)(4)(since C++23), Allocsatisfies Allocator, and
- std::uses_allocator_v<Container, Alloc>is- trueif both- Containerand- Allocexist.
Note: the extent to which the library determines that a type does not satisfy LegacyInputIterator is unspecified, except that as a minimum integral types do not qualify as input iterators. Likewise, the extent to which it determines that a type does not satisfy Allocator is unspecified, except that as a minimum the member type Alloc::value_type must exist and the expression std::declval<Alloc&>().allocate(std::size_t{}) must be well-formed when treated as an unevaluated operand.
Notes
| Feature-test macro | Value | Std | Feature | 
|---|---|---|---|
| __cpp_lib_adaptor_iterator_pair_constructor | 202106L | (C++23) | Iterator pair constructors for std::queueandstd::stack; overloads (2) and (4) | 
| __cpp_lib_containers_ranges | 202202L | (C++23) | Ranges-aware construction and insertion; overloads (5) and (6) | 
Example
#include <queue>
#include <vector>
 
int main()
{
    std::vector<int> v = {1, 2, 3, 4};
    std::queue s{v}; // guide #1 deduces std::queue<int, vector<int>>
}© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
 https://en.cppreference.com/w/cpp/container/queue/deduction_guides