https://gcc.gnu.org/bugzilla/show_bug.cgi?id=15795
--- Comment #45 from Jonathan Wakely <redi at gcc dot gnu.org> --- C++17 added support for dynamic allocation of over-aligned types, and requires std::allocator to use it. User-defined allocators are not required to support over-aligned types. Before C++17 it was implementation-defined whether std:allocator supports them. When using GCC they are supported when -faligned-new is used (which is the default for C++17 and can be enabled for earlier modes if needed).