namespace std::ranges {
template<class T>
concept input_range = range<T> && input_iterator<iterator_t<T>>;
}
概要
input_range
は、イテレータがinput_iterator
であるRangeを表すコンセプトである。
モデル
型T
がinput_range
のモデルとなるのは、T
がrange
のモデルであり、かつそのイテレータがinput_iterator
のモデルである場合である。
例
#include <ranges>
#include <iostream>
int main() {
using namespace std;
// basic_istream_viewはforward_rangeではなく、input_range
static_assert(!ranges::forward_range<decltype(views::istream<int>(cin))>);
static_assert(ranges::input_range<decltype(views::istream<int>(cin))>);
}
出力
バージョン
言語
- C++20
処理系
- Clang: 13.0.0 ✅
- GCC: 10.1.0 ✅
- ICC: ??
- Visual C++: 2019 Update 10 ✅