Scroll to navigation

std::common_reference_with(3) C++ Standard Libary 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)

2024.06.10 http://cppreference.com