boost::array
的动态变体是否在可用时(GCC)和堆内部使用C99的可变长度数组(VLA) 否则?
答案 0 :(得分:2)
boost::array
基于模板参数工作。模板参数不能是运行时值。所以没有。
此外,VLA仅适用于在堆栈上声明的数组(ObjType val[someInteger];
)。它们不适用于在对象(struct ObjType { int val[someInteger]; };
中声明的数组。因此,即使模板参数可能是运行时值,它也无济于事。
如果您无法承担堆分配,只需使用std::vector
和分配器,该分配器从预先分配的内存的“堆栈”中提取。