Deduktionshilfen für std::queue
| Definiert in Header <queue> |
||
| template< class Container > queue( Container ) |
(1) | (seit C++17) |
| template< class Container, class Alloc > queue( Container, Alloc ) |
(2) | (seit C++17) |
| template< class InputIt > queue( InputIt, InputIt ) |
(3) | (seit C++23) |
| template< class InputIt, class Alloc > queue( InputIt, InputIt, Alloc ) |
(4) | (seit C++23) |
| template< ranges::input_range R > queue( std::from_range_t, R&& ) |
(5) | (seit C++23) |
| template< ranges::input_range R, class Allocator > queue( std::from_range_t, R&&, Allocator ) |
(6) | (seit C++23) |
Diese Deduktionshilfen werden für queue bereitgestellt, um die Deduktion vom zugrunde liegenden Containertyp zu ermöglichen.
Diese Überladungen nehmen nur an der Auflösung von Überladungen teil, wenn
-
InputIt(falls vorhanden) erfüllt LegacyInputIterator, -
Container(falls vorhanden) erfüllt Allocator nicht, - für (3)(bis C++23)(4)(seit C++23), erfüllt
AllocAllocator, und - std::uses_allocator_v<Container, Alloc> ist true, wenn sowohl
Containerals auchAllocvorhanden sind.
Hinweis: In welchem Umfang die Bibliothek feststellt, dass ein Typ LegacyInputIterator nicht erfüllt, ist nicht spezifiziert, außer dass ganzzahlige Typen als Minimum keine Eingabeiteratoren qualifizieren. Ebenso ist der Umfang, in dem festgestellt wird, dass ein Typ Allocator nicht erfüllt, nicht spezifiziert, außer dass als Minimum der Mitgliedstyp Alloc::value_type existieren muss und der Ausdruck std::declval<Alloc&>().allocate(std::size_t{}) wohlgeformt sein muss, wenn er als nicht ausgewerteter Operand behandelt wird.
[bearbeiten] Hinweise
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_adaptor_iterator_pair_constructor |
202106L |
(C++23) | Iterator-Paar-Konstruktoren für std::queue und std::stack; Überladungen (2) und (4) |
__cpp_lib_containers_ranges |
202202L |
(C++23) | Bereichs-fähige (Ranges-aware) Konstruktion und Einfügung; Überladungen (5) und (6) |
[bearbeiten] Beispiel
#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>> }