namespace X
{ enum { E = 1 }; }
struct X
{ enum { E = 2 }; };

int f(){ return X::E; }

「あいまいです」とか言われそうなもんなんですが、
エラーも警告もなんにもでないんです。
同じ名前の名前空間とクラスが :: で指定されたとき、
どのように振舞うような仕様なのでしょうか?

ちなみに、gcc3.2 では、 f()==2 になります。