Namespaces
Variants

deduction guides for std::forward_list

From cppreference.net

Definido en el encabezado <forward_list>
template < class InputIt,

class Alloc = std:: allocator <
typename std:: iterator_traits < InputIt > :: value_type > >
forward_list ( InputIt, InputIt, Alloc = Alloc ( ) )

- > forward_list < typename std:: iterator_traits < InputIt > :: value_type , Alloc > ;
(1) (desde C++17)
template < ranges:: input_range R,

class Alloc = std:: allocator < ranges:: range_value_t < R >> >
forward_list ( std:: from_range_t , R && , Alloc = Alloc ( ) )

- > forward_list < ranges:: range_value_t < R > , Alloc > ;
(2) (desde C++23)
1) Esta guía de deducción se proporciona para forward_list para permitir la deducción a partir de un rango de iteradores. Esta sobrecarga participa en la resolución de sobrecarga solo si InputIt satisface LegacyInputIterator y Alloc satisface Allocator .
2) Esta guía de deducción se proporciona para forward_list para permitir la deducción desde una etiqueta std::from_range_t y un 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()};
}