no-throw-input-iterator, no-throw-forward-iterator, no-throw-sentinel-for, no-throw-input-range, no-throw-forward-range
concept no-throw-input-iterator =
std::input_iterator <I> &&
std::is_lvalue_reference_v <std::iter_reference_t <I>> &&
concept no-throw-forward-iterator =
no-throw-input-iterator<I> &&
std::forward_iterator <I> &&
concept no-throw-sentinel-for = std::sentinel_for <S, I>;
concept no-throw-input-range =
ranges::range <R> &&
no-throw-input-iterator<ranges::iterator_t <R>> &&
concept no-throw-forward-range =
no-throw-input-range<R> &&
These exposition-only concepts specify that no exceptions are thrown from operations required by algorithms on iterators, sentinels, and ranges.
no-throw-input-iterator
concept requires that dereferencing the iterator yields an lvalue, like contiguous_iterator
and LegacyForwardIterator.[edit] Semantic requirements
Like all standard concepts, every concept listed here is modeled only if all concepts it subsumes are modeled.
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.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
.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
.[edit] Notes
These concepts allow some operations on iterators and sentinels to throw exceptions, e.g. operations on invalid values.
[edit] See also
(concept) [edit]
input_iterator
is a forward iterator, supporting equality comparison and multi-pass (concept) [edit]