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 计算得出),两者均可转换为该类型。

语义要求

当且仅当给定满足 decltype ( ( t1 ) ) decltype ( ( t2 ) ) 均为 T 类型,且 decltype ( ( u1 ) ) decltype ( ( u2 ) ) 均为 U 类型的 保相等表达式 t1 t2 u1 u2 时,类型 T 和 U 才满足 std :: common_reference_with < T, 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]

参见

确定一组类型的公共引用类型
(类模板)
指定两种类型共享一个公共类型
(概念)
确定一组类型的公共类型
(类模板)