서브레인지(subrange)에 대한 연역 가이드std::ranges::subrange
From ko.cppreference.net
| 헤더 <ranges>
|
||
template< std::input_or_output_iterator I, std::sentinel_for<I> S >
subrange(I, S) -> subrange<I, S>;
|
에 정의됨 (1) | (C++20부터) |
template< std::input_or_output_iterator I, std::sentinel_for<I> S >
subrange(I, S, /*make-unsigned-like-t*/<std::iter_difference_t<I>>) ->
subrange<I, S, ranges::subrange_kind::sized>;
|
(2) | (C++20부터) |
template< ranges::borrowed_range<R> >
subrange(R&&) ->
subrange<ranges::iterator_t<R>, ranges::sentinel_t<R>,
(ranges::sized_range<R> ||
std::sized_sentinel_for<ranges::sentinel_t<R>,
ranges::iterator_t<R>>) ?
ranges::subrange_kind::sized : ranges::subrange_kind::unsized>;
|
(3) | (C++20부터) |
template< ranges::borrowed_range<R> >
subrange(R&&, /*make-unsigned-like-t*/<ranges::range_difference_t<R>>) ->
subrange<ranges::iterator_t<R>, ranges::sentinel_t<R>,
ranges::subrange_kind::sized>;
|
(4) | (C++20부터) |
다음 연역 가이드는 std::ranges::subrange에 대해 제공됩니다.
1) 반복자와 센티널의 타입으로부터 템플릿 인자를 연역합니다. 기본 템플릿 인자에 의해 결정되는 대로
subrange가 std::sized_sentinel_for<S, I>을 만족하면 크기가 있는(sized) 것입니다.2) 반복자와 센티널의 타입으로부터 템플릿 인자를 연역하고, 범위의 크기가 지정됩니다.
subrange는 항상 크기가 있습니다.3) 범위의 타입으로부터 템플릿 인자를 연역합니다. 범위나 그 반복자 및 센티널로부터 크기를 얻을 수 있으면
subrange는 크기가 있습니다.4) 범위의 타입으로부터 템플릿 인자를 연역하고, 범위의 크기가 지정됩니다.
subrange는 항상 크기가 있습니다./* make-unsigned-like-t */의 정의는 make-unsigned-like-t 를 참조하십시오.
참고 사항
subrange
객체를 생성하는 동안,
- (1,2) 의 경우, 반복자-감시자 쌍이 유효한 범위를 나타내지 않으면 동작이 정의되지 않습니다,
- (2,4) 의 경우, 주어진 크기가 범위의 크기와 같지 않으면 동작이 정의되지 않습니다.
예제
|
이 섹션은 불완전합니다
이유: 예제 없음 |
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 3404 | C++20 | pair-like 타입들로부터 의미 없는 deduction guide가 제공됨 | 제거됨 |