参考文献 私の最後の投稿と、値ではなく参照で配列を渡すことに関するその投稿へのセリビツェのコメントに、配列を値ではなく参照で渡すときに、コンパイラーが引数を推測できるのに、値で渡すとそれができないのはなぜですか?
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?
私は今これを正しく理解していますか?