Namespaces
Variants

std::experimental::ranges:: CommonReference

From cppreference.net
Определено в заголовочном файле <experimental/ranges/concepts>
template < class T, class U >

concept bool CommonReference =
Same < ranges:: common_reference_t < T, U > , ranges:: common_reference_t < U, T >> &&
ConvertibleTo < T, ranges:: common_reference_t < T, U >> &&

ConvertibleTo < U, ranges:: common_reference_t < T, U >> ;
(ranges TS)

Концепт CommonReference<T, U> определяет, что два типа T и U имеют общий ссылочный тип (вычисляемый с помощью ranges::common_reference_t ), к которому оба могут быть преобразованы.

CommonReference<T, U> удовлетворяется только если, при заданных выражениях t и u таких, что decltype ( ( t ) ) является T и decltype ( ( u ) ) является U ,

Другими словами, преобразование к общему эталонному типу не должно нарушать свойство сохранения равенства исходного выражения.

Сохранение равенства

Выражение называется сохраняющим равенство если оно даёт равные результаты при равных входных данных.

  • Входные данные выражения состоят из его операндов.
  • Выходные данные выражения состоят из его результата и всех операндов, измененных выражением (если таковые имеются).

Каждое выражение, которое должно сохранять равенство, дополнительно должно быть стабильным : два вычисления такого выражения с одинаковыми входными объектами должны давать равные результаты при отсутствии каких-либо явных изменений этих входных объектов между вычислениями.

Смотрите также

определяет общий ссылочный тип набора типов
(шаблон класса)
указывает, что два типа имеют общий тип
(концепт)
определяет общий тип набора типов
(шаблон класса)