命名空间
变体
操作

std::ranges::sized_range, std::ranges::disable_sized_range

来自 cppreference.cn
< cpp‎ | ranges
 
 
范围库
范围适配器
 
定义于头文件 <ranges>
template< class T >

concept sized_range = ranges::range<T> &&
    requires(T& t) {
        ranges::size(t);

    };
(1) (自 C++20 起)
template< class >
constexpr bool disable_sized_range = false;
(2) (自 C++20 起)
1) sized_range 概念指定了 range 类型的要求,该类型通过 size 函数在常数时间内知道其大小。
2) disable_sized_range 的存在是为了允许使用提供 size 函数(作为成员或非成员)但实际上不 модели sized_range 的范围类型。用户可以为 cv-unqualified 程序定义的类型特化 disable_sized_range。此类特化应可在常量表达式中使用,并且类型为 const bool

内容

[编辑] 语义要求

1) 给定类型为 std::remove_reference_t<T> 的左值 t,仅当满足以下条件时,T 才 模型 sized_range

[编辑] 注解

disable_sized_range 不能用于选择退出迭代器和 sentinel 满足 sized_sentinel_for 的范围;必须改用 std::disable_sized_sentinel_for

disable_sized_range 不能为数组类型或引用类型特化。

[编辑] 示例

#include <forward_list>
#include <list>
#include <ranges>
 
static_assert
(
    std::ranges::sized_range<std::list<int>> and
    not std::ranges::sized_range<std::forward_list<int>>
);
 
int main() {}

[编辑] 参见

指定迭代器类型满足 random_access_iterator 的范围
(概念) [编辑]
指定迭代器类型满足 contiguous_iterator 的范围
(概念) [编辑]