◐ Shell
clean mode source ↗

std::common_reference_with — cppreference.com

Материал из cppreference.com

<tbody> </tbody>

Определено в заголовочном файле <concepts>

template < class T, class U > concept common_reference_with = std::same_as<std::common_reference_t<T, U>, std::common_reference_t<U, T>> && std::convertible_to<T, std::common_reference_t<T, U>> && std::convertible_to<U, std::common_reference_t<T, U>>;

(начиная с C++20)

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

Семантические требования

T и U моделируют common_reference_with<T, U>, только если при данных сохраняющих равенство выражениях t1, t2, u1 и u2, таких, что decltype((t1)) и decltype((t2)) оба являются T, а decltype((u1)) и decltype((u2)) являются U,

  • std::common_reference_t<T, U>(t1) равно std::common_reference_t<T, U>(t2) тогда и только тогда, когда t1 равно t2; а также
  • std::common_reference_t<T, U>(u1) равно std::common_reference_t<T, U>(u2) тогда и только тогда, когда u1 равно u2.

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

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

Выражения, объявленные в выражениях requires концептов стандартной библиотеки, должны сохранять равенство (если не указано иное).

Смотри также