JH-Toolkit v1.4.1
An engineering-oriented C++20 toolkit with duck-typed concepts, static design, async coroutines, and semantic containers — header-only, RTTI-free, and concurrency-friendly.
Loading...
Searching...
No Matches
jh::concepts::forward_iterator Concept Reference

Concept for multi-pass, readable, and self-sentinel iterators. More...

#include <jh/conceptual/iterator.h>

Concept definition

template<typename I, typename S = I>
concept forward_iterator =
std::copyable<I> &&
sentinel_for<I, I> && requires(I &it) {
{ ++it } -> std::same_as<I &>;
{ it++ } -> std::same_as<I>;
{ *it } -> std::same_as<jh::concepts::iterator_reference_t<I>>;
}
Concept for multi-pass, readable, and self-sentinel iterators.
Definition iterator.h:525
Concept for readable, comparable single-pass iterators.
Definition iterator.h:468
Concept for detecting sentinel-iterator compatibility.
Definition iterator.h:433

Detailed Description

Concept for multi-pass, readable, and self-sentinel iterators.

  • Refines input_iterator, requiring readability and std::copyable to support multi-pass traversal.
  • Ensures compatibility with sentinel_for<I, I>, meaning the iterator can act as its own sentinel.
  • Optionally, a distinct sentinel type S may be provided to verify that begin() and end() form a consistent pair, ensuring correct range termination semantics.
  • Guarantees consistent dereference semantics where *it matches iterator_reference_t.
Template Parameters
IIterator-like type providing multi-pass traversal.
SSentinel type used to verify consistency (defaults to I).