no-throw-input-iterator, no-throw-forward-iterator, no-throw-sentinel-for, no-throw-input-range, no-throw-forward-range
Aus cppreference.com
<tbody>
</tbody>
| definiert in Header <memory>
|
||
template<class I> concept no-throw-input-iterator = // exposition only 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 = // exposition only 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>; // exposition only |
(3) | |
template<class R> concept no-throw-input-range = // exposition only 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 = // exposition only no-throw-input-range<R> && no-throw-forward-iterator<ranges::iterator_t<R>>; |
(5) | |
These exposition-only concepts specify that no exceptions are thrown from operations required by algorithms on iterators, sentinels, and ranges.
1) The
no-throw-input-iterator concept requires that dereferencing the iterator yields an lvalue, like Vorlage:lconcept and .Semantic requirements
Like all standard concepts, every concept listed here is modeled only if all concepts it subsumes are modeled.
1) A type
I models no-throw-input-iterator only if no exceptions are thrown from increment, copy construction, move construction, copy assignment, move assignment, or indirection through valid iterators.3) Types
S and I model no-throw-sentinel-for only if no exceptions are thrown from copy construction, move construction, copy assignment, move assignment, or comparisons between valid values of type I and S.4) A type
R models no-throw-input-range only if no exceptions are thrown from calls to ranges::begin and ranges::end on an object of type R.Notes
These concepts allow some operations on iterators and sentinels to throw exceptions, e.g. operations on invalid values.