C++03でのスコープ付きenum

今までenumにスコープ持たせるために、私はこういうコードを書いていましたが

struct Color {
    enum {
        Blue,
        Yellow,
        Red
    };
};

int color = Color::Blue;

Boost 1.40のBOOST_SCOPED_ENUMのソース読んでたら、どうやらこれでいいらしい。

struct Color {
    enum enum_t {
        Blue,
        Yellow,
        Red
    };
};

Color::enum_t color = Color::Blue;

あとは先行宣言さえできればすごく便利なんだけど。