https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101113

            Bug ID: 101113
           Summary: g++ thinks constructor suppressed by a requires clause
                    is actually a bad copy constructor
           Product: gcc
           Version: 11.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: gcc at nospam dot scs.stanford.edu
  Target Milestone: ---

g++ 11.1.0 is rejecting the following correct code when compiling with
`-std=c++20` (test case public domain):

template<bool B> struct S {
  S() {}
  S(S<false>) requires B {}
};
S<false> sf;

Here is the error message:

$ g++ -std=c++20 -c test.cc
y.cc: In instantiation of 'struct S<false>':
y.cc:3:26:   required from here
y.cc:3:3: error: invalid constructor; you probably meant 'S<false> (const
S<false>&)'
    3 |   S(S<false>) requires B {}
      |   ^

Reply via email to