0

コンパイラは値 3 を非型パラメータにどのように渡しますxか?

#include <iostream>

template <typename Type, size_t x>
void f(Type (&a)[x])
{
    for (int i = 0; i < x; i++)
    {
        a[i] = i;
        std::cout << a[i] << '\n';
    }
}

int main()
{
    int v[3];
    f(v);
}
4

1 に答える 1

0

テンプレートでは、型名と整数型の両方を使用できsize_tます。

整数型の場合、テンプレート関数は型ではなく値 (コンパイル時に認識されている必要があります) で初期化されます。

コンパイラは、関数f()が型の引数を期待していることを認識し、渡された引数に対して機能するとType (&a)[x]の組み合わせがあるかどうかをチェックします。Typexv

このプロセスは、テンプレート タイプ推定と呼ばれます。

于 2013-03-03T00:32:22.047 に答える