title: What are customization point objects and how to use them?
body: <p>The last draft of the c++ standard introduces the so-called "customization point objects" (<a href="http://eel.is/c++draft/customization.point.object" rel="noreferrer">[customization.point.object]</a>),
  which are widely used by the ranges library.</p>
  
  <p>I seem to understand that they provide a way to write custom version of <code>begin</code>, <code>swap</code>, <code>data</code>, and the like, which are
  found by the standard library by ADL. Is that correct?</p>
  
  <p>How is this different from previous practice where a user defines an overload for e.g. <code>begin</code> for her type in her own
  namespace? In particular, why are they <em>objects</em>?</p>