参考。在我的上一篇文章和sellibitze 对该文章的评论中通过引用而不是值传递数组时,为什么当我通过值传递数组时编译器可以推断参数但如果我通过值传递它就不会这样做?
template<class T,int row, int col>
void invert(T (&a)[row][col]) //NOTE AMPERSAND
在上面的声明中,我可以调用:
int main(int argc, char* argv[])
{
invert(a);//HERE ARGUMETS ARE AUTOMATICALLY DEDUCED
}
但如果没有&符号,我将不得不这样称呼它:
int main(int argc, char* argv[])
{
invert<int,3,4>(a);
}
@Paul所以只是为了在我声明fnc时说清楚:
void f(int a[]);//I'm passing a pointer
但是当我声明时:
void f(int &a[]);//I'm passing a ref?
我现在理解正确了吗?