https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118924
--- Comment #9 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The reason why it works with the C front-end is actaully because of r9-6782-g2a82beaa820410. There C front-end explictly makes enum and the underlying integer types have the same aliasing set. So the question is should C++ have the same treatment or is that another difference. Plus reading the std-discussion is that C++ is difference from C here. Still the array assignment is wrong from the front-end.