https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121657
Bug ID: 121657
Summary: wrong parsing of alignas in struct declaration
Product: gcc
Version: 16.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: hanicka at hanicka dot net
Target Milestone: ---
Following code fails:
```c++
struct A { constexpr static int z = 4; };
consteval int get() {
return A{}.z;
}
struct alignas(A{}.z) B {};
struct alignas(get()) C {};
```
with error:
```text
<source>:6:17: error: expected ')' before '{' token
6 | struct alignas(A{}.z) B {};
| ~ ^
| )
<source>:6:19: error: expected ';' after struct definition
6 | struct alignas(A{}.z) B {};
| ^
| ;
<source>:6:18: error: abstract declarator '<unnamed struct>' used as
declaration
6 | struct alignas(A{}.z) B {};
| ^
<source>:6:19: error: expected unqualified-id before '.' token
6 | struct alignas(A{}.z) B {};
| ^
Compiler returned: 1
```
(link: https://godbolt.org/z/9Tja4oo3E)