deduction guides for std::queue
Defined in header <queue>
|
||
template
<
class Container >
queue( Container ) |
(1) | (since C++17) |
template
<
class Container, class Alloc >
queue( Container, Alloc ) |
(2) | (since C++17) |
template
<
class InputIt >
queue( InputIt, InputIt ) |
(3) | (since C++23) |
template
<
class InputIt, class Alloc >
queue( InputIt, InputIt, Alloc )
|
(4) | (since C++23) |
template
<
ranges::input_range R >
queue( std::from_range_t, R&& ) |
(5) | (since C++23) |
template
<
ranges::input_range R, class Allocator >
queue(
std::from_range_t, R&&, Allocator )
|
(6) | (since C++23) |
These deduction guides are provided for queue
to allow deduction from 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),
Alloc
satisfies Allocator -
std::uses_allocator_v<Container, Alloc>
is true if both
Container
andAlloc
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
{
}
)
Notes
Feature-test macro | Value | Std | Feature |
---|---|---|---|
__cpp_lib_adaptor_iterator_pair_constructor |
202106L |
(C++23) | Iterator pair constructors for std::queue and std::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>> }