https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90961
Bug ID: 90961 Summary: awful diagnostics for noexcept-expression with type name Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: mpolacek at gcc dot gnu.org Target Milestone: --- For static_assert(noexcept(void)); we generate a host of bogus errors: q2.C:1:24: error: expected primary-expression before ‘void’ 1 | static_assert(noexcept(void)); | ^~~~ q2.C:1:24: error: expected ‘)’ before ‘void’ 1 | static_assert(noexcept(void)); | ~^~~~ | ) q2.C:1:24: error: expected ‘,’ before ‘void’ 1 | static_assert(noexcept(void)); | ^~~~ | , q2.C:1:24: error: expected string-literal before ‘void’ 1 | static_assert(noexcept(void)); | ^~~~ q2.C:1:24: error: expected ‘)’ before ‘void’ 1 | static_assert(noexcept(void)); | ~ ^~~~ | ) q2.C:1:29: error: expected ‘;’ before ‘)’ token 1 | static_assert(noexcept(void)); | ^ | ; q2.C:1:29: error: expected unqualified-id before ‘)’ token Instead, we should generate one error saying something like "type names not allowed".