title: How to overload std::swap()
body: <p><code>std::swap()</code> is used by many std containers (such as <code>std::list</code> and <code>std::vector</code>) during sorting and even assignment.</p>
  
  <p>But the std implementation of <code>swap()</code> is very generalized and rather inefficient for custom types.</p>
  
  <p>Thus efficiency can be gained by overloading <code>std::swap()</code> with a custom type specific implementation. But how can you implement it so it will be used by the std containers?</p>