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

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

Linda Hamilton
リリース: 2024-12-05 12:12:14
オリジナル
899 人が閲覧しました

How Does Template Argument Deduction Determine Array Sizes in C  ?

テンプレート引数の推定により配列サイズを明らかにする方法

提供された C コードでは、テンプレート関数 cal_size が配列参照引数のサイズを出力します。テンプレート パラメーター N が、渡された配列の長さをどのように自動的に反映するのかは興味深いです。

テンプレート引数の推定

N は初期化された変数ではありません。これはコンパイル時の定数です。テンプレート引数推論として知られるプロセスを通じて、T と N の両方がテンプレート関数に渡された引数から推論されます。

次の cal_size の呼び出しを考えてみましょう:

  • 配列の場合(長さ 6): コンパイラは T を int として、N を 6 として推定します。 function:
void cal_size_int_6(int (&a)[6]) {
  std::cout << "size of array is: " << 6 << std::endl;
}
ログイン後にコピー
  • b 配列 (長さ 1) の場合: ここでも、コンパイラーは T を int として推論し、N を 1 として推論し、別の特殊な関数を生成します:
void cal_size_int_1(int (&a)[1]) {
  std::cout << "size of array is: " << 1 << std::endl;
}
ログイン後にコピー

個別の関数呼び出し

基本的に、cal_sizeテンプレートは、N と T のハードコードされた値を持つ個別の特殊な関数に変換されます。メイン関数は次と等価になります。

int main() {
  cal_size_int_6(a);
  cal_size_int_1(b);
}
ログイン後にコピー

要約すると、テンプレート引数の推定により、テンプレートは引数の型から配列サイズを推定できるようになります。基礎となるメカニズムには、引数の型の一意の組み合わせごとに特殊な関数を生成することが含まれており、それぞれが独自の静的に決定された N 値と T 値を持ちます。

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

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