https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54265
--- Comment #2 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- The earlier position is preferred because logically at the closing brace the type should be fully defined and it should no longer be possible to change properties of it through attributes coming afterwards. Note that for [[]]-style attributes (standard C++, also expected to be in C2X), an attribute after the struct/union/enum keyword appertains to the type being defined and becomes a property of that type whenever used, while one after the closing brace appertains to the type only for that declaration, not for any subsequent uses of that struct/union/enum.