不完全な列挙型

GCCでは、不完全な列挙型を宣言できる。
C++では利用できない。

enum foo;	/* 不完全な列挙型の宣言 */

...

enum foo {
  hoge,
  hage,
  moge,
  sage,
  fuge
};

他の不完全型同様、変数を定義したり、sizeof演算子オペランドにすることはできない。
Cでは sizeof(enum) == sizeof(int) なんだから、出来てもよさそうな気もするんだが。
GCCでは、sizeof(enum) != sizeof(int)になる場合があることが判明。