不是真正的问题,而是时尚危机。
vector<array<unsigned int, 3>> tri;
tri.push_back(array<unsigned int, 3> {0, 0, 0});
给我一个语法错误。有什么方法可以将带有值的 std 数组初始化为一行中的向量?
的第一条规则std::array
是:当有疑问时,添加更多的大括号。那是因为您实际上是在初始化std::array
.
tri.push_back(array<unsigned int, 3> {{0, 0, 0}});
GCC 和 Clang 都接受这个声明。
vs10 仍然不会接受它:/
这就是为什么在您的问题中始终提供完整信息很重要的原因。
Visual Studio 2010 没有实现统一初始化(即统一初始化,而不仅仅是聚合初始化)。它不是符合 C++11 的编译器;它只有一些 C++11 特性。