https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106838
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- The documented preconditions for __is_literal_type, __is_pod, __is_standard_layout, and __is_trivial say: Requires: type shall be a complete type, (possibly cv-qualified) void, or an array of unknown bound. But the corresponding library trait says: "remove_all_extents_t<T> shall be a complete type or cv void." I think r13-25 was right to allow arrays of unknown bound, but there should also be a check that the array element is complete. Looks like __is_aggregate has the same problem, but isn't documented in the manual.