【发布时间】:2014-04-03 15:59:05
【问题描述】:
代码部分:
struct id_s {
std::string name1;
std::string name2;
};
static const std::map<uint8_t, id_s> list = {
{ 0x00, { "Fred", "Apple" } },
{ 0x01, { "John", "Banana" } },
{ 0x02, { "Mark", "Mango" } }
};
int main()
{
for(const auto& it: list) {
std::cout<<it.first<<"\t"<<it.second.name1<<"\t"<<it.second.name2<<std::endl;
}
return 0;
}
问题是一旦初始化,所有字段都被正确分配,除了“John”和“Mark”,它们被保留为“”。
如何正确分配 C++11 初始化列表?
VS 2013 调试控制台的输出:
【问题讨论】:
-
这是使用初始化器列表分配值的正确方法。你能从控制台显示你的输出(屏幕截图)吗?。
-
我已经添加了截图的链接,我不能嵌入因为没有足够的声望......
-
我已验证此代码的行为确实如 Visual Studio 2013 中所述。
-
Visual Studio 2013 Update 2 修复了这个错误,在 Update 3 中仍然很好。
标签: c++11 visual-studio-2013 initializer-list