It could be good, or not.

One point about it is that this form does not explicitly specify the order of the iteration. Therefore I would only use it in cases where that is the intent, and even in that case, explicitly specify the type.

int main() {
  int numberArray[] = {
    100,
    200,
    300,
    400,
    500
  };
  for (int number: numberArray) {
    cout << number << " ";
  }
  return 0;
}

prints: 100 200 300 400 500 …. or does it? why not: 300 200 500 400 100 …. ?

We really need a loop like this, or better yet .. one that supports parallel operation. This would have been a good place to introduce it.