https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71579
--- Comment #22 from Antony Polukhin <antoshkka at gmail dot com> --- > Maybe we should consider dropping all the static assertions from traits that > are implemented using a compiler built-in. Sounds like the right thing to do. > Our type trait and the __has_virtual_destructor built-in both seem to get > this wrong, rejecting Incomplete[2], which is not a class type, and so > doesn't need to be complete (or maybe the precondition is wrong and there's a > library defect?) The library precondition seems right. As I read it, the trait just checks for `virtual` on the destructor. If there's no destructor - it is fine, no `virtual` on it.