我编译并运行了以下 C++ 代码,盲目地尝试创建一个灵活的数组成员,就像在 C 中一样:
#include <iostream>
template <typename T>
struct Vector {
int length;
T ts[];
};
Vector<int> ts = {
3,
{10, 10, 10},
};
int main() {
std::cout << sizeof(ts) << std::endl;
std::cout << ts.data[1] << std::endl;
return 0;
}
代码编译和运行得很好,并给出了与 C 在相同情况下相同的输出(输出 4,然后输出 10)。
现在,根据2010 年的这个答案,我写的应该不是有效的 C++。此外,根据这篇维基百科文章,“C++ 没有灵活的数组成员”。
我的问题是,我在上面的代码中实际使用了哪个 C++ 功能,特别是在“ T ts[];
”那一行?该代码实际上是按照我认为的一般情况执行的,还是未定义的行为?