C では、「if constexpr()」と「if()」ステートメントは、条件分岐において異なる目的を果たします。どちらのステートメントも式を評価しますが、主な違いは評価のタイミングにあります。
"if constexpr()":
"if()":
"の場合constexpr()":
"if()":
説明例:
次のコード スニペット:
template<typename T> auto length(const T& value) noexcept { if constexpr (std::is_integral<T>::value) { // is number return value; } else { return value.length(); } }
この関数は数値の長さを返します。または「length()」メンバー関数を持つ任意の型。 「if constexpr()」を使用しないと、「T」のタイプに関係なく、コンパイル中に両方の分岐が考慮されます。ただし、「if constexpr()」を使用すると、適切なブランチのみがコンパイルおよび実行され、不要なコードが削除され、パフォーマンスが最適化されます。
以上がC コンパイル時評価における「if constexpr()」と「if()」の主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。