ホームページ > バックエンド開発 > C++ > C は関数テンプレートの配列サイズをどのように推測しますか?

C は関数テンプレートの配列サイズをどのように推測しますか?

Barbara Streisand
リリース: 2024-11-28 17:15:17
オリジナル
828 人が閲覧しました

How Does C   Deduce Array Size in Function Templates?

関数テンプレートの配列サイズの推定

提供された C コードでは、配列を引数として受け入れるように cal_size という名前の関数テンプレートが宣言されています。関数テンプレートは、引数の型から配列のサイズを推定し、それを出力します。

疑問が生じます。テンプレート パラメーター N は、関数内で明示的に指定せずに、どのようにして配列の正しいサイズに自動的に初期化されるのでしょうか。 call?

テンプレート引数の推論

この動作を理解する鍵は、テンプレート引数の推論のプロセスにあります。テンプレート関数が呼び出されるとき、コンパイラーは引数の実際の型を使用してテンプレート パラメーターの値を推定します。

cal_size の場合、引数の型は型 T の要素の配列であり、指定されたサイズ N。コンパイラは配列の要素の型から T を推定し、配列のサイズから N を推定します。

引数 a が関数に渡されると、コンパイラはT を int として、N を 6 として推定します。同様に、b が渡されると、T は int で、N は 1 になります。

関数テンプレートの特殊化

T と N の推定値に基づいて、コンパイラは、関数テンプレートの個別の特殊なバージョンを生成します。呼び出しごとに、引数配列の特定の型とサイズ情報を使用して特殊な関数が作成されます。

この特定のケースでは、2 つの特殊な関数が生成されます:

  • cal_size_int_6 for int [6] 配列
  • cal_size_int_1 (int[1]) arrays

main 関数は基本的に、これらの特殊な関数を呼び出すことになります。

以上がC は関数テンプレートの配列サイズをどのように推測しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート