- ranges[meta header]
- std::ranges[meta namespace]
- class template[meta id-type]
- cpp20[meta cpp]
namespace std::ranges {
template<input_or_output_iterator I, sentinel_for<I> S = I, subrange_kind K = sized_sentinel_for<S, I> ? subrange_kind::sized : subrange_kind::unsized>
requires (K == subrange_kind::sized || !sized_sentinel_for<S, I>)
class subrange : public view_interface<subrange<I, S, K>> { …… };
}
- input_or_output_iterator[link /reference/iterator/input_or_output_iterator.md]
- sized_sentinel_for[link /reference/iterator/sized_sentinel_for.md]
- sentinel_for[link /reference/iterator/sentinel_for.md]
- subrange_kind[link subrange_kind.md]
- view_interface[link view_interface.md]
subrange
は、イテレータi
と番兵s
が表すイテレータ範囲[i, s)
をRangeとして扱うクラステンプレート。
subrange
はborrowed_range
、view
のモデルであり、また、大きさ2のtuple-likeな型である。第0要素はイテレータ、第1要素は番兵。
subrange
はsized_range
である場合(K == subrange_kind::sized
)とそうでない場合(K == subrange_kind::unsized
)の両方をサポートする。
また、元のRangeがsized_range
でなくても、長さを別に指定することでsized_range
になれる。
subrange_kind
K
がsized
である。または、イテレータI
と番兵S
がsized_sentinel_for
を満たさない。
名前 |
説明 |
対応バージョン |
tuple_size |
静的な要素数取得(class template) |
C++20 |
tuple_element |
静的な要素の型取得(class template) |
C++20 |
get |
要素を取得する(function template) |
C++20 |
- Clang: 13.0.0 [mark verified]
- GCC: 10.1.0 [mark verified]
- ICC: ?
- Visual C++: 2019 Update 10 [mark verified]