std::from_range, std::from_range_t
From cppreference.com
                    
                                        
                    
                    
                                                            
                    |   Defined in header  <ranges>
  | 
||
|   struct from_range_t { explicit from_range_t() = default; };  | 
(since C++23) | |
|   inline constexpr std::from_range_t from_range {};  | 
(since C++23) | |
std::from_range is a disambiguation tag that can be passed to the constructors of the suitable containers to indicate that the contained member is range constructed.
The corresponding type std::from_range_t can be used in the constructor's parameter list to match the intended tag.
Standard library
The following standard library types use std::from_range_t type in their constructors:
 Containers library | |
|    (C++23)  | 
  constructs the vector from a range (public member function of std::vector<T,Allocator>)
 | 
|    (C++26)  | 
  constructs the inplace_vector from a range (public member function of std::inplace_vector<T,N>)
 | 
|    (C++23)  | 
  constructs the deque from a range (public member function of std::deque<T,Allocator>)
 | 
|    (C++23)  | 
  constructs the forward_list from a range (public member function of std::forward_list<T,Allocator>)
 | 
|    (C++23)  | 
  constructs the list from a range (public member function of std::list<T,Allocator>)
 | 
|    (C++23)  | 
  constructs the set from a range (public member function of std::set<Key,Compare,Allocator>)
 | 
|    (C++23)  | 
  constructs the map from a range (public member function of std::map<Key,T,Compare,Allocator>)
 | 
|    (C++23)  | 
  constructs the multiset from a range (public member function of std::multiset<Key,Compare,Allocator>)
 | 
|    (C++23)  | 
  constructs the multimap from a range (public member function of std::multimap<Key,T,Compare,Allocator>)
 | 
|    (C++23)  | 
  constructs the unordered_set from a range (public member function of std::unordered_set<Key,Hash,KeyEqual,Allocator>)
 | 
|    (C++23)  | 
  constructs the unordered_map from a range (public member function of std::unordered_map<Key,T,Hash,KeyEqual,Allocator>)
 | 
|    (C++23)  | 
  constructs the unordered_multiset from a range (public member function of std::unordered_multiset<Key,Hash,KeyEqual,Allocator>)
 | 
|    (C++23)  | 
  constructs the unordered_multimap from a range (public member function of std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>)
 | 
|    (C++23)  | 
  constructs the priority_queue from a range (public member function of std::priority_queue<T,Container,Compare>)
 | 
|    (C++23)  | 
  constructs the queue from a range (public member function of std::queue<T,Container>)
 | 
|    (C++23)  | 
  constructs the stack from a range (public member function of std::stack<T,Container>)
 | 
|    (C++23)  | 
  constructs the flat_set from a range (public member function of std::flat_set<Key,Compare,KeyContainer>)
 | 
|    (C++23)  | 
  constructs the flat_map from a range (public member function of std::flat_map<Key,T,Compare,KeyContainer,MappedContainer>)
 | 
|    (C++23)  | 
  constructs the flat_multiset from a range (public member function of std::flat_multiset<Key,Compare,KeyContainer>)
 | 
|    (C++23)  | 
  constructs the flat_multimap from a range (public member function of std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer>)
 | 
 Strings library | |
|    (C++23)  | 
  constructs the basic_string from a range (public member function of std::basic_string<CharT,Traits,Allocator>)
 | 
Notes
| Feature-test macro | Value | Std | Feature | 
|---|---|---|---|
__cpp_lib_containers_ranges | 
202202L | 
(C++23) | Tagged constructors to construct from container compatible range | 
Example
Run this code
#include <cassert> #include <string> int main() { #ifdef __cpp_lib_containers_ranges auto const range = {0x43, 43, 43}; std::string str{std::from_range, range}; // uses tagged constructor assert(str == "C++"); #endif }
See also
|  in-place construction tag (tag)  | |
|  indicates that elements of a range are sorted (uniqueness is not required) (tag)  | |
|   (C++23)  | 
 indicates that elements of a range are sorted and unique (tag)  | 
|    (C++23)  | 
  constructs a new non-view object from an input range  (function template)  |