https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90611
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Aaron Greig from comment #1) > actually it seems that vector_size(16) creates a type that is over aligned, > the following assert fails: > > static_assert(std::alignment_of<int4>::value <= alignof(max_align_t), "over > aligned!"); That should only fail with GCC 5, not with GCC 8. Current versions of GCC defined max_align_t to have 16-byte alignment, so your type is not overaligned with current versions (but as I said above, the old glibc on Ubuntu 16.04 disagrees).