AUTOSAR C++14 Rule A5-1-8
Lambda expressions should not be defined inside another lambda expression
説明
ルール定義
Lambda expressions should not be defined inside another lambda expression.
根拠
開発者は、ラムダ式を使用して、数行のコードを含む無名関数オブジェクトを記述することができます。ラムダ式を入れ子にすると、コードの可読性が低下します。これは、通常、ラムダ式の本文は、それが使用される行内に存在するためです。たとえば、find_if アルゴリズムは、その引数の 1 つとして単項述語を取ります。開発者は、ラムダ式を使用して、find_if の宣言内で述語条件を定義することができます。このコード スニペットでは、find_if アルゴリズムが、2 より大きい偶数の整数のベクトルの最初のメンバーを返します。
std::vector<int> v = { 1, 2, 3, 4 };
std::find(v.begin(), v.end(),
[](int val) { return val>2 && val%2==0;});Polyspace 実装
Polyspace® は、別のラムダ式の内部で定義されたラムダ式にフラグを設定します。また、Polyspace は、最も近い入れ子のラムダ式を強調表示します。
トラブルシューティング
ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: 式 |
| カテゴリ: Advisory、Automated |
バージョン履歴
R2020b で導入