I do not know why would anyone need an offset.
Personally, I do not subtract indecies.
Even if you do, I guess you do not put them into an a[].
If you do, how often does one need an operation like that?
I almost never.
For that reason, to make the type of indices int seems to me an overkill.
Anyway, there could be a definition for both type of indices....
with int and unsigned type....
STL uses unsigned types.
Where can you see a problem with that?