C ++で連続した値を持つ列挙型を反復処理するための好ましい単純な方法は何ですか? カスタムの作成などを含む、この件に関する以前のSOの質問を見つけましoperator++
たが、これはやり過ぎのようです。これまでのところ、私が思いついた最高のものは次のとおりです。
enum {
FOO,
BAR,
BLECH,
NUM_ENUMS
} MyEnum;
//for (MyEnum m = FOO; m < NUM_ENUMS; ++m) // compile error
// ...
//for (MyEnum m = FOO; m < NUM_ENUMS; m = m + 1) // compile error
// ...
for (MyEnum m = FOO; m < NUM_ENUMS; m = MyEnum(m + 1)) // OK ?
...
これはコーディングスタイルの観点から合理的であり、警告を生成する可能性がありますか (g++ -Wall ...
これに満足しているようです)?