Namespaces
Variants

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
(类模板) (范围适配器对象)