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 =
		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>>;
		}							      &&
     (exposition
		std::common_reference_with<
     only*)
		    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 readable 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 con-
     cepts it
	subsumes are modeled and the expression *i is equality-preserving.

	Equality preservation

	Expressions  declared  in  requires  expressions of the standard library
     concepts are
	required to be equality-preserving (except where stated otherwise).

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

home | help