|
|
template<class I> concept no-throw-input-iterator= | (1) | (exposition only*) |
template<class I> concept no-throw-forward-iterator= | (2) | (exposition only*) |
template<class S,class I> concept no-throw-sentinel-for=std::sentinel_for<S, I>; | (3) | (exposition only*) |
template<class R> concept no-throw-input-range= | (4) | (exposition only*) |
template<class R> concept no-throw-forward-range= | (5) | (exposition only*) |
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, likecontiguous_iterator
andLegacyForwardIterator.Like all standard concepts, every concept listed here is modeled only if all concepts it subsumes are modeled.
I
modelsno-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
andI
modelno-throw-sentinel-for
only if no exceptions are thrown from copy construction, move construction, copy assignment, move assignment, or comparisons between valid values of typeI
andS
.R
modelsno-throw-input-range
only if no exceptions are thrown from calls toranges::begin andranges::end on an object of typeR
.These concepts allow some operations on iterators and sentinels to throw exceptions, e.g. operations on invalid values.
(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)[edit] |
(C++20) | specifies that aninput_iterator is a forward iterator, supporting equality comparison and multi-pass(concept)[edit] |
(C++20) | specifies a type is a sentinel for aninput_or_output_iterator type(concept)[edit] |
(C++20) | specifies a range whose iterator type satisfiesinput_iterator (concept)[edit] |
(C++20) | specifies a range whose iterator type satisfiesforward_iterator (concept)[edit] |