名稱空間
變體
操作

std::convertible_to

來自 cppreference.com
< cpp‎ | concepts
定義於標頭檔案 <concepts>
template< class From, class To >

concept convertible_to =
    std::is_convertible_v<From, To> &&
    requires {
        static_cast<To>(std::declval<From>());

    };
(C++20 起)

概念 convertible_to<From, To> 指定了一個表示式,其型別和值類別與 std::declval<From>() 相同,可以隱式和顯式轉換為型別 To,並且這兩種轉換形式產生相同的結果。

目錄

[編輯] 語義要求

convertible_to<From, To> 僅在以下條件滿足時才被建模:給定一個型別為 std::add_rvalue_reference_t<From>() 的函式 fun,且表示式 fun()相等性保持的,

  • 要麼
    • To 既不是物件型別也不是物件引用型別,或者
    • static_cast<To>(fun()) 等於 []() -> To { return fun(); }(),並且
  • 以下之一為真
    • std::add_rvalue_reference_t<From> 不是物件引用型別,或者
    • std::add_rvalue_reference_t<From> 是對非 const-qualified 型別的右值引用,並且在上述任一表達式之後,由 fun() 引用的物件狀態有效但未指定;或者
    • fun() 引用的物件未被上述任一表達式修改。

[編輯] 相等性保持

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

[編輯] 參考

  • C++23 標準 (ISO/IEC 14882:2024)
  • 18.4.4 概念 convertible_to [concept.convertible]
  • C++20 標準 (ISO/IEC 14882:2020)
  • 18.4.4 概念 convertible_to [concept.convertible]

[編輯] 參見

檢查一個型別是否可以轉換為另一個型別
(類模板) [編輯]