最后他们做到了。 MSVC12编译器现在允许统一初始化。但我发现,它的工作方式与带有-std=C++11
标志的GNU GCC 4.8.1不同。
考虑以下代码:
#include <vector>
#include <string>
#include <iostream>
struct Data
{
Data(const std::string& name, int x):
m_Name(name),
m_X(x)
{}
std::string m_Name;
int m_X;
};
std::vector<Data> datas =
{
Data("one", 1),
Data("two", 2),
Data("three", 3),
};
int main()
{
for(auto it = datas.begin(); it != datas.end(); ++it)
std::cout << it->m_Name << " " << it->m_X << "\n";
}
GCC的结果(如预期的那样):
one 1
two 2
three 3
MSVC12的结果:
1
2
3
类似字符串尚未初始化。
问题:
答案 0 :(得分:2)
这可能是VS2013预览中的一个错误。当前VS2013 RC生成的二进制输出与g ++一致。