From cppreference.com
template<classT>conceptrandom_access_range=ranges::bidirectional_range<T>&&std::random_access_iterator<ranges::iterator_t<T>>;(since C++20)The random_access_range concept is a refinement of
for which ranges::begin returns a model of
.
Example
Run this code
#include<array>#include<deque>#include<list>#include<ranges>#include<set>#include<valarray>#include<vector>template<typenameT>conceptRAR=std::ranges::random_access_range<T>;intmain(){inta[4];static_assert(RAR<std::vector<int>>andRAR<std::vector<bool>>andRAR<std::deque<int>>andRAR<std::valarray<int>>andRAR<decltype(a)>andnotRAR<std::list<int>>andnotRAR<std::set<int>>andRAR<std::array<std::list<int>,42>>);}See also