std:: common_with
Defined in header
<concepts>
|
||
template
<
class
T,
class
U
>
concept common_with
=
|
(since C++20) | |
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
equalst2
; and -
std::
common_type_t
<
T, U
>
(
u1
)
equals
std::
common_type_t
<
T, U
>
(
u2
)
if and only if
u1
equalsu2
.
In other words, the conversion to the common type must preserve equality .
Equality preservation
Expressions declared in requires expressions of the standard library concepts are required to be equality-preserving (except where stated otherwise).
References
- C++23 standard (ISO/IEC 14882:2024):
-
-
18.4.6 Concept
common_with
[concept.common]
-
18.4.6 Concept
- C++20 standard (ISO/IEC 14882:2020):
-
-
18.4.6 Concept
common_with
[concept.common]
-
18.4.6 Concept
See also
(C++11)
|
determines the common type of a group of types
(class template) |
determines the common reference type of a group of types
(class template) |
|
(C++20)
|
specifies that two types share a common reference type
(concept) |