title: Why is is_copy_constructible_v<vector<unique_ptr<T>> true?
body: <p>A <code>vector</code> of <code>unique_ptr</code>s is obviously not copyable as proved by the code snippet below. The corresponding trait of <code>is_copy_constructible</code> returns true dispite of this. Why is that?</p>
  
  <pre class="lang-cpp prettyprint-override"><code>#include &lt;memory&gt;
  #include &lt;vector&gt;
  
  // This static assert passes, which is surprising
  static_assert(std::is_copy_constructible_v&lt;std::vector&lt;std::unique_ptr&lt;int&gt;&gt;&gt;);
  
  std::vector&lt;std::unique_ptr&lt;int&gt;&gt;
  test(const std::vector&lt;std::unique_ptr&lt;int&gt;&gt;&amp; original)
  {
      std::vector&lt;std::unique_ptr&lt;int&gt;&gt; copy /* = original */;
      // commented-out part does not compile, as expected
      return copy;
  }
  </code></pre>