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

FreeBSD Manual Pages

  
 
  

home | help
std::experi...nges::Common(3) C++ Standard Libarystd::experi...nges::Common(3)

NAME
       std::experimental::ranges::Common - std::experimental::ranges::Common

Synopsis
	  Defined in header <experimental/ranges/concepts>
	  template< class T, class U >

	  concept bool Common =
	      Same<ranges::common_type_t<T,  U>,  ranges::common_type_t<U, T>>
       &&
	      ConvertibleTo<T, ranges::common_type_t<T,	U>> &&
	      ConvertibleTo<U, ranges::common_type_t<T,	U>> &&
	      CommonReference<
		  std::add_lvalue_reference_t<const			   T>,
       (ranges TS)
		  std::add_lvalue_reference_t<const U>>	&&
	      CommonReference<
		  std::add_lvalue_reference_t<ranges::common_type_t<T, U>>,
		  ranges::common_reference_t<
		      std::add_lvalue_reference_t<const	T>,

		      std::add_lvalue_reference_t<const	U>>>;

	  The  concept	Common<T,  U> specifies	that two types T and U share a
       common type (as
	  computed by ranges::common_type_t) to	which both can be converted.

	  Common<T, U> is satisfied only if, given expressions t  and  u  such
       that decltype((t))
	  is T and decltype((u)) is U,

	    *	ranges::common_type_t<T,   U>(t)   is  equal  to  ranges::com-
       mon_type_t<T, U>(t) if and
	      only if t	is an equality-preserving expression; and
	    *  ranges::common_type_t<T,	 U>(u)	is   equal   to	  ranges::com-
       mon_type_t<T, U>(u) if and
	      only if u	is an equality-preserving expression.

	  In other words, the conversion to the	common type must not alter the
	  equality-preservation	property of the	original expression.

	  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.

See also
	  common_type	   determine the common	type of	a set of types
			   (class template)
	  common_reference determine the common	reference type	of  a  set  of
       types
			   (class template)
	  CommonReference   specifies  that two	types share a common reference
       type
			   (concept)

http://cppreference.com		  2024.06.10	 std::experi...nges::Common(3)

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

home | help