typeid is used on lambda expression
This defect occurs when you use
typeid on a lambda expression.
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.Avoid using the typeid operator on lambda expressions.
| Group: Object Oriented |
| Language: C++ |
| Default: On for handwritten code, off for generated code |
Command-Line Syntax:
LAMBDA_TYPE_MISUSE
|
| Impact: Low |