
2008/8/18 Andrea Denzler
So at least on a local scale, index values do correspond to memory addresses or memory offsets.
Sure, A part from STL and other containers using they own operator, when you use direct memory access a index is used to access the flat memory of the allocated object/array.
The "problem" could be solved by using largest _signed_ type both for size_type and difference_type. [snip] So I'd advocate signed representation for size_type and difference_type.
Sure, also because when you play with pointers you have negative indexes too. So a signed index is welcome, and it should cover the range of the maximum memory size of an object (not the entire memory).
But on a 32 bit architecture where theorically I can allocate up to 4 Gigabyte for a single object using a signed integer requires a 32bit + sign = 33 bits. Ops... what now? A) using signed 32bit, so the memory address swaps between -2^31 and +2^31-1. Not exactly elegant. B) using unsigned 32 bit, a contingous address from 0 to +2^32. C) using a bigger integral signed type, probably a 64 bit signed. And 2 GByte is not that uncommon...
I believe (I checked some time ago) that you cannot allocate an object of size 2GB on any 32-bit OS that I could get my hands on. Do you know of any place where you can? Chris