std::ranges::common_range
来自 zh.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
(类模板) (范围适配器对象) |