Namespaces
Variants

std::ranges::view_interface<D>::operator[]

cppreference.net에서
 
 
Ranges 라이브러리
Range 어댑터
 
 
template<ranges::random_access_range R = D>
constexpr decltype(auto) operator[]( ranges::range_difference_t<R> n );
(1) (C++20 이후)
template<ranges::random_access_range R = const D>
constexpr decltype(auto) operator[]( ranges::range_difference_t<R> n ) const;
(2) (C++20 이후)

멤버 함수 operator[]의 기본 구현은 시작 반복자를 기준으로 지정된 오프셋에 있는 요소를 가져오며, 반복자 유형의 operator[]을 재사용합니다.

1) derived을 static_cast<D&>(*this)라고 합니다. return ranges::begin(derived)[n];과 동일합니다.
2) (1)과 동일하지만, derived이(가) static_cast<const D&>(*this)이라는 점이 다릅니다.

매개변수

n - 반환할 요소의 위치

반환값

시작 반복자로부터 오프셋 n 에 위치한 요소입니다.

참고 사항

C++20에서, 표준 라이브러리 내 std::ranges::view_interface 에서 파생된 어떤 타입도 자체적인 operator [ ] 멤버 함수를 제공하지 않습니다.

그러나 다음과 같은 파생 타입들은 기본 구현을 사용할 수 없습니다. 왜냐하면 이들은 절대 random_access_range 를 만족하지 않기 때문입니다:

상속된 operator [ ] 멤버 함수는 std::ranges::empty_view 에서 사용 가능하지만, 이를 호출하면 항상 정의되지 않은 동작(undefined behavior)이 발생합니다.

예제