https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82679
--- Comment #2 from olivier.delande.spam at googlemail dot com --- (In reply to Marek Polacek from comment #1) > GCC is correct here, and this behavior is intentional: I don't understand. The comment you are quoting mentions detecting qualifications of the array type, whereas my example qualifies the element type. This is made clearer in the following variant of my example, which produces the same error: typedef _Atomic int my_atomic_int; typedef my_atomic_int my_array[42]; my_array x; int main(void) { return 0; } This additional typedef makes it clearer that int is qualified, not the array type. You write that GCC is correct, but my interpretation of the C standard is that it is not. Could you elaborate and provide a reference to the part of the standard supporting GCC's behavior? (For comparison, clang 3.8.0 accepts both my examples, and does reject _Atomic qualifications of array types.)