std::common_reference_with(3)

NAME
std::common_reference_with - std::common_reference_with

Synopsis
   Defined in header <concepts>
   template< class T, class U >
   concept common_reference_with =
       std::same_as<std::common_reference_t<T, U>, (since C++20)
   std::common_reference_t<U, T>> &&
       std::convertible_to<T, std::common_reference_t<T, U>> &&
       std::convertible_to<U, std::common_reference_t<T, U>>;
   The concept common_reference_with<T, U> specifies that two types T and U share a
   common reference type (as computed by std::common_reference_t) to which both can be
   converted.
   Semantic requirements
   T and U model std::common_reference_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_reference_t<T, U>(t1) equals std::common_reference_t<T, U>(t2) if
       and only if t1 equals t2; and
     * std::common_reference_t<T, U>(u1) equals std::common_reference_t<T, U>(u2) if
       and only if u1 equals u2.
   In other words, the conversion to the common reference type must preserve equality.

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