¿Por qué las matrices de tamaño de tiempo de ejecución y std :: dynarray en C ++ 14?

El borrador C ++ 14 incluye tanto arreglos de tamaño de tiempo de ejecución como elstd::dynarray envase. Por lo que puedo decir, la única diferencia real entre los dos es questd::dynarray tiene una interfaz STL (por ejemplo,begin, end, size, etc.), mientras que las matrices de tamaño de tiempo de ejecución no lo hacen. Entonces, ¿por qué C ++ 14 los necesita a ambos?

Entiendo que los arreglos de tamaño de tiempo de ejecución son parte del lenguaje central, mientras questd::dynarray Es parte de la biblioteca estándar, perola propuesta destd::dynarray deja claro que los autores esperan que los compiladores, en muchos casos, ofrezcan apoyo especial parastd::dynarray de modo que pueda ser lo más eficiente posible, es decir, tan eficiente como una matriz de tamaño de tiempo de ejecución. Como tal, la distinción de lenguaje / biblioteca parece algo artificial.

Entonces, una vez más, ¿por qué C ++ 14 necesita matrices de tamaño de tiempo de ejecución ystd::dynarray? Y dado esostd::dynarray tiene una interfaz más rica (STLified), ¿por qué no soltar matrices de tamaño de tiempo de ejecución, asumiendo questd::dynarray ¿Se puede implementar con igual eficiencia en tiempo de ejecución?

Aclaración

Cuando hablo de "matrices de tamaño de tiempo de ejecución", me refiero a una nueva función de lenguaje central de C ++ 14 que se describe enN3639, no a los arrays de C tradicionales ni a los VLA ni nada en C ++ 11.

Respuestas a la pregunta(3)

Su respuesta a la pregunta