deductionguidesforstd::queue(3) | C++ Standard Libary | deductionguidesforstd::queue(3) |
NAME¶
deductionguidesforstd::queue - deductionguidesforstd::queue
Synopsis¶
Defined in header <queue>
template< class Container >
queue( Container ) (1) (since C++17)
-> queue<typename Container::value_type, Container>;
template< class InputIt >
queue( InputIt, InputIt ) (2) (since C++23)
-> queue<typename std::iterator_traits<InputIt>::value_type>;
template< class Container, class Alloc >
queue( Container, Alloc ) (3) (since C++17)
-> queue<typename Container::value_type, Container>;
template< class InputIt, class Alloc >
queue( InputIt, InputIt, Alloc )
-> queue<typename std::iterator_traits<InputIt>::value_type,
(4) (since C++23)
std::deque<typename std::iterator_traits<InputIt>::value_type,
Alloc>>;
These deduction guides are provided for queue to allow deduction from
underlying
container type.
1) Deduces underlying container type from the argument.
2) Deduces the element type from the iterator, using std::deque<typename
std::iterator_traits<InputIt>::value_type> as the underlying
container type.
3-4) Same as (1-2), except that the allocator is provided.
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, and
* std::uses_allocator_v<Container, Alloc> is true if both Container and
Alloc
exist.
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.
Example¶
// Run this code
#include <vector>
#include <queue>
int main() {
std::vector<int> v = {1,2,3,4};
std::queue s{v}; // guide #1 deduces std::queue<int, vector<int>>
}
2022.07.31 | http://cppreference.com |