Lambda used as typeid operand
typeid is used on lambda expression
Description
This defect occurs when you use
typeid on a lambda expression.
Risk
According to the C++ Standard, the type of a lambda expression is a unique, unnamed
class type. Because the type is unique, another variable or expression cannot have the same
type. Use of typeid on a lambda expression indicates that you expect a
second variable or expression to have the same type as the operand lambda expression. Using
the type of a lambda expression in this way can lead to unexpected results.
typeid returns the data type of its operand. Typically the operator
is used to compare the types of two variables. For
instance:
(typeid(var1) == typeid(var2))
var1 and var2. This use does not apply to a lambda
expression, which has a unique type.Fix
Avoid using the typeid operator on lambda expressions.
Examples
Result Information
| Group: Object Oriented |
| Language: C++ |
| Default: On for handwritten code, off for generated code |
Command-Line Syntax:
LAMBDA_TYPE_MISUSE
|
| Impact: Low |
Version History
Introduced in R2019b
See Also
Topics
- Interpret Bug Finder Results in Polyspace Desktop User Interface
- Interpret Bug Finder Results in Polyspace Access Web Interface (Polyspace Access)
- Address Results in Polyspace User Interface Through Bug Fixes or Justifications
- Address Results in Polyspace Access Through Bug Fixes or Justifications (Polyspace Access)