https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89519
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- C++98 says S is non POD. This is why the difference comes into play. To be abi compatible with the two language options it needs to be that way.