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