名稱空間
變體
操作

std::common_with

來自 cppreference.com
< cpp‎ | 概念
定義於標頭檔案 <concepts>
template< class T, class U >

concept common_with =
    std::same_as<std::common_type_t<T, U>, std::common_type_t<U, T>> &&
    requires {
        static_cast<std::common_type_t<T, U>>(std::declval<T>());
        static_cast<std::common_type_t<T, U>>(std::declval<U>());
    } &&
    std::common_reference_with<
        std::add_lvalue_reference_t<const T>,
        std::add_lvalue_reference_t<const U>> &&
    std::common_reference_with<
        std::add_lvalue_reference_t<std::common_type_t<T, U>>,
        std::common_reference_t<
            std::add_lvalue_reference_t<const T>,

            std::add_lvalue_reference_t<const U>>>;
(C++20 起)

概念 common_with 指定了兩種型別 TU 共享一個公共型別(由 std::common_type_t 計算),並且兩者都可以轉換為該公共型別。

目錄

[編輯] 語義要求

T 和 U 建模 std::common_with<T, U> 僅當,給定保持相等的表示式 t1, t2, u1u2,使得 decltype((t1))decltype((t2)) 都為 T,以及 decltype((u1))decltype((u2)) 都為 U

換句話說,轉換為公共型別必須保持相等

[編輯] 相等性保持

在標準庫概念的 requires 表示式中宣告的表示式必須保持相等(除非另有說明)。

[編輯] 參考

  • C++23 標準 (ISO/IEC 14882:2024)
  • 18.4.6 概念 common_with [concept.common]
  • C++20 標準 (ISO/IEC 14882:2020)
  • 18.4.6 概念 common_with [concept.common]

[編輯] 另見

確定一組型別的公共型別
(類模板) [編輯]
確定一組型別的公共引用型別
(類模板) [編輯]
指定兩種型別共享一個共同的引用型別
(概念) [編輯]