Namespaces
Variants

deduction guides for std::ranges::subrange

From cppreference.net
Ranges library
Range adaptors
헤더 파일에 정의됨 <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 && , /*부호없는-유사-타입*/ < ranges:: range_difference_t < R >> ) - >
subrange < ranges:: iterator_t < R > , ranges:: sentinel_t < R > ,

ranges :: subrange_kind :: sized > ;
(4) (C++20 이후)

이러한 deduction guides std::ranges::subrange 를 위해 제공됩니다.

1) 반복자와 센티널의 타입으로부터 템플릿 인자를 추론합니다. subrange std:: sized_sentinel_for < S, I > 가 만족되는 경우 기본 템플릿 인자에 의해 결정된 대로 크기가 있는 것으로 간주됩니다.
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가 제공됨 제거됨