std::experimental::ranges:: Common
|
Определено в заголовочном файле
<experimental/ranges/concepts>
|
||
|
template
<
class
T,
class
U
>
concept
bool
Common
=
|
(ranges TS) | |
Концепт
Common<T, U>
определяет, что два типа
T
и
U
имеют
общий тип
(вычисляемый с помощью
ranges::common_type_t
), к которому оба могут быть преобразованы.
Common<T, U>
удовлетворяется только в том случае, если для выражений
t
и
u
таких, что
decltype
(
(
t
)
)
является
T
и
decltype
(
(
u
)
)
является
U
,
-
ranges::
common_type_t
<
T, U
>
(
t
)
равен
ranges::
common_type_t
<
T, U
>
(
t
)
тогда и только тогда, когда
tявляется сохраняющим равенство выражением; и -
ranges::
common_type_t
<
T, U
>
(
u
)
равен
ranges::
common_type_t
<
T, U
>
(
u
)
тогда и только тогда, когда
uявляется сохраняющим равенство выражением.
Другими словами, преобразование к общему типу не должно нарушать свойство сохранения равенства исходного выражения.
Сохранение равенства
Выражение называется сохраняющим равенство если оно даёт равные результаты при равных входных данных.
- Входные данные выражения состоят из его операндов.
- Выходные данные выражения состоят из его результата и всех операндов, изменённых выражением (если таковые имеются).
Каждое выражение, которое должно сохранять равенство, дополнительно должно быть стабильным : два вычисления такого выражения с одинаковыми входными объектами должны давать равные результаты при отсутствии каких-либо явных изменений этих входных объектов между вычислениями.
Смотрите также
|
определить общий тип набора типов
(class template) |
|
|
определить общий ссылочный тип набора типов
(class template) |
|
|
указывает, что два типа имеют общий ссылочный тип
(concept) |