Namespaces
Variants

std:: from_range, std:: from_range_t

From cppreference.net
Ranges library
Range adaptors
Défini dans l'en-tête <ranges>
struct from_range_t { explicit from_range_t ( ) = default ; } ;
(depuis C++23)
inline constexpr std :: from_range_t from_range { } ;
(depuis C++23)

std::from_range est une balise de désambiguïsation qui peut être transmise aux constructeurs des conteneurs appropriés pour indiquer que le membre contenu est construit à partir d'une plage.

Le type correspondant std::from_range_t peut être utilisé dans la liste des paramètres du constructeur pour correspondre à l'étiquette prévue.

Table des matières

Bibliothèque standard

Les types suivants de la bibliothèque standard utilisent std::from_range_t dans leurs constructeurs :

Bibliothèque de conteneurs
construit le vector à partir d'une plage
(fonction membre publique de std::vector<T,Allocator> )
construit le inplace_vector à partir d'une plage
(fonction membre publique de std::inplace_vector<T,N> )
construit le hive à partir d'une plage
(fonction membre publique de Template:cpp/container/hive/title )
construit le deque à partir d'une plage
(fonction membre publique de std::deque<T,Allocator> )
construit le forward_list à partir d'une plage
(fonction membre publique de std::forward_list<T,Allocator> )
construit la list à partir d'une plage
(fonction membre publique de std::list<T,Allocator> )
construit le set à partir d'une plage
(fonction membre publique de std::set<Key,Compare,Allocator> )
construit la map à partir d'une plage
(fonction membre publique de std::map<Key,T,Compare,Allocator> )
construit le multiset à partir d'une plage
(fonction membre publique de std::multiset<Key,Compare,Allocator> )
construit le multimap à partir d'une plage
(fonction membre publique de std::multimap<Key,T,Compare,Allocator> )
construit l' unordered_set à partir d'une plage
(fonction membre publique de std::unordered_set<Key,Hash,KeyEqual,Allocator> )
construit l' unordered_map à partir d'une plage
(fonction membre publique de std::unordered_map<Key,T,Hash,KeyEqual,Allocator> )
construit l' unordered_multiset à partir d'une plage
(fonction membre publique de std::unordered_multiset<Key,Hash,KeyEqual,Allocator> )
construit l' unordered_multimap à partir d'une plage
(fonction membre publique de std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator> )
construit la priority_queue à partir d'une plage
(fonction membre publique de std::priority_queue<T,Container,Compare> )
construit la queue à partir d'une plage
(fonction membre publique de std::queue<T,Container> )
construit la stack à partir d'une plage
(fonction membre publique de std::stack<T,Container> )
construit le flat_set à partir d'une plage
(fonction membre publique de std::flat_set<Key,Compare,KeyContainer> )
construit le flat_map à partir d'une plage
(fonction membre publique de std::flat_map<Key,T,Compare,KeyContainer,MappedContainer> )
construit le flat_multiset à partir d'une plage
(fonction membre publique de std::flat_multiset<Key,Compare,KeyContainer> )
construit le flat_multimap à partir d'une plage
(fonction membre publique de std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer> )
Bibliothèque de chaînes de caractères
construit le basic_string à partir d'une plage
(fonction membre publique de std::basic_string<CharT,Traits,Allocator> )

Notes

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_containers_ranges 202202L (C++23) Constructeurs étiquetés pour construire à partir d'un intervalle compatible avec le conteneur

Exemple

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

Voir aussi

étiquette de construction en place
(étiquette)
indique que les éléments d'une plage sont triés (l'unicité n'est pas requise)
(étiquette)
indique que les éléments d'une plage sont triés et uniques
(étiquette)
(C++23)
construit un nouvel objet non-vue à partir d'une plage d'entrée
(modèle de fonction)