ranges_borrowed_iterator_t
ranges_borrowed_iterator_t (빌린 반복자 타입)
std::ranges::borrowed_iterator_t와 borrowed_subrange_t는 R이 borrowed_range면 실제 반복자/하위 범위 타입을, 그 외에는 std::ranges::dangling을 반환하는 별칭 템플릿이에요. C++20부터 사용할 수 있어요.
출처: cppreference
본문
<ranges> 헤더에 정의되어 있고, 시그니처는 다음과 같아요.
template< ranges::range R >
using borrowed_iterator_t = /* see below */;
(1) (since C++20)
template< ranges::range R >
using borrowed_subrange_t = /* see below */;
(2) (since C++20)
-
- R이 borrowed_range를 모델링하면
std::ranges::iterator_t<R>이고, 그 외에는std::ranges::dangling이에요.
- R이 borrowed_range를 모델링하면
-
- R이 borrowed_range를 모델링하면
std::ranges::subrange<std::ranges::iterator_t<R>>이고, 그 외에는std::ranges::dangling이에요.
- R이 borrowed_range를 모델링하면
이 두 별칭 템플릿은 일부 제약된 알고리즘이 잠재적으로 매달린 반복자나 뷰를 반환하는 것을 피하기 위해 사용돼요.
가능한 구현 (Possible implementation)
namespace std::ranges {
template<range R>
using borrowed_iterator_t = conditional_t<borrowed_range<R>,
iterator_t<R>, dangling>;
template<range R>
using borrowed_subrange_t = conditional_t<borrowed_range<R>,
subrange<iterator_t<R>>, dangling>;
}