https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92214
Bug ID: 92214 Summary: Unhelpful diagnostic for static_assert( some_concept(some_type) ) Product: gcc Version: 10.0 Status: UNCONFIRMED Keywords: diagnostic Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: redi at gcc dot gnu.org Blocks: 67491 Target Milestone: --- If you accidentally use parentheses instead of angle brackets you get a confusing error: template<typename> concept foo = true; static_assert( foo(int) ); Compiled with -std=gnu++2a gives: x.cc:3:16: error: expected 'auto' or 'decltype(auto)' after 'foo' 3 | static_assert( foo(int) ); | ^~~ x.cc:3:23: error: invalid use of 'auto [requires ::foo<<placeholder>, >]' 3 | static_assert( foo(int) ); | ^ x.cc:3:19: error: missing template arguments before '(' token 3 | static_assert( foo(int) ); | ^ x.cc:3:20: error: expected primary-expression before 'int' 3 | static_assert( foo(int) ); | ^~~ I wasn't trying to declare a variable using a placeholder type (which wouldn't be allowed in a static_assert anyway), I was trying to say foo<int>. Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67491 [Bug 67491] [meta-bug] concepts issues