no-throw-input-iterator、no-throw-forward-iterator、no-throw-sentinel-for、no-throw-input-range、no-throw-forward-range
From cppreference.com
| template< class I > concept no-throw-input-iterator = |
(1) | (説明用*) |
| template< class I > concept no-throw-forward-iterator = |
(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 = |
(4) | (説明用*) |
| template< class R > concept no-throw-forward-range = |
(5) | (説明用*) |
これらの exposition-only コンセプトは、イテレータ、センチネル、およびレンジに対するアルゴリズムの操作から例外がスローされないことを指定します。
1)
no-throw-input-iterator コンセプトは、イテレータのデリファレンスが lvalue を生成することを要求します。これは、contiguous_iterator や LegacyForwardIterator と同様です。[編集] 意味上の要件
すべての標準コンセプトと同様に、ここにリストされているすべてのコンセプトは、それが包含するすべてのコンセプトがモデル化されている場合にのみモデル化されます。
1) 型
I は、有効なイテレータに対するインクリメント、コピー構築、ムーブ構築、コピー代入、ムーブ代入、または間接参照から例外がスローされない場合にのみ、no-throw-input-iterator をモデル化します。3) 型
S と I は、有効な値の型 I と S の間のコピー構築、ムーブ構築、コピー代入、ムーブ代入、または比較から例外がスローされない場合にのみ、no-throw-sentinel-for をモデル化します。4) 型
R は、型 R のオブジェクトに対する ranges::begin および ranges::end の呼び出しから例外がスローされない場合にのみ、no-throw-input-range をモデル化します。[編集] 注記
これらのコンセプトは、イテレータやセンチネルに対する一部の操作が例外をスローすることを許可します。たとえば、無効な値に対する操作などです。
[編集] 関連項目
| (C++20) |
型が入力イテレータであること、すなわち、参照先の値を読み取ることができ、前置および後置インクリメントの両方が可能であることを規定する (コンセプト) |
| (C++20) |
input_iterator が、等価比較とマルチパスをサポートする前方イテレータであることを規定する(コンセプト) |
| (C++20) |
input_or_output_iterator 型に対する番兵 (sentinel) であることを規定する(コンセプト) |
| (C++20) |
イテレータ型が input_iterator を満たすrangeを規定する(コンセプト) |
| (C++20) |
イテレータ型が forward_iterator を満たすrangeを規定する(コンセプト) |