https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108669
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- What I thought would be a reduced testcase is correctly rejected: #include <type_traits> struct B; template<typename T> struct v { static_assert(std::is_destructible<T>::value); }; struct A { v<B> _; }; A a{}; // <--here struct B {}; So maybe I am missing something ...