AUTOSAR C++14 Rule A5-1-7
A lambda shall not be an operand to decltype or typeid
Description
Rule Definition
A lambda shall not be an operand to decltype or typeid.
Rationale
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 decltype or typeid on a lambda expression
indicates that you expect a second variable or expression to have the same type as the
operand lambda expression.
Both decltype and typeid return the data type of
their operands. Typically the operators are used to:
Assign a type to another variable. For instance:
creates a variabledecltype(var1) var2;
var2with the same type asvar1.Compare the types of two variables. For instance:
compares the types of(typeid(var1) == typeid(var2))
var1andvar2.
These uses do not apply to a lambda expression, which has a unique type.
Polyspace Implementation
The rule checker flags uses of decltype and typeid
with lambda expressions.
Troubleshooting
If you expect a rule violation but Polyspace® does not report it, see Diagnose Why Coding Standard Violations Do Not Appear as Expected.
Examples
Check Information
| Group: Expressions |
| Category: Required, Automated |