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 中推出