This code prints out the reversed content of a string character by character using a reverse iterator that iterates between rbegin and rend. Notice how even though the reverse iterator is increased, the iteration goes backwards through the string (this is a feature of reverse iterators).
The actual output is:

...evil pets won

Complexity

Unspecified.

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.

Exception safety

No-throw guarantee: this member function never throws exceptions.
The copy construction or assignment of the returned iterator is also guaranteed to never throw.