title: Why both runtime-sized arrays and std::dynarray in C++14?
body: <p>Draft C++14 includes both runtime-sized arrays and the <code>std::dynarray</code> container.  From what I can tell, the only real difference between the two is that <code>std::dynarray</code> has an STL interface (e.g., <code>begin</code>, <code>end</code>, <code>size</code>, etc.), while runtime-sized arrays do not. So why does C++14 need them both?</p>
  
  <p>I understand that runtime-sized arrays are part of the core language, while <code>std::dynarray</code> is part of the standard library, but <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2648.html" rel="noreferrer">the proposal for <code>std::dynarray</code></a> makes clear that the authors expect compilers, in many cases, to offer special support for <code>std::dynarray</code> so that it can be as efficient as possible, i.e., as efficient as a runtime-sized array. As such, the language/library distinction seems somewhat artificial.</p>
  
  <p>So, again, why does C++14 need both runtime-sized arrays and <code>std::dynarray</code>?  And given that <code>std::dynarray</code> has a richer (STLified) interface, why not just drop runtime-sized arrays, assuming that <code>std::dynarray</code> can be implemented with equal runtime efficiency?</p>
  
  <p><strong>Clarification</strong></p>
  
  <p>When I talk about "runtime-sized arrays," I'm referring to a new C++14 core language feature that's described in <a href="http://isocpp.org/files/papers/N3639.html" rel="noreferrer">N3639</a>, not to traditional C arrays or VLAs or anything in C++11.</p>