https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120306
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #3) > So clang accepts it also when using libstdc++. when using libc++ clang > rejects it due to the type trait __is_nothrow_destructible being used with > an incomplete type. > > Simplified testcase: > ``` > #include <concepts> > > struct S; > auto t = std::copy_constructible<S>; > ``` GCC does reject: auto t = std::is_copy_constructible_v<S>; I have not looked into the definitions of the concepts vs type traits to say if the concepts should be accepted; though I suspect it should be because of the way concepts decay to false if there is an error in many cases.