Реф. к моему last post и комментарию sellibitze к этому сообщению о передаче массива с помощью ref, а не по значению, почему это так, что когда я передаю массив по значению, компилятор может выводить аргументы, но он не будет делать этого, если я передам его по значению?Проходящий массив по реф.
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?
ли я понимаю, это правильно сейчас?
Вы не можете передать массив по значению в C++ - вы передаете только указатель или ссылку –
[передача массивов указателем по ссылке] (http://stackoverflow.com/questions/2559896/how-are -arrays-pass/2560474 # 2560474) – fredoverflow
Разъясняется здесь: http://stackoverflow.com/questions/437150/can-someone-explain-this-template-code-that-gives-me-the-size-of-an -array –