Defined in header <ranges> | ||
---|---|---|
template< class T > concept constant_range = ranges::input_range<T> && /*constant-iterator*/<ranges::iterator_t<T>>; | (1) | (since C++23) |
Helper concepts | ||
template< class T > concept /*constant-iterator*/ = std::input_iterator<T> && std::same_as<std::iter_const_reference_t<T>, std::iter_reference_t<T>>; | (2) | (since C++23) |
constant_range
concept is a refinement of range
for which ranges::begin
returns a constant iterator./*constant-iterator*/<T>
is satisfied when the result of the indirection operation of the input iterator is its const reference type which implies read-only.#include <ranges> #include <vector> #include <string_view> #include <span> int main() { static_assert(not std::ranges::constant_range<std::vector<int>> and std::ranges::constant_range<const std::vector<int>> and std::ranges::constant_range<std::string_view> and not std::ranges::constant_range<std::span<int>> and not std::ranges::constant_range<const std::span<int>> and std::ranges::constant_range<std::span<const int>>); }
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/ranges/constant_range