たとえば、下のプログラムはrestrictの言語仕様を満たしているのでしょうか?

int a[10];

int f(restrict int *p)
{
  return *p + a[2];
}

int g(void)
{
  f(&a[2]);
}