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-preserving
     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  equal-
     ity.

	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 reference
     type
	(C++20) 	       (concept)

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

home | help