typedef int T1[]; typedef const int T2[]; void f(int a[const], const int b[], const T1 c, T2 d) { /* check type of address, since __builtin_types_compatible_p ignores top-level qualifiers */ static_assert(__builtin_types_compatible_p(typeof(&a), int *const*)); static_assert(__builtin_types_compatible_p(typeof(&b), const int **)); static_assert(__builtin_types_compatible_p(typeof(&c), const int **)); static_assert(__builtin_types_compatible_p(typeof(&d), const int **)); }