title: Can I list-initialize a vector of move-only type?
body: <p>If I pass the following code through my GCC 4.7 snapshot, it tries to copy the <code>unique_ptr</code>s into the vector.</p>
  
  <pre><code>#include &lt;vector&gt;
  #include &lt;memory&gt;
  
  int main() {
      using move_only = std::unique_ptr&lt;int&gt;;
      std::vector&lt;move_only&gt; v { move_only(), move_only(), move_only() };
  }
  </code></pre>
  
  <p>Obviously that cannot work because <code>std::unique_ptr</code> is not copyable:</p>
  
  <blockquote>
    <p>error: use of deleted function 'std::unique_ptr&lt;_Tp, _Dp>::unique_ptr(const std::unique_ptr&lt;_Tp, _Dp>&amp;) [with _Tp = int; _Dp = std::default_delete; std::unique_ptr&lt;_Tp, _Dp> = std::unique_ptr]'</p>
  </blockquote>
  
  <p>Is GCC correct in trying to copy the pointers from the initializer list?</p>