c ++ 11标准8.5.4列表初始化示例说:
std::map<std::string,int> anim = { {"bear",4}, {"cassowary",2}, {"tiger",7} };
但我已经尝试过VC10,gcc 4.6和Comeau,那些编译器都不会让这个通过?那是为什么?
答案 0 :(得分:3)
感谢评论中的所有答案。
然后我检查了c ++ 98和03标准,是的,8.5.4肯定是c ++ 11中的新的第二个! 这就是为什么它没有得到所有编译器的完全支持。
使用gcc 4.6.1添加标志-std = c ++ 0x后,编译正常。
为可能需要引用的任何内容添加测试代码:
#include <map>
#include <string>
#include <initializer_list>
#include <iostream>
using namespace std;
int main()
{
std::map<std::string,int> collection = {{"bear",4}, {"cassowary",2}, {"tiger",7}};
for(auto it: collection)
std::cout << it.first << " has value " << it.second << std::endl;
return 0;
}