https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100667
--- Comment #10 from Jonathan Wakely <redi at gcc dot gnu.org> --- Oh interestingly __is_constructible(Incomplete&&, Incomplete) is already allowed, but __is_nothrow_constructible and __is_convertible give errors: __is_nothrow_constructible(Incomplete&&, Incomplete) <stdin>: In function ‘int main()’: <stdin>:117:68: error: invalid use of incomplete type ‘struct Incomplete’ [-fpermissive] <stdin>:110:8: note: forward declaration of ‘struct Incomplete’ __is_convertible(Incomplete, Incomplete&&) <stdin>: In function ‘int main()’: <stdin>:117:58: error: invalid use of incomplete type ‘struct Incomplete’ [-fpermissive] <stdin>:110:8: note: forward declaration of ‘struct Incomplete’