In my post I was trying to make the point that if you iterated over an enum that skipped a value, the loop will not know to skip over the value also.
So that means that this will still return a 2 during the iteration:
that is probably a good reason not to assign specific value to an enum, at least if you intend to use them in place of an array, of course if you wish to use them as bit representations, or anything similar, then that would be different, but on iterating should test if it is a valid enum item