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

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

Mary-Kate Olsen
リリース: 2024-11-30 15:22:12
オリジナル
642 人が閲覧しました

How Does C   Template Argument Deduction Determine Array Sizes in Function Templates?

関数テンプレートにおけるテンプレート引数の推論について

関数テンプレート cal_size を使用して配列のサイズを計算して出力する次のコードを考えてみましょう。 :

プログラムが実行されると、正しい内容が出力されます。両方の配列のサイズ:

では、サイズが引数として明示的に渡されない場合でも、テンプレート関数 cal_size はどのようにして渡された配列のサイズを自動的に推定するのでしょうか?

答えは、C のテンプレート引数演繹の概念にあります。その仕組みは次のとおりです。

コンパイル中に、コンパイラはテンプレート引数の推論を実行し、テンプレート関数に渡された引数の実際の型に基づいて T の型と N の値を決定します。この場合、引数 a を指定して cal_size が呼び出されると、コンパイラは T を int として、N を 6 として推定し、コンパイル時に特殊な関数 cal_size_int_6 を作成します。

同様に、引数 b の場合、コンパイラは T を int として、N を 1 として推定し、特殊化が行われます。 cal_size_int_1:

したがって、元の cal_size テンプレートは、それぞれ独自のハードコードされた T 値と N 値を持つ 2 つの個別の関数特殊化を効果的に作成します。このプロセスにより、cal_size.

の呼び出しごとに正しい配列サイズが出力されるようになります。

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

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