Namespaces
Variants

std::experimental::ranges:: iterator_category

From cppreference.net
헤더 파일에 정의됨 <experimental/ranges/iterator>
template < class I >
struct iterator_category { } ;
(1)
template < class T >
struct iterator_category < T * > ;
(2)
template < class T >
struct iterator_category < const T > : iterator_category < T > { } ;
(3)
template < class T >

requires requires { typename T :: iterator_category ; }

struct iterator_category < T > ;
(4)

클래스 I 의 반복자 카테고리를 계산합니다(존재하는 경우). 사용자는 프로그램 정의 타입에 대해 iterator_category 를 특수화할 수 있습니다.

1) 기본 템플릿은 빈 구조체입니다.
2) 포인터에 대한 특수화. 만약 T 가 객체 타입인 경우, type 멤버 타입을 ranges::random_access_iterator_tag 와 동일하게 제공합니다. 그렇지 않은 경우, type 멤버는 존재하지 않습니다.
3) const 한정 타입에 대한 특수화.
4) 공개적이고 접근 가능한 멤버 타입 iterator_category 를 정의하는 타입들에 대한 특수화. T::iterator_category std 네임스페이스 내의 반복자 카테고리 태그 중 하나와 동일하거나 이를 상속받은 경우, 아래에 설명된 대로 ranges 네임스페이스의 해당 태그로 매핑됩니다. 그렇지 않으면, T::iterator_category 와 동일한 멤버 타입 type 을 제공합니다.
  • 만약 T::iterator_category std::random_access_iterator_tag 와 동일하거나 이를 상속받은 경우, ranges::random_access_iterator_tag 와 동일한 멤버 타입 type 을 제공합니다.
  • 그렇지 않고, T::iterator_category std::bidirectional_iterator_tag 와 동일하거나 이를 상속받은 경우, ranges::bidirectional_iterator_tag 와 동일한 멤버 타입 type 을 제공합니다.
  • 그렇지 않고, T::iterator_category std::forward_iterator_tag 와 동일하거나 이를 상속받은 경우, ranges::forward_iterator_tag 와 동일한 멤버 타입 type 을 제공합니다.
  • 그렇지 않고, T::iterator_category std::input_iterator_tag 와 동일하거나 이를 상속받은 경우, ranges::input_iterator_tag 와 동일한 멤버 타입 type 을 제공합니다.
  • 그렇지 않고, T::iterator_category std::output_iterator_tag 와 동일하거나 이를 상속받은 경우, type 멤버가 존재하지 않습니다.

헬퍼 앨리어스 템플릿

template < class T >
using iterator_category_t = typename ranges :: iterator_category < T > :: type ;
(범위 TS)

예제

참고 항목

반복자 카테고리를 나타내는 데 사용되는 빈 클래스 타입
(클래스)
반복자 카테고리를 나타내는 데 사용되는 빈 클래스 타입
(클래스)
반복자의 관련 타입들을 수집하는 호환성 특성 클래스
(별칭 템플릿)