See the below example:

```
int arr[10];
int *p = arr; // 1st valid choice
int (&r)[10] = arr; // 2nd valid choice

```

Now when we use `auto` against `arr` then, it chooses the 1st choice.

```
auto x = arr; // x is equivalent to *p

```

Is there a reason for [choosing a pointer and not reference](http://www.ideone.com/pCV3J) for array ?