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 |