https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103700
Bug ID: 103700 Summary: Incomplete type not causing constraints to fail Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: ice-on-valid-code, rejects-valid Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: pinskia at gcc dot gnu.org Target Milestone: --- >From PR 101239: Take: auto f(auto a) requires requires { a+1; } { return a+1; } auto f(auto a) { return a; } struct Incomplete *p; auto b = f(p); ----- CUT ---- The pointer addition in the first declaration of f should cause the constraint to fail but currently we get a hard error instead: <source>: In substitution of 'template<class auto:1> auto f(auto:1) requires requires{a + 1;} [with auto:1 = Incomplete*]': <source>:5:15: required from here <source>:2:41: error: invalid use of incomplete type 'struct Incomplete' 2 | auto f(auto a) requires requires { a+1; } { return a+1; } | ~^~ <source>:4:12: note: forward declaration of 'struct Incomplete' 4 | struct Incomplete *p; | ^~~~~~~~~~