您的類定義了對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; });
附加說明:
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3