https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67503
--- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> --- This is just like having a struct like: Struct { Char a[4]; Char *b = a; }; Sorry for char and struct being in the wrong case. Also using a c++11 feature to show the case easier. This is a valid thing to do and that is exactly what the new std::string does. This saves space and allows for short strings not have to an extra allocation.