deduction guides for
std::forward_list
|
Definiert im Header
<forward_list>
|
||
|
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 | Feature |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Ranges-bewusste Konstruktion und Einfügung; Überladung (2) |
Beispiel
#include <forward_list> #include <vector> int main() { std::vector<int> v = {1, 2, 3, 4}; // verwendet expliziten Deduction Guide um std::forward_list<int> abzuleiten std::forward_list x(v.begin(), v.end()); // leitet std::forward_list<std::vector<int>::iterator> ab // erste Phase der Überlösungsauflösung für Listeninitialisierung wählt den Kandidaten // synthetisiert vom Initializer-List-Konstruktor; zweite Phase wird nicht durchgeführt // und Deduction Guide hat keine Wirkung std::forward_list y{v.begin(), v.end()}; }