Что слева и справа? Это ссылки на массивы? Разрешен ли этот код стандартом C ++ ISO 2003 или более поздней версии?
Да. Они ссылаются на массивы.
Это означает, что вы можете позвонить swap_impl
как:
int a[10]; //array
int b[10];
//...
swap_impl(a,b); //correct
Но вы не можете позвонить swap_impl
как:
int *a = new int[10]; //pointer
int *b = new int[10];
//...
swap_impl(a,b); //compilation error
Также обратите внимание, что вы не можете сделать даже это:
int a[10];
int b[11];
//...
swap_impl(a,b); //compilation error - a and b are arrays of different size!
Важный момент:
- Массивы должны быть не только аргументами, но и массивами одинакового размера!