ranges_view_interface

ranges_view_interface (뷰 인터페이스)

std::ranges::view_interface은 뷰 인터페이스를 정의하기 위한 헬퍼 클래스 템플릿이에요. C++20부터 사용할 수 있어요.

출처: cppreference

본문

<ranges> 헤더에 정의되어 있고, 시그니처는 다음과 같아요.

template< class D >
    requires std::is_class_v<D> && std::same_as<D, std::remove_cv_t<D>>
class view_interface;

(since C++20)

std::ranges::view_interface은 뷰 인터페이스를 정의하기 위한 헬퍼 클래스 템플릿이에요.

view_interface는 보통 CRTP로 사용돼요:

class my_view : public std::ranges::view_interface<my_view>
{
public:
    auto begin() const { /*...*/ }
    auto end() const { /*...*/ }
};

멤버 함수 (Member functions)

  • empty — 뷰가 비었는지 확인 (derived::begin == derived::end)
  • operator bool — 뷰가 비어 있지 않은지 확인
  • data — 뷰의 데이터 포인터 반환 (contiguous_range일 때)
  • size — 뷰의 크기 반환 (sized_range일 때)
  • front — 첫 번째 요소 반환
  • back — 마지막 요소 반환 (bidirectional_range일 때)
  • operator[] — 인덱스 요소 반환 (random_access_range일 때)
  • cbegin / cend / crbegin / crend — 상수·역방향 반복자 반환

참고 (Notes)

이 인터페이스에서 파생된 뷰는 이들 멤버를 자동으로 얻어요. D는 파생 클래스 타입이에요.

더 알아보기 (Learn more)

cppreference