typedef enum _E { HOGE0, HOGE1, HOGE2 } E;
int foo( E e ) {
    return (int)e;
}
なんでこのコードが VC++ で通らないのか、やっと解ったよ