https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101677
--- Comment #2 from Joe Loser <joeloser93 at gmail dot com> --- (In reply to Andrew Pinski from comment #1) > >This bug can be worked around by using a complete type instead when defining > >the concept. > > It does not even have to be complete type; just defined before. > So adding: > class S; > at the begining causes GCC to accept the code. Yep, you're right. That's actually what I use in my codebase as a workaround. I misspoke in the description -- sorry about that. Updated Godbolt link is at https://godbolt.org/z/KGq48WYq4