https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93923
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- Sorry, that wasn't a correct fix, I missed a ! in the variable template, and adding that means it gives an error again. I still think GCC is right to reject the program, because it has an unresolvable cycle where is_copy_constructible<A> depends on is_constructible<A, const A&> which is obviously recursive.