Namespaces
Variants

std::from_range, std::from_range_t

De es.cppreference.net
 
 
Biblioteca de rangos
Adaptadores de rangos
 
Definido en el encabezado <ranges>
struct from_range_t { explicit from_range_t() = default; };
(desde C++23)
inline constexpr std::from_range_t from_range {};
(desde C++23)

std::from_range es una etiqueta de desambiguación que se puede pasar a los constructores de los contenedores adecuados para indicar que el miembro contenido se construye a partir de un rango.

El tipo correspondiente std::from_range_t se puede usar en la lista de parámetros del constructor para que coincida con la etiqueta prevista.

Biblioteca estándar

Los siguientes tipos de la biblioteca estándar utilizan std::from_range_t en sus constructores:

Biblioteca de contenedores
construye el vector a partir de un rango
(función miembro pública de std::vector<T,Allocator>)
construye el inplace_vector a partir de un rango
(función miembro pública de std::inplace_vector<T,N>)
construye el hive a partir de un rango
(función miembro pública de std::hive<T,Allocator>)
construye el deque a partir de un rango
(función miembro pública de std::deque<T,Allocator>)
construye el forward_list a partir de un rango
(función miembro pública de std::forward_list<T,Allocator>)
construye el list a partir de un rango
(función miembro pública de std::list<T,Allocator>)
construye el set a partir de un rango
(función miembro pública de std::set<Key,Compare,Allocator>)
construye el map a partir de un rango
(función miembro pública de std::map<Key,T,Compare,Allocator>)
construye el multiset a partir de un rango
(función miembro pública de std::multiset<Key,Compare,Allocator>)
construye el multimap a partir de un rango
(función miembro pública de std::multimap<Key,T,Compare,Allocator>)
construye el unordered_set a partir de un rango
(función miembro pública de std::unordered_set<Key,Hash,KeyEqual,Allocator>)
construye el unordered_map a partir de un rango
(función miembro pública de std::unordered_map<Key,T,Hash,KeyEqual,Allocator>)
construye el unordered_multiset a partir de un rango
(función miembro pública de std::unordered_multiset<Key,Hash,KeyEqual,Allocator>)
construye el unordered_multimap a partir de un rango
(función miembro pública de std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>)
construye el priority_queue a partir de un rango
(función miembro pública de std::priority_queue<T,Container,Compare>)
construye el queue a partir de un rango
(función miembro pública de std::queue<T,Container>)
construye el stack a partir de un rango
(función miembro pública de std::stack<T,Container>)
construye el flat_set a partir de un rango
(función miembro pública de std::flat_set<Key,Compare,KeyContainer>)
construye el flat_map a partir de un rango
(función miembro pública de std::flat_map<Key,T,Compare,KeyContainer,MappedContainer>)
construye el flat_multiset a partir de un rango
(función miembro pública de std::flat_multiset<Key,Compare,KeyContainer>)
construye el flat_multimap a partir de un rango
(función miembro pública de std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer>)
Biblioteca de cadenas
construye el basic_string desde un rango
(función miembro pública de std::basic_string<CharT,Traits,Allocator> )

Notas

Macro de prueba de características Valor Std Característica
__cpp_lib_containers_ranges 202202L (C++23) Constructores etiquetados para construir desde rango compatible con contenedor

Ejemplo

#include <cassert>
#include <string>
int main()
{
#ifdef __cpp_lib_containers_ranges
    auto const range = {0x43, 43, 43};
    std::string str{std::from_range, range}; // utiliza constructor etiquetado
    assert(str == "C++");
#endif
}

Véase también

etiqueta de construcción in-situ
(etiqueta)
indica que los elementos de un rango están ordenados (no se requiere unicidad)
(etiqueta)
indica que los elementos de un rango están ordenados y son únicos
(etiqueta)
(C++23)
construye un nuevo objeto no-vista a partir de un rango de entrada
(plantilla de función)