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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::common_with	- std::common_with

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

	  concept common_with =
	      std::same_as<std::common_type_t<T, U>, std::common_type_t<U, T>>
	  &&
	      requires {
		  static_cast<std::common_type_t<T, U>>(std::declval<T>());
		  static_cast<std::common_type_t<T, U>>(std::declval<U>());
	      }								    &&
       (since C++20)
	      std::common_reference_with<
		  std::add_lvalue_reference_t<const T>,
		  std::add_lvalue_reference_t<const U>>	&&
	      std::common_reference_with<
		  std::add_lvalue_reference_t<std::common_type_t<T, U>>,
		  std::common_reference_t<
		      std::add_lvalue_reference_t<const	T>,

		      std::add_lvalue_reference_t<const	U>>>;

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

	  Semantic requirements

	  T and	U model	std::common_with<T, U> only  if,  given	 equality-pre-
       serving expressions
	  t1,  t2,  u1	and u2 such that decltype((t1))	and decltype((t2)) are
       both T and
	  decltype((u1)) and decltype((u2)) are	both U,

	    * std::common_type_t<T, U>(t1) equals std::common_type_t<T,	U>(t2)
       if and only if
	      t1 equals	t2; and
	    * std::common_type_t<T, U>(u1) equals std::common_type_t<T,	U>(u2)
       if and only if
	      u1 equals	u2.

	  In other words, the conversion to  the  common  type	must  preserve
       equality.

	  Equality preservation

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

See also
	  common_type		  determines  the  common  type	 of a group of
       types
	  (C++11)		 (class	template)
	  common_reference	 determines the	common	reference  type	 of  a
       group of	types
	  basic_common_reference (class	template)
	  (C++20)
	  common_reference_with	  specifies that two types share a common ref-
       erence type
	  (C++20)		 (concept)

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

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

home | help