C++0x scoped enums don't implicitly convert to an integral type, so we need to be careful about throwing away explicit conversions. In this case, the static_cast(e) creates a NOP_EXPR which get_narrower throws away, but 'e' itself is not a valid argument for &, so we need to replace the NOP_EXPR with a different one. Tested x86_64-pc-linux-gnu. OK for trunk?