Als Beispiel:
string s = "123";
s.assign(find(s.begin(),s.end(),'2'), s.end());
Ist das Verhalten des obigen Codes definiert? Oder führt es zu undefiniertem Verhalten?
Ja. Diese Version von Assign ist definiert als
template<class InputIterator> constexpr basic_string& assign(InputIterator first, InputIterator last);
Einschränkungen : InputIterator ist ein Typ, der als Eingabe-Iterator qualifiziert ist.
Effekte : Entspricht: return assign (basic_string (first, last, get_allocator ()));
Dies zeigt eine temporäre Berechnung, bevor Änderungen vorgenommen werden.