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 , как описано ниже. В противном случае предоставляет тип-член 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)

Пример

Смотрите также

пустые типы классов, используемые для указания категорий итераторов
(класс)
пустые типы классов, используемые для указания категорий итераторов
(класс)
класс совместимых характеристик, который собирает связанные типы итератора
(псевдоним шаблона)