Цитата из этого блога:
http://www.codesynthesis.com/~boris/blog/2008/10/13/writing-64-bit-safe-code/
Это работает, потому что действительный индекс памяти может быть только в диапазоне [0, ~ size_t (0) -1]. Тот же подход, например, используется в std::string.
Итак, почему ~size_t(0)
(это обычно должно равняться 0xFFFFFFFF
в 32-битных системах), а не действительный индекс массива? Я предполагаю, что если у вас есть 32 бита, вы должны иметь возможность ссылаться на весь диапазон [0, 0xFFFFFFFF], no?