deduction guides for std::deque
| Definiert in Header <deque> |
||
| template< class InputIt, class Alloc = std::allocator< |
(1) | (seit C++17) |
| template< ranges::input_range R, class Alloc = std::allocator<ranges::range_value_t<R>> > |
(2) | (seit C++23) |
InputIt LegacyInputIterator erfüllt und Alloc Allocator erfüllt.input_range zu ermöglichen.Hinweis: Das Ausmaß, in dem die Bibliothek feststellt, dass ein Typ LegacyInputIterator nicht erfüllt, ist nicht spezifiziert, außer dass ganzzahlige Typen als minimale Eingabeiteratoren nicht qualifiziert sind. Ebenso ist das Ausmaß, in dem sie feststellt, dass ein Typ Allocator nicht erfüllt, nicht spezifiziert, außer dass als Minimum der Member-Typ Alloc::value_type existieren muss und der Ausdruck std::declval<Alloc&>().allocate(std::size_t{}) gut gebildet sein muss, wenn er als nicht ausgewerteter Operand behandelt wird.
[bearbeiten] Anmerkungen
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_containers_ranges |
202202L |
(C++23) | Bereichsbezogene Konstruktion und Einfügung; Überladung (2) |
[bearbeiten] Beispiel
#include <deque> #include <vector> int main() { std::vector<int> v = {1, 2, 3, 4}; // uses explicit deduction guide to deduce std::deque<int> std::deque x(v.begin(), v.end()); // deduces std::deque<std::vector<int>::iterator> // first phase of overload resolution for list-initialization selects the candidate // synthesized from the initializer-list constructor; second phase is not performed // and deduction guide has no effect std::deque y{v.begin(), v.end()}; }