我有以下代码:
int x = {{}};
此语法根据C ++标准是否有效? (我对C ++ 11及更高版本感兴趣。)
使用最新的编译器时没有问题,但是在某些较旧的编译器(例如GCC 4.8.5)中,会出现以下错误:
错误:类型为'int'的标量初始值设定项大括号
答案 0 :(得分:35)
这是错误的形式。 gcc接受它是错误的,而clang似乎允许它作为扩展名,例如it warns about it。
我要引用最新的草稿,但这没什么不同。根据{{3}},列表初始化的工作方式如下,其中T在这种情况下为int
: