Namespaces
Variants

std::ranges:: common_range

From cppreference.net
Ranges library
Range adaptors
定义于头文件 <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
(类模板) (范围适配器对象)