For a raw array all that you have to work with is the default
constructor, and all that it knows about the object it's initializing,
is its address.
If, however, it has available the start address of the array, a pointer
to first item in the array, then it can compute its array index.
This means a class that's not usable as anything but array item. But
maybe it can be done as templated wrapper for the "real" array item class.
* * *
An alternative is to just define a factory function that first creates
the array, and then loops over all items, passing them the item index.
Cheers & hth.,
- Akf