std::ranges::iterator_t, std::ranges::const_iterator_t, std::ranges::sentinel_t, std::ranges::const_sentinel_t
From cppreference.com
| ヘッダ <ranges> で定義 |
||
| template< class T > using iterator_t = decltype(ranges::begin(std::declval<T&>())); |
(1) | (C++20以降) |
| template< ranges::range R > using const_iterator_t = decltype(ranges::cbegin(std::declval<R&>())); |
(2) | (C++23から) |
| template< ranges::range R > using sentinel_t = decltype(ranges::end(std::declval<R&>())); |
(3) | (C++20以降) |
| template< ranges::range R > using const_sentinel_t = decltype(ranges::cend(std::declval<R&>())); |
(4) | (C++23から) |
1)
T 型のイテレータ型を取得するために使用されます。2)
range 型 R の定数イテレータ型を取得するために使用されます。3) 範囲型
R のセンチネル型を取得するために使用されます。4) 範囲型
R の定数センチネル型を取得するために使用されます。目次 |
[編集] テンプレートパラメータ
| T | - | std::ranges::begin で使用できる型 |
| R | - | a range 型または sized_range 型 |
[編集] ノート
iterator_t は、境界が不明な配列など、範囲型でない型にも適用できます。
[編集] 欠陥報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 3946 | C++23 | const_iterator_t と const_sentinel_t は、それぞれ ranges::cbegin と ranges::cend の結果と一貫性がありませんでした。(上記の問題が)修正されました。 |
(修正されました) |
[編集] 関連項目
| (C++20)(C++20)(C++23)(C++20)(C++20)(C++20) |
イテレータの関連型を計算する (エイリアステンプレート) |
| (C++20)(C++20)(C++20) |
rangeのサイズ型、差分型、値型を取得する (エイリアステンプレート) |
| rangeの参照型を取得する (エイリアステンプレート) |