」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 除了``if''語句之外:在沒有鑄造的情況下,還可以在哪裡使用明確的``bool''轉換的類型?

除了``if''語句之外:在沒有鑄造的情況下,還可以在哪裡使用明確的``bool''轉換的類型?

發佈於2025-01-24
瀏覽:705

Beyond `if` Statements: Where Else Can a Type with an Explicit `bool` Conversion Be Used Without Casting?

無需強制轉換即可上下文轉換為bool

您的類定義了對bool 的顯式轉換,使您能夠在條件語句中直接使用其實例“t”。然而,這種顯式轉換提出了一個問題:“t”在哪裡可以在不進行強制轉換的情況下用作 bool?

上下文轉換場景

C 標準指定了四種值可以根據上下文轉換為的主要場景bool:

語句:

  • if、while、for、do-while 語句

    if (t)
      /* statement */;

表達式:

  • 否定(!)、邏輯AND (&&)、邏輯OR (||)、三元運算符(?)

    !t
    t && t2

編譯時測試:

  • static_assert、noexcept、explicit、if constexpr(需要constexpr 轉換運算符)

    static_assert(t);
    noexcept(t)

算法和概念:

  • STL 算法中的NullablePointer、謂詞或比較器參數

    NullablePointer T
    std::remove_if(first, last, [&](auto){ return t; });

附加說明:

  • 在編譯時測試中不允許從除0 和1 之外的整數進行縮小轉換(C 26開始)。
  • 混合常量和非常量轉換運算符可能會導致混亂。
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3