C++11で導入された enum class を static_cast で整数型にキャストしてむりくりfor文でループさせてるコードを見かけました。軽く調べたところ begin(), end(), operator*(), operator++()を定義すれば範囲for文で使えるようになるようです。 #include <iostream> using namespace std; enum class Dir { Top, Down, Left, Right, Max }; Dir begin(Dir) { return Dir::Top; } Dir end(Dir) { return Dir::Max; } Dir operator*(Dir dir) { return dir; } Dir operator++(Dir& dir) { return dir = Dir(underl