Consider the following sample code:
static const unsigned alignment = 32;
char data __attribute__((aligned(alignment /*+ 0*/)));
} __attribute__((aligned(A::alignment /* + 0 */)));
g++ (r193606) complains that "requested alignment is not an integer constant", but when the "+ 0" part is uncommented, the requested alignment magically becomes a constant.
Seems related to PR 53017.
*** This bug has been marked as a duplicate of bug 53017 ***