Par exemple:
string s = "123";
s.assign(find(s.begin(),s.end(),'2'), s.end());
Le comportement du code ci-dessus est-il défini? Ou cela conduit à un comportement indéfini?
Oui. Cette version d'affect est définie comme
template<class InputIterator> constexpr basic_string& assign(InputIterator first, InputIterator last);
Contraintes : InputIterator est un type qui se qualifie comme un itérateur d'entrée.
Effets : Équivalent à: return assign (basic_string (first, last, get_allocator ()));
qui montre un calcul temporaire avant que les changements ne se produisent.