我已经用 clang 测试了以下两种形式,它们都被接受了:
using IntMap = std::map<int, int>;
IntMap map1 {{
{1, 1},
{2, 2},
{3, 3},
{4, 4}
}};
IntMap map2 {
{1, 1},
{2, 2},
{3, 3},
{4, 4}
};
在 Visual Studio 2013 上,后一个示例无法编译,说明 map 中没有采用 4 个参数的构造函数。
我假设两者都有效。两者有什么区别?为什么第二个示例在 Visual Studio 2013 上不起作用?
最佳答案
作为 T.C.评论中指出,两者都是合法的。第一款式can cause weirdness ,但如果第二个在 VS2013 中对你来说失败,那么这是一个编译器错误)或部分实现)。
关于c++ - std::map 的这两种列表初始化形式有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27708186/