根据 C++ 草案,运行时数组在堆栈上的边界

Runtime array bounds on stack as per c++ draft

根据我根据之前的阅读理解,数组大小需要保持不变并且在编译时已知,但支持 VLA 的 g++ 提供的额外支持除外。

但是我正在阅读一份 c++ 草案,现在我很困惑,c++ 是否支持运行时数组边界。他们给出了以下用于定义数组的代码示例。

C++ 草案 link:http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3690.pdf

第 8.3.4 节

例如:

void f(unsigned int n) {
int a[n]; // type of a is “array of runtime bound of int”
}

不,C++ 不支持并且仍然不支持具有 运行 时间大小的数组。 N3690 是 C++11 和 C++14 之间的草案,它包含提案 N3639 Runtime-sized arrays with automatic storage duration (revision 5)

中的文本

该提案最终被废弃,在 C++14 draft N4140 中删除了文本。

翻阅草稿时,可以用作"The standard"的是

  • N3337(C++11 + 编辑修复)
  • N4140(C++14 + 编辑修复)
  • N4659(2017 年 3 月 post-科纳工作 draft/C++17 DIS)