std:: common_with
|
Определено в заголовочном файле
<concepts>
|
||
|
template
<
class
T,
class
U
>
concept common_with
=
|
(начиная с C++20) | |
Концепт
common_with<T, U>
определяет, что два типа
T
и
U
имеют
общий тип
(вычисляемый с помощью
std::common_type_t
), к которому оба могут быть преобразованы.
Содержание |
Семантические требования
T и U моделируют
std
::
common_with
<
T, U
>
только если, для
сохраняющих равенство
выражений
t1
,
t2
,
u1
и
u2
таких, что
decltype
(
(
t1
)
)
и
decltype
(
(
t2
)
)
оба являются
T
и
decltype
(
(
u1
)
)
и
decltype
(
(
u2
)
)
оба являются
U
,
-
std::
common_type_t
<
T, U
>
(
t1
)
равен
std::
common_type_t
<
T, U
>
(
t2
)
тогда и только тогда, когда
t1равенt2; и -
std::
common_type_t
<
T, U
>
(
u1
)
равен
std::
common_type_t
<
T, U
>
(
u2
)
тогда и только тогда, когда
u1равенu2.
Другими словами, преобразование к общему типу должно сохранять равенство .
Сохранение равенства
Выражения, объявленные в requires выражениях концепций стандартной библиотеки, должны быть equality-preserving (если не указано иное).
Ссылки
- Стандарт C++23 (ISO/IEC 14882:2024):
-
-
18.4.6 Концепт
common_with[concept.common]
-
18.4.6 Концепт
- Стандарт C++20 (ISO/IEC 14882:2020):
-
-
18.4.6 Концепт
common_with[concept.common]
-
18.4.6 Концепт
Смотрите также
|
(C++11)
|
определяет общий тип группы типов
(шаблон класса) |
|
определяет общий ссылочный тип группы типов
(шаблон класса) |
|
|
(C++20)
|
указывает, что два типа имеют общий ссылочный тип
(концепт) |