https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91259
Bug ID: 91259 Summary: Parenthesize requires clauses that contain expressions that are not just a value of type bool Product: gcc Version: 9.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: david at doublewise dot net Target Milestone: --- requires clauses in C++20 must have the expression be parenthesized unless it is a logical combination of concepts or the name of a single variable of type bool. libstdc++ contains many expressions that are not parenthesized that do not meet these requirements (this was not true of the Concepts TS, but as changed as part of standardization). For instance, in <memory>, we have `requires ! _Std_pair<_Tp>`. This causes an error when trying to compile using clang + libstdc++, as clang-concepts does not accept this older form. See https://github.com/saarraz/clang-concepts/issues/73 for the bug report against clang.