语言 - 律师明智,标准中的哪个条款禁止以下代码:
int arr[] (10, 42);
这将产生一个包含10个元素的数组,每个元素都被初始化为42个。
答案 0 :(得分:5)
语言律师明智,8.5 / 17:
- 如果初始化程序是(非括号的)braced-init-list,则对象或引用是列表初始化的(8.5.4)。
- 如果目的地类型是参考类型,请参见8.5.3。
- 如果目标类型是字符数组,则为char16_t数组,char32_t数组或 wchar_t数组,初始值设定项是字符串文字,见8.5.2。
- 如果初始值设定项为(),则对象进行值初始化。
- 否则,如果目标类型是数组,则程序格式错误
braced-init-list是{},括号内可以包含任何内容(例如,int arr[3] = {1,2,3}
)。考虑到这一点,int arr[] (10, 42);
的前4个选项都不可行,最后一个选项表明该程序格式不正确。
答案 1 :(得分:0)
8.5 / 14:
如果正在初始化的实体没有类类型,带括号的初始值设定项中的表达式列表应为单个表达式。