deduction guides for
std::forward_list
|
Definido en el encabezado
<forward_list>
|
||
|
template
<
class
InputIt,
class
Alloc
=
std::
allocator
<
|
(1) | (desde C++17) |
|
template
<
ranges::
input_range
R,
class
Alloc
=
std::
allocator
<
ranges::
range_value_t
<
R
>>
>
|
(2) | (desde C++23) |
InputIt
satisface
LegacyInputIterator
y
Alloc
satisface
Allocator
.
input_range
.
Nota: el grado en que la biblioteca determina que un tipo no satisface
LegacyInputIterator
no está especificado, excepto que como mínimo los tipos integrales no califican como iteradores de entrada. Del mismo modo, el grado en que determina que un tipo no satisface
Allocator
no está especificado, excepto que como mínimo el tipo miembro
Alloc::value_type
debe existir y la expresión
std::
declval
<
Alloc
&
>
(
)
.
allocate
(
std::
size_t
{
}
)
debe estar bien formada cuando se trata como un operando no evaluado.
Notas
| Macro de prueba de características | Valor | Std | Característica |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Construcción e inserción con reconocimiento de rangos ; sobrecarga (2) |
Ejemplo
#include <forward_list> #include <vector> int main() { std::vector<int> v = {1, 2, 3, 4}; // utiliza guía de deducción explícita para deducir std::forward_list<int> std::forward_list x(v.begin(), v.end()); // deduce std::forward_list<std::vector<int>::iterator> // la primera fase de resolución de sobrecarga para inicialización de lista selecciona el candidato // sintetizado desde el constructor de lista de inicializadores; la segunda fase no se realiza // y la guía de deducción no tiene efecto std::forward_list y{v.begin(), v.end()}; }