不,等等,忍耐一下……
VLA 一直是 GCC 扩展,但它们被 C99 采用:
[C99: 6.7.5.2/4]:
如果大小不存在,则数组类型是不完整的类型。如果大小是*而不是表达式,则数组类型是未指定大小的变长数组类型,只能在具有函数原型范围的声明中使用;这样的数组仍然是完整的类型。如果大小是整数常量表达式,并且元素类型具有已知的常量大小, 则数组类型不是变长数组类型;否则,数组类型是可变长度数组类型。
C99 也称为ISO/IEC 9899:1999
.
现在:
[C++11: 1.1/2]:
C++是基于ISO/IEC 9899:1999(以下简称C标准)规定的C程序设计语言的通用程序设计语言。除了 C 提供的功能之外,C++ 还提供了额外的数据类型、类、模板、异常、命名空间、运算符重载、函数名重载、引用、自由存储管理运算符和其他库设施。
那么 C++11 不应该也有 VLA 吗?