OK, I think I see your problem.
In Nim an empty subscript [] notation can be used to derefer a reference or
ptr. So if p is a pointer to string, in C++ you would write '*'p to dereference
it, but in Nim you write p[]. And in Nim you can write p[n] to access the n'th
character in that string. I would guess that p[][n] == p[n] but I have never
tried if that compiles. In C++ we could write ('*'p)[0] to access the first
character, in Nim that is p[0]. That is easier to write, and I think that
implies no restrictions, as we do no pointer arithmetic in Nim like p++ in C.
Note: I put wrong '' around the star to make forum work...