http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53479
--- Comment #2 from Georg Rudoy <0xd34df00d at gmail dot com> 2012-05-24 20:04:56 UTC --- (In reply to comment #1) > Foo f = Foo(2); > assert( DoFoo( f ) ); > > Undefined behaviour. Yes, it is. And isn't it happening at the point of cast of an integer to the enum class type?