std::experimental::ranges:: iterator_category
From cppreference.net
<
cpp
|
experimental
|
ranges
|
Defined in header
<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) | |
Computes the iterator category of the class
I
, if any. Users may specialize
iterator_category
for a program-defined type.
1)
Primary template is an empty struct.
2)
Specialization for pointers. If
T
is an object type, provides a member type
type
equal to
ranges::random_access_iterator_tag
. Otherwise, there is no member
type
.
3)
Specialization for const-qualified types.
4)
Specialization for types that define a public and accessible member type
iterator_category
. If
T::iterator_category
is the same as or derived from one of iterator category tags in namespace
std
, it is mapped to the corresponding tag in the namespace
ranges
as described below. Otherwise, provides a member type
type
equal to
T::iterator_category
.
-
If
T::iterator_categoryis the same as or derives from std::random_access_iterator_tag , provides a member typetypeequal to ranges::random_access_iterator_tag . -
Otherwise, if
T::iterator_categoryis the same as or derives from std::bidirectional_iterator_tag , provides a member typetypeequal to ranges::bidirectional_iterator_tag . -
Otherwise, if
T::iterator_categoryis the same as or derives from std::forward_iterator_tag , provides a member typetypeequal to ranges::forward_iterator_tag . -
Otherwise, if
T::iterator_categoryis the same as or derives from std::input_iterator_tag , provides a member typetypeequal to ranges::input_iterator_tag . -
Otherwise, if
T::iterator_categoryis the same as or derives from std::output_iterator_tag , there is no membertype.
Helper alias template
|
template
<
class
T
>
using iterator_category_t = typename ranges :: iterator_category < T > :: type ; |
(ranges TS) | |
Example
|
This section is incomplete
Reason: no example |
See also
|
empty class types used to indicate iterator categories
(class) |
|
|
empty class types used to indicate iterator categories
(class) |
|
|
compatibility traits class that collects an iterator’s associated types
(alias template) |