C++0xでは、structやclassと同様に、enumも先行宣言できるようになります。 以下のようなヘッダーファイルがあった場合 // Color.h enum Color { /* 多くの列挙子... */ }; void draw(Color& color); draw関数の宣言にはColor内の列挙子を必要としませんが、 C++03ではenumを先行宣言することができないので Colorの列挙子を変更したら関連する全てのファイルの再コンパイルが必要になります。 C++0xでは、enumの先行宣言が許可されるので、 以下のように書くことができるようになります。 // Color.h enum Color : int; void draw(Color& color); // Color.cpp enum Color : int { /* 多くの列挙子... */ }; void dr