Warum sowohl Arrays in Laufzeitgröße als auch std :: dynarray in C ++ 14?

Draft C ++ 14 enthält sowohl Arrays in Laufzeitgröße als auch dasstd::dynarray Container. Soweit ich weiß, besteht der einzige wirkliche Unterschied zwischen den beiden darin, dassstd::dynarray hat eine STL-Schnittstelle (z.B.begin, end, sizeusw.), während Arrays in Laufzeitgröße dies nicht tun. Warum braucht C ++ 14 beide?

Ich verstehe, dass Arrays in Laufzeitgröße Teil der Kernsprache sind, währendstd::dynarray ist Teil der Standardbibliothek, aberder vorschlag fürstd::dynarray macht deutlich, dass die Autoren von den Compilern in vielen Fällen eine besondere Unterstützung erwartenstd::dynarray so dass es so effizient wie möglich sein kann, d. h. so effizient wie ein Array mit Laufzeitgröße. Insofern erscheint die Unterscheidung zwischen Sprache und Bibliothek etwas künstlich.

Warum benötigt C ++ 14 also sowohl Arrays in Laufzeitgröße als auchstd::dynarray? Und das gegebenstd::dynarray hat eine reichhaltigere (STLified) Schnittstelle. Warum also nicht einfach Arrays in Laufzeitgröße löschen, wenn man das annimmt?std::dynarray kann mit gleicher Laufzeiteffizienz implementiert werden?

Klärung

Wenn ich von "Arrays in Laufzeitgröße" spreche, beziehe ich mich auf eine neue C ++ 14-Kernsprachfunktion, die in beschrieben wirdN3639, nicht auf herkömmliche C-Arrays oder VLAs oder irgendetwas in C ++ 11.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage