The container is accessed (neither the const nor the non-const versions modify the container).
The reference returned can be used to access or modify characters. Concurrently accessing or modifying different characters is safe.
If the string is not empty, the function never throws exceptions (no-throw guarantee).
Otherwise, it causes undefined behavior.