Iterator validity
Generally, no changes.
On some implementations, the non-const version may invalidate all iterators, pointers and references on the first access to string characters after the object has been constructed or modified.
Data races
The object is accessed, and in some implementations, the non-const version modifies it on the first access to string characters after the object has been constructed or modified.
The iterator returned can be used to access or modify characters.
Complexity
Unspecified, but generally constant.
Iterator validity
No changes.
Data races
The object is accessed (neither the const nor the non-const versions modify it).
The iterator returned can be used to access or modify characters. Concurrently accessing or modifying different characters is safe.