【发布时间】:2019-02-04 02:50:37
【问题描述】:
我有以下代码:
int x = {{}};
根据 C++ 标准,此语法是否有效? (我对 C++11 及更高版本感兴趣。)
使用最新的编译器没有问题,但是在一些较旧的编译器(例如 GCC 4.8.5)中会出现以下错误:
错误:为类型“int”的标量初始化器加上大括号
【问题讨论】:
标签: c++ c++11 language-lawyer
我有以下代码:
int x = {{}};
根据 C++ 标准,此语法是否有效? (我对 C++11 及更高版本感兴趣。)
使用最新的编译器没有问题,但是在一些较旧的编译器(例如 GCC 4.8.5)中会出现以下错误:
错误:为类型“int”的标量初始化器加上大括号
【问题讨论】:
标签: c++ c++11 language-lawyer
这是格式错误的。 gcc 接受它是错误的,clang 似乎允许它作为扩展名,如it warns about it。
我将引用最新的草稿,但这并没有什么不同。根据[dcl.init.list],列表初始化工作如下,在这种情况下,T 是int:
【讨论】: