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
, как описано ниже. В противном случае предоставляет тип-член
type
, равный
T::iterator_category
.
-
Если
T::iterator_categoryсовпадает или наследуется от std::random_access_iterator_tag , предоставляет тип-членtype, равный ranges::random_access_iterator_tag . -
Иначе, если
T::iterator_categoryсовпадает или наследуется от std::bidirectional_iterator_tag , предоставляет тип-членtype, равный ranges::bidirectional_iterator_tag . -
Иначе, если
T::iterator_categoryсовпадает или наследуется от std::forward_iterator_tag , предоставляет тип-членtype, равный ranges::forward_iterator_tag . -
Иначе, если
T::iterator_categoryсовпадает или наследуется от std::input_iterator_tag , предоставляет тип-членtype, равный ranges::input_iterator_tag . -
Иначе, если
T::iterator_categoryсовпадает или наследуется от std::output_iterator_tag , тип-членtypeотсутствует.
Вспомогательный псевдоним шаблона
|
template
<
class
T
>
using iterator_category_t = typename ranges :: iterator_category < T > :: type ; |
(ranges TS) | |
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
пустые типы классов, используемые для указания категорий итераторов
(класс) |
|
|
пустые типы классов, используемые для указания категорий итераторов
(класс) |
|
|
класс совместимых характеристик, который собирает связанные типы итератора
(псевдоним шаблона) |