.. _random_access_range: ************************* meta::random_access_range ************************* Defined in header ````. .. code-block:: cpp template concept random_access_range = meta::bidirectional_range && meta::random_access_iterator>; Pre-C++20 implementation of the :rangeconcept:`random_access_range` concept. ---- Concept emulation ================= .. code-block:: cpp namespace mgs { namespace meta { template struct is_random_access_range { /* ... */ }; template constexpr auto is_random_access_range_v = is_random_access_range::value; template >> using random_access_range = T; } // namespace meta } // namespace mgs Example ======= .. code-block:: cpp #include using namespace mgs::meta; static_assert(is_random_access_range_v, ""); static_assert(is_random_access_range_v, ""); static_assert(!is_random_access_range_v>, ""); See also ======== * :ref:`range` * :ref:`random_access_iterator` * :ref:`iterator_t`