给出以下结构:
struct TestStruct
{
int mA;
int mB;
};
以及以下容器:
std::vector<TestStruct> _testContainer;
尝试使用支撑的init列表添加项时,编译器会抛出错误,如下所示:
_testContainer.push_back({1,2});
我正在使用2010年的visual studio的C ++编译器,这可能是罪魁祸首。这是有效的C ++还是我错过了什么?
答案 0 :(得分:3)
MSVS 2010不符合C ++ 11标准。我建议升级到MSVS 2015并再次尝试。从这个例子可以看出
#include <iostream>
#include <vector>
struct foo
{
int a;
int b;
};
int main(void) {
std::vector<foo> data;
data.push_back({1,2});
}
没关系。
答案 1 :(得分:0)
我正在使用2010年的visual studio的C ++编译器,这可能是罪魁祸首。
很可能,VS2010不支持当前的语言标准。
这是有效的C ++还是我错过了什么?
答案 2 :(得分:0)
根据C ++ 11标准,这应该没问题:
struct foo {
int a;
int b;
};
int main() {
std::vector<foo> data;
data.push_back({1,2});
return 0;
}
或者,你可以使用它:
int main() {
std::vector<foo> data;
data.emplace_back(1,2);
return 0;
}
MSVC仍然遇到新标准的问题,升级到2013年甚至2015年都应该有所帮助。