title: std::unique_ptr, custom deleter and type change
body: <p>I would like to use unique_ptr with my deleter. 
  I would like my unique_ptr with my deleter to be fully compatible with unique_ptr with default deleter. </p>
  
  <p>I did so:</p>
  
  <pre><code>template &lt;typename T&gt;
  struct QObjectDeleteLaterDeletor :
          public std::default_delete&lt;T&gt;
  {
      void operator()(T *p)
      {
          p-&gt;deleteLater();
      }
  };
  
  template &lt;typename T, class... Args&gt;
  std::unique_ptr&lt;T&gt; qtMakeUniqueSpecial(Args&amp;&amp;... args)
  {
      return std::unique_ptr&lt;T&gt;(
                  new T(std::forward&lt;Args&gt;(args)...),
                  QObjectDeleteLaterDeletor&lt;T&gt;());
  }
  </code></pre>
  
  <p>This compiles, but does not work. My custom deleter ignored and default one used instead as if I did not specify it at all.</p>
  
  <p>I need all of this to be possible to do things like that:</p>
  
  <pre><code>auto ptr1 = qtMakeUniqueSpecial&lt;MyObject&gt;();
  std::unique_ptr&lt;MyObject&gt; ptr2;
  ptr2 = std::move(ptr1);
  </code></pre>
  
  <p>Please note that now even ptr1.reset() will lead to calling the standard deleter, not my one.</p>
  
  <p>Is it even possible?</p>