AUTOSAR C++14 Rule A8-5-3
A variable of type auto shall not be initialized using {} or ={} braced-initialization
描述
规则定义
A variable of type auto shall not be initialized using {} or ={} braced-initialization.
理由
当初始化使用大括号时,auto 的类型推断会产生一个反直觉的结果。推断出的类型是 std::initializer_list<>,而不是根据初始化器可能推测出的类型。
例如,定义:
auto x{1};x 变为 std::initializer_list<int> 而不是 int。某些编译器会从该定义推导出 int 类型,但不同编译器的行为并不一致。Polyspace 实现
如果变量使用 {} 或 ={} 大括号初始化,检查项将标记使用类型 auto 的变量定义。
故障排除
如果您预期会出现违规,而 Polyspace® 未报告该违规,请参阅诊断为何编码规范违规未按预期显示。
示例
检查信息
| 组:声明符 |
| 类别:必需、自动 |
版本历史记录
在 R2020a 中推出