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