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.

Reply via email to