std:: common_reference_with
Defined in header
<concepts>
|
||
template
<
class
T,
class
U
>
concept common_reference_with
=
|
(since C++20) | |
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
equalst2
; and -
std::
common_reference_t
<
T, U
>
(
u1
)
equals
std::
common_reference_t
<
T, U
>
(
u2
)
if and only if
u1
equalsu2
.
In other words, the conversion to the common reference type must preserve equality .
References
- C++23 standard (ISO/IEC 14882:2024):
-
-
18.4.5 Concept
common_reference_with
[concept.commonref]
-
18.4.5 Concept
- C++20 standard (ISO/IEC 14882:2020):
-
-
18.4.5 Concept
common_reference_with
[concept.commonref]
-
18.4.5 Concept
See also
determines the common reference type of a group of types
(class template) |
|
(C++20)
|
specifies that two types share a common type
(concept) |
(C++11)
|
determines the common type of a group of types
(class template) |