Я пытался использовать перечисление в цикле for следующим образом:
enum foo
{
foo_0,
foo_1,
foo_2,
foo_3,
...
foo_n,
foo_count
};
for(foo f = foo_0; f < foo_count; ++f)
и у меня произошла ошибка компиляции. Я понимаю, что это недопустимо, потому что ++ f может быть недопустимым перечислением foo - не в этом случае, а в общем случае, поэтому я переключил цикл for на это:
for(foo f = foo_0; f < foo_count; f = foo(f+1))
, который хорошо компилируется. Но это поднимает следующий вопрос. Что произойдет, если у меня будет следующее утверждение?
foo f = foo(k); //k is not a valid foo value
Это неопределенное поведение?
РЕДАКТИРОВАТЬ: k является int и не имеет соответствующего значения в foo
EDIT2:
enum foo
{
foo_0,
foo_1,
foo_2,
foo_3
};
foo f = foo(100); //what value will have f after this according to the standard
Спасибо за помощь!