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

FreeBSD Manual Pages

  
 
  

home | help
std::experi...crementable(3)  C++ Standard Libary std::experi...crementable(3)

NAME
       std::experimental::ranges::Incrementable	       -       std::experimen-
       tal::ranges::Incrementable

Synopsis
	  Defined in header <experimental/ranges/iterator>
	  template <class I>

	  concept bool Incrementable =
	  Regular<I> &&
	  WeaklyIncrementable<I> &&			    (ranges TS)
	  requires(I i)	{
	  { i++	} -> Same<I>&&;

	  };

	  The concept Incrementable<I> specifies the requirements  on  a  type
       that can	be
	  incremented (with the	pre- and post-increment	operators). The	incre-
       ment operations
	  (including those required by WeaklyIncrementable) are	required to be
	  equality-preserving, and the type is required	to be EqualityCompara-
       ble.

	  Let  a and b be incrementable	objects	of type	I. Incrementable<I> is
       satisfied only
	  if:

	    * If bool(a	== b) then bool(a++ == b).
	    * If bool(a	== b) then bool(void(a++), a) == ++b).

	 Equality preservation

	  An expression	is equality preserving if it results in	equal  outputs
       given equal
	  inputs.

	    * The inputs to an expression consist of its operands.
	    *  The  outputs  of	 an  expression	 consist of its	result and all
       operands	modified by
	      the expression (if any).

	  Every	expression required to be equality preserving is  further  re-
       quired to be
	  stable:  two	evaluations  of	such an	expression with	the same input
       objects must have
	  equal	outputs	absent any explicit intervening	modification of	 those
       input objects.

	  Unless  noted	otherwise, every expression used in a requires-expres-
       sion is required
	  to be	equality preserving and	stable,	and the	evaluation of the  ex-
       pression	may only
	  modify  its  non-constant  operands. Operands	that are constant must
       not be modified.

Notes
	  The requirement that a equals	b implies ++a equals  ++b  allows  the
       use of multi-pass
	  algorithms with Incrementable	types.

http://cppreference.com		  2022.07.31	  std::experi...crementable(3)

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

home | help