FreeBSD Manual Pages
std::forward_iterator(3) C++ Standard Libary std::forward_iterator(3) NAME std::forward_iterator - std::forward_iterator Synopsis Defined in header <iterator> template<class I> concept forward_iterator = std::input_iterator<I> && (since C++20) std::derived_from</*ITER_CONCEPT*/<I>, std::forward_iterator_tag> && std::incrementable<I> && std::sentinel_for<I, I>; This concept refines std::input_iterator by requiring that I also model std::incrementable (thereby making it suitable for multi-pass algo- rithms), and guaranteeing that two iterators to the same range can be compared against each other. Iterator concept determination Definition of this concept is specified via an exposition-only alias template /*ITER_CONCEPT*/. In order to determine /*ITER_CONCEPT*/<I>, let ITER_TRAITS<I> denote I if the specialization std::iterator_traits<I> is generated from the primary template, or std::iterator_traits<I> otherwise: * If ITER_TRAITS<I>::iterator_concept is valid and names a type, /*ITER_CONCEPT*/<I> denotes the type. * Otherwise, if ITER_TRAITS<I>::iterator_category is valid and names a type, /*ITER_CONCEPT*/<I> denotes the type. * Otherwise, if std::iterator_traits<I> is generated from the pri- mary template, /*ITER_CONCEPT*/<I> denotes std::random_access_iterator_tag. * Otherwise, /*ITER_CONCEPT*/<I> does not denote a type and re- sults in a substitution failure. Semantic requirements I models std::forward_iterator if, and only if I models all the con- cepts it subsumes, and given objects i and j of type I: * Comparison between iterators i and j has a defined result if * i and j are iterators to the same underlying sequence, or * both i and j are value-initialized, in which case they compare equal. * Pointers and references obtained from a forward iterator into a range remain valid while the range exists. * If i and j are dereferenceable, they offer the multi-pass guar- antee, that is: * i == j implies ++i == ++j, and * ((void)[](auto x){ ++x; }(i), *i) is equivalent to *i. Notes Unlike the LegacyForwardIterator requirements, the forward_iterator concept does not require dereference to return an lvalue. See also input_iterator specifies that a type is an input iterator, that is, its referenced (C++20) values can be read and it can be both pre- and post- incremented (concept) http://cppreference.com 2022.07.31 std::forward_iterator(3)
NAME | Synopsis | Notes | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::forward_iterator&sektion=3&manpath=FreeBSD+Ports+15.0>
