#include <iostream>
using namespace std;
template <typename T, size_t N>
void array_init(T (&parm)[N]);
int main()
{
//int x[42]; //这样能编译通过,能得到N的值
int *x = new int[42]; //这样就不能编译通过,error C2784: “void array_init(T (&)[N])”: 未能从“int *”为“T (&)[N]”推导 模板 参数
double y[10];
array_init(x);
array_init(y);
system("pause");
return 0;
}
template <typename T, size_t N>
void array_init(T (&parm)[N])
{
cout<<N<<endl;
for(size_t i=0;i != N;i++)
parm[i] = 0;
using namespace std;
template <typename T, size_t N>
void array_init(T (&parm)[N]);
int main()
{
//int x[42]; //这样能编译通过,能得到N的值
int *x = new int[42]; //这样就不能编译通过,error C2784: “void array_init(T (&)[N])”: 未能从“int *”为“T (&)[N]”推导 模板 参数
double y[10];
array_init(x);
array_init(y);
system("pause");
return 0;
}
template <typename T, size_t N>
void array_init(T (&parm)[N])
{
cout<<N<<endl;
for(size_t i=0;i != N;i++)
parm[i] = 0;
}
这是什么原因呢?N的值到底是如何获取到的呢?void array_init(T (&parm)[N]) 参数是什么意思?