提供された C コードでは、配列を引数として受け入れるように cal_size という名前の関数テンプレートが宣言されています。関数テンプレートは、引数の型から配列のサイズを推定し、それを出力します。
疑問が生じます。テンプレート パラメーター N は、関数内で明示的に指定せずに、どのようにして配列の正しいサイズに自動的に初期化されるのでしょうか。 call?
この動作を理解する鍵は、テンプレート引数の推論のプロセスにあります。テンプレート関数が呼び出されるとき、コンパイラーは引数の実際の型を使用してテンプレート パラメーターの値を推定します。
cal_size の場合、引数の型は型 T の要素の配列であり、指定されたサイズ N。コンパイラは配列の要素の型から T を推定し、配列のサイズから N を推定します。
引数 a が関数に渡されると、コンパイラはT を int として、N を 6 として推定します。同様に、b が渡されると、T は int で、N は 1 になります。
T と N の推定値に基づいて、コンパイラは、関数テンプレートの個別の特殊なバージョンを生成します。呼び出しごとに、引数配列の特定の型とサイズ情報を使用して特殊な関数が作成されます。
この特定のケースでは、2 つの特殊な関数が生成されます:
main 関数は基本的に、これらの特殊な関数を呼び出すことになります。
以上がC は関数テンプレートの配列サイズをどのように推測しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。