I know that the `restrict` qualifier in C specifies that the memory region pointed by two pointers should not overlap. It was my understanding that the Linux (not SUS) prototype for `memcpy` looks like -
```
void* memcpy(void *restrict dest, const void *restrict src, size_t count);
```
However, when I looked at [man7.org/memcpy][1] it seems that the declarations is -
```
void *memcpy(void dest[restrict .n], const void src[restrict .n], size_t n);
```
My questions are -
1. When did this syntax get introduced? C99 or later or is this some GNU extension?
2. What does the `.` before `n` signify? I am familiar with the variable length array declaration. Is the `.` for the variable appearing after the array specification? Is this part of the standard?


  [1]: https://man7.org/linux/man-pages/man3/memcpy.3.html