Каков предпочтительный простой метод для итерации через enum со смежными значениями в С++? Я нашел предыдущие 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 ...
кажется довольным этим)?