不是实际问题,而是时尚危机..
vector<array<unsigned int, 3>> tri;
tri.push_back(array<unsigned int, 3> {0, 0, 0});
给我一个语法错误。有没有办法用一行中的值初始化std数组?
答案 0 :(得分:10)
std::array
的第一条规则是:如有疑问,请添加更多括号。那是因为你实际上正在初始化std::array
的原始数组子对象。
tri.push_back(array<unsigned int, 3> {{0, 0, 0}});
GCC和Clang都接受这一声明。
答案 1 :(得分:9)
vs10仍然不接受它:/
这就是为什么在您的问题中始终提供完整的信息非常重要。
Visual Studio 2010不实现统一初始化(这是统一初始化,而不仅仅是聚合初始化)。它不是符合C ++ 11标准的编译器;它只有一些C ++ 11功能。