「式 SFINAE」とは何ですか?
式 SFINAE (置換失敗はエラーではありません) は、置換を使用する C の手法です。式の有効性をチェックするためのテンプレート引数推論のルール。これは、テンプレート メタプログラミングを使用して型または式が有効かどうかを判断する SFINAE (置換失敗はエラーではない) イディオムの拡張です。
式 SFINAE では、型の作成に decltype 演算子が使用されます。それは式の有効性によって決まります。式が有効であれば、型は明確に定義されます。そうしないと、置換が失敗し、テンプレート メタプログラムのコンパイルに失敗します。
たとえば、次のコードを考えてみましょう。
template <int I> struct A {}; char xxx(int); char xxx(float); template <class T> A<sizeof(xxx((T)0))> f(T){} int main() { f(1); }
この例では、f() 関数は式 SFINAE を使用します。引数型 T に xxx() という名前のメンバー関数があるかどうかを判断します。 T に xxx() という名前のメンバー関数がある場合、置換は成功し、テンプレート引数 I は xxx() の戻り値の型のサイズに設定されます。そうしないと、置換が失敗し、テンプレート メタプログラムのコンパイルに失敗します。
Expression SFINAE は、コンパイル時にさまざまな条件をチェックするために使用できる強力なツールです。これは、コンパイル時に型に関する情報を提供するクラスまたはテンプレートである型特性を実装するためによく使用されます。式 SFINAE を使用して、コンパイル時の条件付きロジックを実装し、タイプ セーフな操作を実行することもできます。
以上がExpression SFINAE は、テンプレート引数の推論をどのように利用して式の妥当性をチェックしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。