C and C++


LANG.LAMBDA.MRT : 戻り値の型指定のないラムダ式

要旨

該当するラムダ式の戻り値は非void型となっていますが、明示的にその型が指定されているわけではありません。

プロパティ

クラス名 Lambda Has No Return Type
日本語クラス名 戻り値の型指定のないラムダ式
クラス分類 スタイル (style)
ニーモニック LANG.LAMBDA.MRT
カテゴリー
AUTOSARC++14 AUTOSARC++14:A5-1-6 Return type of a non-void return type lambda expression should be explicitly specified.
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Lambda Has No Return Type"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

int lambda_returntype(int i){
   int rv = 0;
  
   auto lambda_void = [&rv](int x){                          // ok: void return type
                        rv += x;
                      };

   auto lambda_nortype = [](int x){   // 'Lambda Has No Return Type' warning issued here
                           return x+5;
                         };

   auto lambda_rtype =  [](int x)->int{                      // ok: return type explicitly specified
                        return x+6;
                      };

   lambda_void(i);
   return rv + lambda_nortype(i) + lambda_rtype(i);
}

関連のある設定ファイルパラメータ

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。