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
die Anforderungen eines
LegacyInputIterator
erfüllt und
Alloc
die Anforderungen eines
Allocator
erfüllt.
input_range
zu ermöglichen.
Hinweis: Das Ausmaß, in dem die Bibliothek feststellt, dass ein Typ nicht die Anforderungen eines
LegacyInputIterator
erfüllt, ist nicht spezifiziert, außer dass mindestens integrale Typen nicht als Eingabe-Iteratoren qualifizieren. Ebenso ist das Ausmaß, in dem sie feststellt, dass ein Typ nicht die Anforderungen eines
Allocator
erfüllt, nicht spezifiziert, außer dass mindestens der Member-Typ
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.
Hinweise
| Feature-Test Makro | Wert | Std | Funktion |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Ranges-basierte Konstruktion und Einfügung; Überladung (2) |
Beispiel
#include <deque> #include <vector> int main() { std::vector<int> v = {1, 2, 3, 4}; // verwendet expliziten Deduction Guide um std::deque<int> abzuleiten std::deque x(v.begin(), v.end()); // leitet std::deque<std::vector<int>::iterator> ab // erste Phase der Überladungsauflösung für Listeninitialisierung wählt den Kandidaten // der aus dem Initializer-List-Konstruktor synthetisiert wurde; zweite Phase wird nicht durchgeführt // und Deduction Guide hat keine Wirkung std::deque y{v.begin(), v.end()}; }