以下代码仅在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节中介绍,该内容仅显示使用等号的示例。由于这种初始化与其他类型不同,这个代码是否有效?