A lambda shall not be an operand to decltype or typeid
A lambda shall not be an operand to decltype or typeid.
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:
decltype(var1) var2;
var2 with the same type as var1.Compare the types of two variables. For instance:
(typeid(var1) == typeid(var2))
var1 and var2.These uses do not apply to a lambda expression, which has a unique type.
The rule checker flags uses of decltype and typeid
with lambda expressions.
If you expect a rule violation but do not see it, refer to Coding Standard Violations Not Displayed.
| Group: Lexical Conventions |
| Category: Required, Automated |