enum classをfor文で回す。

#define GENERATE_ENUM_ITERATOR(T) \
inline T operator++(T& x) { return x = (T)(std::underlying_type<T>::type(x) + 1); } \
inline T operator*(T c) { return c; } \
inline T begin(T r) { return static_cast<T>(0); } \
inline T end(T r) { T l = T::LAST; return l; }

enum class  Color{
    red, blue, LAST
}

GENERATE_ENUM_ITERATOR(Color);

int main() {
    for (Color c : Color()) {
        doSomething(c);
    }
}