typeid オペランドとしてラムダが使用されています
ラムダ式で typeid
が使用されている
説明
この欠陥は、ラムダ式で typeid
を使用した場合に発生します。
リスク
C++ 規格によると、ラムダ式の型は、一意で名前のないクラス型です。型が一意であるため、別の変数または式が同じ型をもつことができません。ラムダ式での typeid
の使用は、2 つ目の変数または式にオペランド ラムダ式と同じ型を与えようとしていることを示します。この方法でラムダ式の型を使用すると、予期しない結果をもたらすことがあります。
typeid
は、そのオペランドのデータ型を返します。通常、この演算子は 2 つの変数の型を比較するために使用されます。次に例を示します。
(typeid(var1) == typeid(var2))
var1
と var2
の型を比較します。この使用法は、一意の型を持つラムダ式には適していません。修正方法
ラムダ式での typeid
演算子の使用を避けます。
例
結果情報
グループ: オブジェクト指向 |
言語: C++ |
既定値: 手書きコードはオン、生成コードはオフ |
コマンド ライン構文: LAMBDA_TYPE_MISUSE
|
影響度: Low |
バージョン履歴
R2019b で導入