Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::sentinel_for(3)	      C++ Standard Libary	  std::sentinel_for(3)

NAME
       std::sentinel_for - std::sentinel_for

Synopsis
	  Defined in header <iterator>
	  template<class S, class I>

	  concept sentinel_for =
	  std::semiregular<S> &&		 (since	C++20)
	  std::input_or_output_iterator<I> &&

	  __WeaklyEqualityComparableWith<S, I>;

	  The sentinel_for concept specifies the relationship between an
	  input_or_output_iterator  type  and  a semiregular type whose	values
       denote a	range.
	  The exposition-only concept  __WeaklyEqualityComparableWith  is  de-
       scribed in
	  equality_comparable.

	 Semantic requirements

	  Let  s  and i	be values of type S and	I, respectively, such that [i,
       s) denotes a
	  range. sentinel_for<S, I> is modeled only if:

	    * i	== s is	well-defined.
	    * If bool(i	!= s) then i is	dereferenceable	and [++i, s) denotes a
       range.
	    * std::assignable_from<I&, S> is either modeled or not satisfied.

	  The domain of	== can change over time. Given an iterator i and  sen-
       tinel s such that
	  [i,  s)  denotes  a range and	i != s,	[i, s) is not required to con-
       tinue to	denote a
	  range	after incrementing any iterator	equal to i (and	so i ==	 s  is
       no longer
	  required to be well-defined after such an increment).

Notes
	  A sentinel type and its corresponding	iterator type are not required
       to model
	  equality_comparable_with,  because the sentinel type may not be com-
       parable with
	  itself, and they are not required to have a common reference type.

	  It has been permitted	to use a sentinel type different from the  it-
       erator type in the
	  range-based for loop since C++17.

	 Defect	reports

	  The following	behavior-changing defect reports were applied retroac-
       tively to
	  previously published C++ standards.

	     DR	      Applied	 to		    Behavior	as   published
       Correct behavior
	  LWG 3453 C++20      semantic requirements for	sentinel_for were  too
       strengthened
			      loose for	ranges::advance

http://cppreference.com		  2022.07.31		  std::sentinel_for(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::sentinel_for&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help