这种数组初始化形式是否有效?

时间:2014-10-05 16:25:25

标签: c++ language-lawyer

以下代码仅在clang AFAIK中编译:

struct A { 
  char x[4]; 
  A():x("bug") { } 
};

int main()
{
    char x[4] ("bug");
}

但是根据这个gcc bug report它是有效的代码,并且已经针对更高版本的GCC进行了修复(有人应该向Microsoft报告它。)

修复此错误的理由是:

§8.5/ 13

  

初始化的形式(使用括号或=)通常是   无关紧要,但在初始化程序或实体时确实很重要   被初始化有一个类类型;见下文。如果实体是   initialized没有类类型,a中的表达式列表   带括号的初始值设定项应为单个表达式。

使用字符串文字初始化char数组的内容在第8.5.2节中介绍,该内容仅显示使用等号的示例。由于这种初始化与其他类型不同,这个代码是否有效?

0 个答案:

没有答案