title: std::unique_ptr constexpr constructors
body: <p>As shown <a href="http://en.cppreference.com/w/cpp/memory/unique_ptr/unique_ptr" rel="noreferrer">here</a>, <code>std::unique_ptr</code> has two <code>constexpr</code> constructors for null pointers:</p>
  
  <pre><code>constexpr unique_ptr();
  constexpr unique_ptr( nullptr_t );
  </code></pre>
  
  <p>I have two questions for these two constructors:</p>
  
  <ol>
  <li><p>Why do we need two? Can't we just declare one as:</p>
  
  <pre><code>constexpr unique_ptr( nullptr_t = nullptr );
  </code></pre></li>
  <li><p>Is the <code>constexpr</code> really useful? I tried doing this in my code but it didn't compile (g++ 6.1.0, <code>-std=c++14</code>):</p>
  
  <pre><code>constexpr std::unique_ptr&lt;int&gt; p;
  // error: the type 'const std::unique_ptr&lt;int&gt;' of constexpr variable 'p'
  // is not literal because 'std::unique_ptr&lt;int&gt;' has a non-trivial destructor
  </code></pre></li>
  </ol>