Namespaces
Variants

std:: common_reference_with

From cppreference.net
Определено в заголовке <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 моделируют std :: common_reference_with < T, U > только если, при заданных сохраняющих равенство выражениях t1 , t2 , u1 и u2 таких, что decltype ( ( t1 ) ) и decltype ( ( t2 ) ) оба являются T и decltype ( ( u1 ) ) и decltype ( ( u2 ) ) оба являются U ,

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

Ссылки

  • Стандарт C++23 (ISO/IEC 14882:2024):
  • 18.4.5 Концепт common_reference_with [concept.commonref]
  • Стандарт C++20 (ISO/IEC 14882:2020):
  • 18.4.5 Концепт common_reference_with [concept.commonref]

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

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