首页 > 解决方案 > 根据 c++ 草稿,运行时数组边界在堆栈上

问题描述

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

然而,我正在经历一份 c++ 草案,现在我很困惑,c++ 是否支持运行时数组边界。他们给出了下面的代码示例来定义数组。

C++ 草案链接: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++arraysc++11g++runtime

解决方案


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

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

浏览草稿时,您可以用作“标准”的草稿是

  • N3337(C++11 + 编辑修复)
  • N4140(C++14 + 编辑修复)
  • N4659(2017 年 3 月 Kona 后工作草案/C++17 DIS)

推荐阅读