http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49896
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-07-30 12:09:28 UTC --- The initializer results in integer overflow which is undefined behaviour, so if G++ accepts it but requires the variable to be defined then that is a reasonable result. The modified example shouldn't cause an ICE, that's a regression, but it seems to be fixed in 4.7 already