¿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.