use*_*991 -1 c++ arrays initialization language-lawyer
语言律师明智,标准中的哪个条款禁止下面的代码:
int arr[] (10, 42);
Run Code Online (Sandbox Code Playgroud)
这将产生一个由10个元素组成的数组,每个元素都被初始化为42个元素.
语言律师明智,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}).考虑到这一点,前4个选项中没有一个是可行的int arr[] (10, 42);,留下最后一个选项表明该程序是不正确的.
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |