AUTOSAR C++14 Rule A5-1-2
Variables shall not be implicitly captured in a lambda expression
説明
ルール定義
ラムダ式において変数を暗黙的に取得してはなりません。
根拠
ラムダ式には変数を暗黙的に取得するオプションがあります。例として、次のラムダ式を考えます。
[&](std::int32_t var) {
sum+ = var;
}式本体に含まれる変数が呼び出しコンテキストに由来するものかどうか。
たとえば、前述のラムダ式では、
sumが呼び出しコンテキストから取得されたものか、グローバル変数なのかが明らかではありません。呼び出しコンテキストから取得されたすべての変数が使用されているかどうか。また、それらの変数が変更されているのか、読み取られただけなのか (変数が読み取られたものである場合、コピーによる取得が好ましい)。
ラムダ式で変数を明示的に取得すれば、参照またはコピーのいずれによって取得するかをより明確に制御できます。加えて、開発者やレビュー担当者がラムダ式を見て、変数が呼び出しコンテキストから取得されたものであるかどうかを判断できるようになります。
トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: 式 |
| カテゴリ: Required、Automated |
バージョン履歴
R2019b で導入