title: Is std::array movable?
body: <p><strong>Is std::array movable?</strong></p>
  
  <p>In <a href="http://ecn.channel9.msdn.com/events/GoingNative12/GN12Cpp11Style.pdf" rel="noreferrer">Bjarne Native 2012 presentation slides</a> (slide 41) it lists <code>std::array</code> as one of the only containers that isn't movable.</p>
  
  <p>A quick look on gcc 4.8 libraries source code seems to confirm that <code>std::array</code> is not movable:</p>
  
  <p>std::vector:</p>
  
  <pre><code>/* @brief  %Vector move constructor.
     ...       */
    vector(vector&amp;&amp; __x) noexcept
    : _Base(std::move(__x)) { }
  </code></pre>
  
  <p>while in std::array the only method that receives a rvalue reference parameter is the random element access, which avoids a return by copy:</p>
  
  <pre><code>get(array&lt;_Tp, _Nm&gt;&amp;&amp; __arr) noexcept
      { /*...*/ return std::move(get&lt;_Int&gt;(__arr)); }
  </code></pre>
  
  <p><strong>Is move-constructor and move-assignment for <code>std::array</code> defaulted created, or is <code>std::array</code> unmovable? If it is unmovable, why <code>std::array</code> cannot be moved while <code>std::vector</code> can?</strong></p>