no-throw-input-iterator, no-throw-forward-iterator, no-throw-sentinel-for, no-throw-input-range, no-throw-forward-range

来自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) no-throw-input-iterator 概念要求解引用迭代器产生左值,类似 contiguous_iterator老式向前迭代器 (LegacyForwardIterator)

语义要求

类似所有标准概念,此处列出的每个概念,仅若其所蕴含的所有概念均被实现时才得以实现。

1) 类型 I 实现 no-throw-input-iterator,仅若自增、复制构造、移动构造、复制赋值、移动赋值或通过合法迭代器的间接不抛出异常。
3) 类型 SI 实现 no-throw-sentinel-for,仅若复制构造、移动构造、复制赋值、移动赋值或类型 IS 的合法值间的比较不抛异常。
4) 类型 R 实现 no-throw-input-range,仅若在 R 类型对象上调用 ranges::beginranges::end 不抛异常。

注解

这些概念允许迭代器和哨位上的某些操作抛出异常,例如非法值上的操作。

参阅

指定类型为输入迭代器,即可读取其所引用的值,且可前/后自增
(概念)
指定 input_iterator 为向前迭代器,支持相等比较与多趟操作
(概念)
指定类型为某个 input_or_output_iterator 类型的哨位类型
(概念)
指定范围的迭代器类型满足 input_iterator
(概念)
指定范围的迭代器类型满足 forward_iterator
(概念)