Namespaces
Variants

std::from_range, std::from_range_t

cppreference.net에서 가져옴
 
 
범위 라이브러리
범위 어댑터
 
헤더 <ranges>
struct from_range_t { explicit from_range_t() = default; };
(C++23부터)
inline constexpr std::from_range_t from_range {};
(C++23부터)

std::from_range는 적합한 컨테이너의 생성자에 전달하여 포함된 멤버가 범위로부터 생성됨을 나타낼 수 있는 모호성 제거 태그입니다.

해당 유형 std::from_range_t은 의도된 태그와 일치시키기 위해 생성자의 매개변수 목록에 사용될 수 있습니다.

표준 라이브러리

다음 표준 라이브러리 타입들은 생성자에서 std::from_range_t 타입을 사용합니다:

컨테이너 라이브러리
범위에서 vector을(를) 생성합니다
(std::vector<T,Allocator>의 공개 멤버 함수)
범위에서 inplace_vector을(를) 생성합니다
(std::inplace_vector<T,N>의 공개 멤버 함수)
범위에서 hive을(를) 생성합니다
(std::hive<T,Allocator>의 공개 멤버 함수)
범위에서 deque을(를) 생성합니다
(std::deque<T,Allocator>의 공개 멤버 함수)
범위에서 forward_list을(를) 생성합니다
(std::forward_list<T,Allocator>의 공개 멤버 함수)
범위에서 list을(를) 생성합니다
(std::list<T,Allocator>의 공개 멤버 함수)
범위에서 set을(를) 생성합니다
(std::set<Key,Compare,Allocator>의 공개 멤버 함수)
범위에서 map을(를) 생성합니다
(std::map<Key,T,Compare,Allocator>의 공개 멤버 함수)
범위에서 multiset을(를) 생성합니다
(std::multiset<Key,Compare,Allocator>의 공개 멤버 함수)
범위에서 multimap을(를) 생성합니다
(std::multimap<Key,T,Compare,Allocator>의 공개 멤버 함수)
범위에서 unordered_set을(를) 생성합니다
(std::unordered_set<Key,Hash,KeyEqual,Allocator>의 공개 멤버 함수)
범위에서 unordered_map을(를) 생성합니다
(std::unordered_map<Key,T,Hash,KeyEqual,Allocator>의 공개 멤버 함수)
범위에서 unordered_multiset을(를) 생성합니다
(std::unordered_multiset<Key,Hash,KeyEqual,Allocator>의 공개 멤버 함수)
범위에서 unordered_multimap을(를) 생성합니다
(std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>의 공개 멤버 함수)
범위에서 priority_queue을(를) 생성합니다
(std::priority_queue<T,Container,Compare>의 공개 멤버 함수)
범위에서 queue을(를) 생성합니다
(std::queue<T,Container>의 공개 멤버 함수)
범위에서 stack을(를) 생성합니다
(std::stack<T,Container>의 공개 멤버 함수)
범위에서 flat_set을(를) 생성합니다
(std::flat_set<Key,Compare,KeyContainer>의 공개 멤버 함수)
범위에서 flat_map을(를) 생성합니다
(std::flat_map<Key,T,Compare,KeyContainer,MappedContainer>의 공개 멤버 함수)
범위에서 flat_multiset을(를) 생성합니다
(std::flat_multiset<Key,Compare,KeyContainer>의 공개 멤버 함수)
범위에서 flat_multimap을(를) 생성합니다
(std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer>의 공개 멤버 함수)
문자열 라이브러리
범위로부터 basic_string 을 생성함
( std::basic_string<CharT,Traits,Allocator> 의 public 멤버 함수)

참고 사항

기능 테스트 매크로 값 표준 기능
__cpp_lib_containers_ranges 202202L (C++23) 컨테이너 호환 범위 에서 생성하기 위한 태그 생성자

예제

#include <cassert>
#include <string>
int main()
{
#ifdef __cpp_lib_containers_ranges
    auto const range = {0x43, 43, 43};
    std::string str{std::from_range, range}; // 태그된 생성자 사용
    assert(str == "C++");
#endif
}

참고 항목

인-플레이스 생성 태그
(태그)
범위의 요소들이 정렬되어 있음을 나타냄 (유일성은 요구되지 않음)
(태그)
범위의 요소들이 정렬되어 있고 유일함을 나타냄
(태그)
(C++23)
입력 범위로부터 새로운 비-뷰 객체를 생성함
(함수 템플릿)