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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::indirectly_readable	- std::indirectly_readable

Synopsis
	  Defined in header <iterator>
	  template< class In >

	  concept __IndirectlyReadableImpl = //	exposition only
	  requires(const In in)	{
	  typename std::iter_value_t<In>;
	  typename std::iter_reference_t<In>;
	  typename std::iter_rvalue_reference_t<In>;
	  { *in	} -> std::same_as<std::iter_reference_t<In>>;
	  { ranges::iter_move(in) } ->
	  std::same_as<std::iter_rvalue_reference_t<In>>;
	  }								    &&
       (since C++20)
	  std::common_reference_with<
	  std::iter_reference_t<In>&&, std::iter_value_t<In>&
	  > &&
	  std::common_reference_with<
	  std::iter_reference_t<In>&&, std::iter_rvalue_reference_t<In>&&
	  > &&
	  std::common_reference_with<
	  std::iter_rvalue_reference_t<In>&&, const std::iter_value_t<In>&

	  >;
	  template< class In >

	  concept		     indirectly_readable		     =
       (since C++20)

	  __IndirectlyReadableImpl<std::remove_cvref_t<In>>;

	  The  concept	indirectly_readable is modeled by types	that are read-
       able by applying
	  operator*, such as pointers, smart pointers, and input iterators.

	 Semantic requirements

	  Given	a value	i of type I, I models indirectly_readable only if  all
       concepts	it
	  subsumes are modeled and the expression *i is	equality preserving.

	 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).

	  In  specification  of	standard concepts, operands are	defined	as the
       largest
	  subexpressions that include only:

	    * an id-expression,	and
	    * invocations of std::move,	std::forward, and std::declval.

	  The cv-qualification and value category of each  operand  is	deter-
       mined by	assuming
	  that	each template type parameter denotes a cv-unqualified complete
       non-array object
	  type.

	  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
	  modify  only	its  non-constant operands. Operands that are constant
       must not	be
	  modified.

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

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

home | help