クラス名を重ねる

コピペミスでクラス名を重ねてしまった。
以下、単純化したサンプル

struct foo
{
  static const int bar = 2;
};

int main()
{
  cout << foo::foo::bar << endl;
  return 0;
}

VCでは、エラーが出たが、GCCでは、警告も出ずに通ってしまった。
どうやら、validらしい。『補整クラス名』*1というのね。知らんかった。

*1:規格票では、『補正クラス名』という語も使われている。どっちが正しい名称なんだろ?