no-throw-input-iterator, no-throw-forward-iterator, no-throw-sentinel-for, no-throw-input-range, no-throw-forward-range
Defined in header <memory>
|
||
template<class I> concept no-throw-input-iterator = // exposition only |
(1) | (since C++20) |
template<class I> concept no-throw-forward-iterator = // exposition only |
(2) | (since C++20) |
template<class S, class I> concept no-throw-sentinel-for = std::sentinel_for<S, I>; // exposition only |
(3) | (since C++20) |
template<class R> concept no-throw-input-range = // exposition only |
(4) | (since C++20) |
template<class R> concept no-throw-forward-range = // exposition only |
(5) | (since C++20) |
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.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
.Notes
These concepts allow some operations on iterators and sentinels to throw exceptions, e.g. operations on invalid values.
See also
(C++20) |
specifies that a type is an input iterator, that is, its referenced values can be read and it can be both pre- and post-incremented (concept) |
(C++20) |
specifies that an input_iterator is a forward iterator, supporting equality comparison and multi-pass (concept) |
(C++20) |
specifies a type is a sentinel for an input_or_output_iterator type (concept) |
(C++20) |
specifies a range whose iterator type satisfies input_iterator (concept) |
(C++20) |
specifies a range whose iterator type satisfies forward_iterator (concept) |