25 Iterators library [iterators]

25.5 Iterator adaptors [predef.iterators]

25.5.7 Unreachable sentinel [unreachable.sentinel]

Class unreachable_­sentinel_­t can be used with any weakly_­incrementable type to denote the “upper bound” of an unbounded interval.
[Example 1: char* p; // set p to point to a character buffer containing newlines char* nl = find(p, unreachable_sentinel, '\n');
Provided a newline character really exists in the buffer, the use of unreachable_­sentinel above potentially makes the call to find more efficient since the loop test against the sentinel does not require a conditional branch.
— end example]
namespace std { struct unreachable_sentinel_t { template<weakly_­incrementable I> friend constexpr bool operator==(unreachable_sentinel_t, const I&) noexcept { return false; } }; }