#include <vector>
struct foo {
int i;
int j;
int k;
};
int main() {
std::vector<foo> v(1);
v[0] = {0, 0, 0};
return 0;
}
使用 g++ 编译时,我收到以下警告:
warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x [enabled by default]
不过,据我所知,它只是一个普通的初始化列表。该结构是 POD 类型。
这是一个错误还是我遗漏了什么?
最佳答案
Pre C++11(可能还有 C99)您只能在创建时初始化 POD,而不能在任意运行时点初始化,这就是您在这里尝试的操作(从初始化列表中赋值)。
不过你可以创建一个 null_foo:
int main()
{
const foo null_foo = {0, 0, 0};
std::vector<foo> v(1);
v[0] = null_foo;
return 0;
}
关于c++ - 为什么这被认为是一个扩展的初始化列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7930773/