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