在C 語言中,常用的是「 if”語句用於基於特定條件的結果的條件分支。然而,對於編譯時條件評估,「if constexpr()」語句是一個有效的工具。本文探討了「if constexpr()」和「if()」之間的區別,重點介紹了它們的用例和適用性。
“if constexpr()”之間的根本區別”和“if()”在於它們求值的時機。“if constexpr()」在編譯時計算其括號內的表達式,而「if()」在執行時計算其條件。這種差異具有重大意義:
考慮一個場景,您有一個函數“length”,它需要不同的邏輯來使用“.length()”函數確定數字和物件的長度。各種情況,因為它允許您在編譯時評估值的類型。 2:避免非法操作
template<typename T> auto length(const T& value) noexcept { if constexpr (std::is_integral<T>::value) { // is number return value; else return value.length(); }
何時使用每個語句
template<typename T> bool contains(const T& value, const std::string& key) noexcept { if constexpr (has_find<T>::value) { // has std::find function return std::find(value.begin, value.end, key) != value.end(); else return false; }
以上是C 中的 if constexpr() 和 if() 有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!