Lambda 用作 typeid 操作数
typeid
用于 lambda 表达式
描述
此缺陷在使用 typeid
操作符对 lambda 表达式进行操作时发生。
风险
根据 C++ 标准,lambda 表达式的类型是一个唯一且未命名的类类型。由于类型是唯一的,另一个变量或表达式不能具有相同的类型。在 lambda 表达式中使用 typeid
表示您期望第二个变量或表达式与操作数 lambda 表达式具有相同的类型。以这种方式使用 lambda 表达式的类型可能会导致意外结果。
typeid
返回其操作数的数据类型。通常,运算符用于比较两个变量的类型。例如:
(typeid(var1) == typeid(var2))
var1
和 var2
的类型。此用法不适用于 lambda 表达式,因为 lambda 表达式具有唯一的类型。修复
避免在 lambda 表达式中使用 typeid
运算符。
示例
结果信息
组:面向对象 |
语言:C++ |
默认值:手写代码时为启动,生成代码时为关闭 |
命令行语法:LAMBDA_TYPE_MISUSE
|
影响:低 |
版本历史记录
在 R2019b 中推出
另请参阅
主题
- 解释 Polyspace 桌面端用户界面中的 Bug Finder 结果
- 解释 Polyspace Access Web 界面中的 Bug Finder 结果 (Polyspace Access)
- 通过 Bug 修复或申述在 Polyspace 用户界面中处理结果
- 通过 Bug 修复或申述在 Polyspace Access 中处理结果 (Polyspace Access)