std::experimental::ranges:: iterator_category
From cppreference.net
<
cpp
|
experimental
|
ranges
|
헤더 파일에 정의됨
<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
;
}
|
(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) | |
예제
|
이 섹션은 불완전합니다
이유: 예시가 없음 |
참고 항목
|
반복자 카테고리를 나타내는 데 사용되는 빈 클래스 타입
(클래스) |
|
|
반복자 카테고리를 나타내는 데 사용되는 빈 클래스 타입
(클래스) |
|
|
반복자의 관련 타입들을 수집하는 호환성 특성 클래스
(별칭 템플릿) |