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