------- Comment #2 from jason at gcc dot gnu dot org 2010-04-08 02:58 ------- Except that the conversion is defined to produce an unspecified value, not undefined behavior. A strict reading of that suggests to me that the compiler is supposed to truncate on conversion so the resulting value is one of the values of the enumeration, but that's certainly not what we want.
I also raised this issue as http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#1022 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43680