std::experimental::ranges::iterator_category
From cppreference.com
< 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) | |
クラスIのイテレータカテゴリを計算します。ユーザーは、プログラム定義型のためにiterator_categoryを特殊化できます。
1) プライマリテンプレートは空の構造体です。
2) ポインタの特殊化。
Tがオブジェクト型の場合、ranges::random_access_iterator_tagに等しいメンバ型typeを提供します。それ以外の場合は、メンバ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; |
(ranges TS) | |
[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 関連項目
| イテレータカテゴリを示すために使用される空のクラス型 (クラス) | |
| イテレータカテゴリを示すために使用される空のクラス型 (class) | |
| イテレータの関連型を収集する互換性トレイトクラス。 (alias template) |