我已阅读其他一些关于setx
的帖子:
最后一个问题的答案使得-Wmissing-braces
看起来应该可以正常工作。 cppreference also says:
作为聚合类型,可以使用最多
array<int, 3> x = {1,2,3}
初始化程序给出的聚合初始化来初始化它,该初始化程序可转换为N
:T
。
然而,看来Clang仍然会发出警告in all of these cases:
std::array<int, 3> a = {1,2,3};
#include <vector>
#include <array>
int main() {
std::vector<int> v1({1, 2, 3});
std::vector<int> v2{1, 2, 3};
std::vector<int> v3 = {1, 2, 3};
std::array<int, 3> a1({1, 2, 3}); // warning
std::array<int, 3> a2{1, 2, 3}; // warning
std::array<int, 3> a3 = {1, 2, 3}; // warning - at least this should be allowed
std::vector<std::vector<int>> vs;
vs.push_back({1, 2, 3});
std::vector<std::array<int, 3>> as;
as.push_back({1, 2, 3}); // warning
return 0;
}
为什么所有都会产生警告?其中一些在技术上是不正确的吗?