deduction guides for
std::forward_list
|
Défini dans l'en-tête
<forward_list>
|
||
|
template
<
class
InputIt,
class
Alloc
=
std::
allocator
<
|
(1) | (depuis C++17) |
|
template
<
ranges::
input_range
R,
class
Alloc
=
std::
allocator
<
ranges::
range_value_t
<
R
>>
>
|
(2) | (depuis C++23) |
InputIt
satisfait
LegacyInputIterator
et
Alloc
satisfait
Allocator
.
input_range
.
Note : la mesure dans laquelle la bibliothèque détermine qu'un type ne satisfait pas
LegacyInputIterator
n'est pas spécifiée, sauf qu'au minimum les types entiers ne se qualifient pas comme itérateurs d'entrée. De même, la mesure dans laquelle elle détermine qu'un type ne satisfait pas
Allocator
n'est pas spécifiée, sauf qu'au minimum le type membre
Alloc::value_type
doit exister et l'expression
std::
declval
<
Alloc
&
>
(
)
.
allocate
(
std::
size_t
{
}
)
doit être bien formée lorsqu'elle est traitée comme un opérande non évalué.
Notes
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Construction et insertion compatibles avec les gammes ; surcharge (2) |
Exemple
#include <forward_list> #include <vector> int main() { std::vector<int> v = {1, 2, 3, 4}; // utilise un guide de déduction explicite pour déduire std::forward_list<int> std::forward_list x(v.begin(), v.end()); // déduit std::forward_list<std::vector<int>::iterator> // la première phase de la résolution de surcharge pour l'initialisation de liste sélectionne le candidat // synthétisé à partir du constructeur de liste d'initialiseurs ; la deuxième phase n'est pas effectuée // et le guide de déduction n'a aucun effet std::forward_list y{v.begin(), v.end()}; }