初始化时真的需要大括号吗?

 用户k3fe6y3kps 发布于 2023-02-12 16:53

根据GCC 4.6.3(Ubuntu/Linaro 4.6.3-1ubuntu5),我在以下代码中的数组初始化中缺少大括号:

#include 
#include 
#include 

int main(){
  int                   plain[]   = {1,2,3,4,5};
  std::array    std_arr   = {1,2,3,4,5}; // warning, see below
  boost::array  boost_arr = {1,2,3,4,5}; // warning, see below
  std::cout << plain[0] << std_arr[1] << boost_arr[2] << std::endl;
}
> g++ test.cc -Wall -Wextra -pedantic --std=c++0x                                                                                  
test.cc: in function »int main()«:
test.cc:7:47: warning: curly braces missing around initialization for »std::array::value_type [5] {aka int [5]}« [-Wmissing-braces]
test.cc:8:47: warning: curly braces missing around initialization for »int [5]« [-Wmissing-braces]

显然(GCC缺少初始化程序的大括号)这是GCC中的一个错误,即使在稍微不同的上下文中也是如此.答案不同于"提交错误报告"到"只是禁用警告".

但是,在std::array或者boost::array,这个警告是多余的,还是我错过了重要的事情?

(我可能会添加额外的括号,而不是禁用警告,但我很好奇其含义)

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有