no-throw-input-iterator, no-throw-forward-iterator, no-throw-sentinel-for, no-throw-input-range, no-throw-forward-range
From cppreference.com
|
|
(1) | (exposition only*) |
|
|
(2) | (exposition only*) |
|
|
(3) | (exposition only*) |
|
|
(4) | (exposition only*) |
|
|
(5) | (exposition only*) |
These exposition-only concepts specify that no exceptions are thrown from operations required by algorithms on iterators, sentinels, and ranges.
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.