std::ranges::common_range
С ru.cppreference.net
| Определен в заголовке <ranges>
|
||
template< class T >
concept common_range =
ranges::range<T> && std::same_as<ranges::iterator_t<T>, ranges::sentinel_t<T>>;
|
(начиная с C++20) | |
Концепт common_range является уточнением range, для которого std::ranges::begin() и std::ranges::end() возвращают один и тот же тип (например, все контейнеры стандартной библиотеки).
Пример
Запустить этот код
#include <ranges> struct A { char* begin(); char* end(); }; static_assert( std::ranges::common_range<A> ); struct B { char* begin(); bool end(); }; // не common_range: begin/end имеют разные типы static_assert( not std::ranges::common_range<B> ); struct C { char* begin(); }; // не common_range, и даже не range: нет end() static_assert( not std::ranges::common_range<C> ); int main() {}
Смотрите также
преобразует
view
в
common_range
(шаблон класса) (объект адаптера диапазона) |