https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90807
Bug ID: 90807 Summary: Wrong debug message Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: zhonghao at pku dot org.cn Target Milestone: --- My gcc is 10.0.0, and my code is: void f() { union { typeof ( ( { unsigned long __ptr; (int *)(0); } ) ) __val; }; } gcc rejects it with the following message: x86-64 gcc (trunk) 1 <Compilation failed> No Results x86-64 gcc (trunk) - cached #1 with x86-64 gcc (trunk) <source>: In function 'void f()': <source>:5:2: error: statement-expressions are not allowed outside functions nor in template-argument lists 5 | ( | ^ Compiler returned: 1 The message seems to be wrong, since the statement-expression here is inside a function and not inside a template-argument-list. BTW, the code does not violate any of the rules in https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html). Clang accepts the code. Do you intend to allow statement-expressions inside function-local type definitions or not.