gpt4 book ai didi

C++11:正确的 std::array 初始化?

转载 作者:IT老高 更新时间:2023-10-28 13:22:45 35 4
gpt4 key购买 nike

如果我按如下方式初始化 std::array,编译器会给我一个关于缺少大括号的警告

std::array<int, 4> a = {1, 2, 3, 4};

这解决了问题:

std::array<int, 4> a = {{1, 2, 3, 4}};

这是警告信息:

missing braces around initializer for 'std::array<int, 4u>::value_type [4] {aka int [4]}' [-Wmissing-braces]

这只是我的 gcc 版本中的一个错误,还是故意这样做的?如果有,为什么?

最佳答案

这是 std::array 的简单实现:

template<typename T, std::size_t N>
struct array {
T __array_impl[N];
};

它是一个聚合结构,其唯一数据成员是传统数组,因此内部 {} 用于初始化内部数组。

在聚合初始化的某些情况下允许大括号省略(但通常不推荐),因此在这种情况下只能使用一个大括号。见这里:C++ vector of arrays

关于C++11:正确的 std::array 初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14178264/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com