https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63362
--- Comment #23 from Jason Merrill <jason at gcc dot gnu.org> --- (In reply to Ville Voutilainen from comment #22) > This test fails the static_assert for TType (which is a trivial type), > PODType and DelDef, and it would be expected that all those static_asserts > succeed. No: struct A { }; int main() { volatile A a; volatile A a2(a); // ill-formed } test_category is testing whether volatile TType is trivially copy-constructible, and it isn't copy-constructible at all. Incidentally, you don't need to test anything else before __is_trivially_constructible, it will just return false if the type isn't constructible at all. Likewise for assignable. Looking at the ICE.