Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of Boost. Click here to view this page for the latest version.
PrevUpHomeNext

exchange

Overview
Examples
Reference

Authors

  • Glen Fernandes

The header <boost/core/exchange.hpp> provides the function template boost::exchange which is an implementation of the std::exchange function introduced in C++14. boost::exchange(o, v) replaces the value of o with v and returns the old value of o.

The following example shows boost::exchange used to simplify the implementation of a move constructor.

Node(Node&& other)
  : head_(boost::exchange(other.head_, nullptr))
  , tail_(boost::exchange(other.tail_, nullptr)) { }
namespace boost {
  template<class T, class U = T>
  constexpr T exchange(T& t, U&& u);
}

template<class T, class U = T> constexpr T exchange(T& t, U&& u);

Equivalent to:

T v = std::move(t);
t = std::forward<U>(u);
return v;

PrevUpHomeNext