命名空间
变体
操作

无异常输入迭代器无异常前向迭代器无异常哨兵无异常输入范围无异常前向范围

来自 cppreference.com
< cpp‎ | memory
 
 
实用程序库
语言支持
类型支持 (基本类型,RTTI)
库特性测试宏 (C++20)
动态内存管理
程序实用程序
协程支持 (C++20)
可变参数函数
调试支持
(C++26)
三路比较
(C++20)
(C++20)(C++20)(C++20)
(C++20)(C++20)(C++20)
通用实用程序
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中已弃用)
整数比较函数
(C++20)(C++20)(C++20)   
(C++20)
交换类型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
通用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
基本字符串转换
(C++17)
(C++17)

 
动态内存管理
未初始化内存算法
受约束的未初始化内存算法
分配器
垃圾收集支持
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)



 
template< class I >

concept no-throw-input-iterator =
    std::input_iterator<I> &&
    std::is_lvalue_reference_v<std::iter_reference_t<I>> &&

    std::same_as<std::remove_cvref_t<std::iter_reference_t<I>>, std::iter_value_t<I>>;
(1) (仅供说明*)
template< class I >

concept no-throw-forward-iterator =
    no-throw-input-iterator<I> &&
    std::forward_iterator<I> &&

    no-throw-sentinel-for<I, I>;
(2) (仅供说明*)
template< class S, class I >
concept no-throw-sentinel-for = std::sentinel_for<S, I>;
(3) (仅供说明*)
template< class R >

concept no-throw-input-range =
    ranges::range<R> &&
    no-throw-input-iterator<ranges::iterator_t<R>> &&

    no-throw-sentinel-for<ranges::sentinel_t<R>, ranges::iterator_t<R>>;
(4) (仅供说明*)
template< class R >

concept no-throw-forward-range =
    no-throw-input-range<R> &&

    no-throw-forward-iterator<ranges::iterator_t<R>>;
(5) (仅供说明*)

这些仅供说明的概念指定从算法对迭代器、哨兵和范围所需的操作中不会抛出异常。

1) 无异常输入迭代器 概念要求解引用迭代器产生左值,例如 contiguous_iteratorLegacyForwardIterator

[编辑] 语义要求

与所有标准概念一样,此处列出的每个概念只有在它包含的所有概念都被建模时才被建模。

1) 类型 I 仅当从递增、复制构造、移动构造、复制赋值、移动赋值或通过有效迭代器进行间接访问时没有抛出异常,才符合 no-throw-input-iterator 模型。
3) 类型 SI 仅当从复制构造、移动构造、复制赋值、移动赋值或在 IS 类型的有效值之间进行比较时没有抛出异常,才符合 no-throw-sentinel-for 模型。
4) 类型 R 仅当从对类型 R 的对象调用 ranges::beginranges::end 时没有抛出异常,才符合 no-throw-input-range 模型。

[edit] 注释

这些概念允许在迭代器和哨兵上进行一些操作抛出异常,例如在无效值上进行操作。

[edit] 参见

指定一个类型是输入迭代器,也就是说,它的引用值可以被读取,并且它可以被预增和后增。
(概念) [edit]
指定一个 input_iterator 是一个前向迭代器,支持相等比较和多遍遍历。
(概念) [edit]
指定一个类型是 input_or_output_iterator 类型的哨兵。
(概念) [edit]
指定一个范围,其迭代器类型满足 input_iterator
(概念) [edit]
指定一个范围,其迭代器类型满足 forward_iterator
(概念) [edit]