The 21.string.assign.cpp test has been failing a number of assertions for self-referential test cases that exercise the ability to assign a substring of a string into itself using the assign(InputIterator, InputIterator) member template specialization for InputIterator being an actual reverse_iterator. The program below reproduces the problem in a small isolated test case.
int main ()
std::string s ("abc");
s.assign (s.rbegin () + 1, s.rend ());
assert ("ba" == s);