23 General utilities library [utilities]

23.2 Utility components [utility]

23.2.4 exchange [utility.exchange]

template <class T, class U = T> T exchange(T& obj, U&& new_val);

Effects: Эквивалентно:

T old_val = std::move(obj);
obj = std::forward<U>(new_val);
return old_val;