メインコンテンツ

AUTOSAR C++14 Rule A5-1-3

Parameter list (possibly empty) shall be included in every lambda expression

説明

ルール定義

パラメーター リストは (空の場合も) すべてのラムダ式に含めるものとします。

根拠

ラムダ式にパラメーター リストを含めないことも可能です。たとえば、この式は構文としては有効で、パラメーターなしで呼び出し可能なクロージャを示しています。

[&counter] {
   ++counter;
}
しかし、() がないと、関数オブジェクトであることが開発者またはレビュー担当者によって認識されない可能性があります。リストが空の場合であっても、パラメーター リスト (...) を使用することで視覚的にわかりやすくなります。次に例を示します。
[&counter]() {
   ++counter;
}

トラブルシューティング

ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。

すべて展開する

#include <cstdint>

void func() {
    std::int32_t count = 0;
    
    auto lambda1 = [&count] {++count;}; //Noncompliant
    auto lambda2 = [&count] () { //Compliant
        ++count;
    };
}

lambda1 に割り当てられたラムダ式にはパラメーター リストがなく、ルールに違反しています。同じラムダ式を lambda2 に割り当てる場合、この問題は修正されます。

チェック情報

グループ:
カテゴリ: Required、Automated

バージョン履歴

R2019b で導入