no-throw-input-iterator, no-throw-forward-iterator, no-throw-sentinel-for, no-throw-input-range, no-throw-forward-range
|
template<class
I>
concept no-throw-input-iterator
=
//
仅用于阐释 |
(1) | (C++20 起) |
template<class
I>
concept no-throw-forward-iterator
=
//
仅用于阐释 |
(2) | (C++20 起) |
template<class
S, class
I>
concept no-throw-sentinel-for = std::sentinel_for<S, I>; // 仅用于阐释 |
(3) | (C++20 起) |
template<class
R>
concept no-throw-input-range
=
//
仅用于阐释 |
(4) | (C++20 起) |
template<class
R>
concept no-throw-forward-range
=
//
仅用于阐释 |
(5) | (C++20 起) |
这些仅用于阐释的概念指定迭代器、哨位和范围上算法所要求的操作均不抛异常。
语义要求
类似所有标准概念,此处列出的每个概念得以实现,仅若其所蕴含的所有概念均被实现。
I
实现
no-throw-input-iterator
,仅若自增、复制构造、移动构造、复制赋值、移动赋值或通过合法迭代器的间接不抛出异常。S
与
I
实现 no-throw-sentinel-for
,仅若复制构造、移动构造、复制赋值、移动赋值或类型 I
与 S
的合法值间的比较不抛异常。
R
实现
no-throw-input-range
,仅若在 R
类型对象上调用
ranges::begin 与 ranges::end 不抛异常。注解
这些概念允许迭代器和哨位上的某些操作抛出异常,例如非法值上的操作。
参阅
(C++20)
|
指定类型为输入迭代器,即可读取其所引用的值,且可前/后自增 (概念) |
(C++20)
|
指定 input_iterator
为向前迭代器,支持相等比较与多趟操作 (概念) |
(C++20)
|
指定类型为某个 input_or_output_iterator
类型的哨位类型 (概念) |
(C++20)
|
指定范围的迭代器类型满足 input_iterator
(概念) |
(C++20)
|
指定范围的迭代器类型满足 forward_iterator
(概念) |