C++14 草案包括运行时大小的数组和std::dynarray
容器。据我所知,两者之间唯一真正的区别是std::dynarray
具有 STL 接口(例如 、、begin
等),而运行时大小的数组则没有。那么为什么 C++14 两者都需要呢?end
size
我知道运行时大小的数组是核心语言的std::dynarray
一部分,同时是标准库的一部分,但提案std::dynarray
清楚地表明作者希望编译器在许多情况下提供特殊支持,std::dynarray
以便它可以同样高效尽可能,即与运行时大小的数组一样高效。因此,语言/库的区别似乎有些人为。
那么,为什么 C++14 既需要运行时大小的数组又需要std::dynarray
? 鉴于它std::dynarray
具有更丰富的(STLified)接口,为什么不直接删除运行时大小的数组,假设std::dynarray
可以以相同的运行时效率实现呢?
澄清
当我谈论“运行时大小的数组”时,我指的是N3639中描述的新的 C++14 核心语言功能,而不是传统的 C 数组或 VLA 或 C++11 中的任何内容。