Presently, enums support these properties: .init = lexically-first member value .min = smallest value .max = largest value .sizeof = size of underlying storage type I propose adding another property, .length The value would be the array-declaration-friendly number of elements in the enum. Thus, enum E { A, B, C }; int[ E.length ] counters; // int[3] There is always the possibility that enum values would be declared as duplicates of each other: enum F { A = 0, B, C = 0 }; In that case, .length would _still_ return 3, because it's defined at the number, not the number(unique) or anything. (And because not all enumerated types will supported ==).
See bug 4997
*** This issue has been marked as a duplicate of issue 4997 ***