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 {} | ^