title: What is the benefit of std::unique_ptr including the deleter as part of the type
body: <p>Is there a reason behind why <code>std::unique_ptr</code> contains the deleter function signature as part of the template definition?</p>
  
  <pre><code>template&lt;class T, class Deleter = std::default_delete&lt;T&gt;&gt; class unique_ptr;
  </code></pre>
  
  <p>vs</p>
  
  <pre><code>template&lt; class T &gt; class shared_ptr;
  </code></pre>