Looking for c++ Answers? Try Ask4KnowledgeBase
Looking for c++ Keywords? Try Ask4Keywords

C++ラムダ


構文

  • [ default-capturecapture-list ]( 引数リスト )変更可能なスロー指定 属性 - > return-type { lambda-body } //ラムダ指定子と属性の順序。
  • [ キャプチャリスト ]( 引数リスト ){ lambda-body } //共通ラムダ定義。
  • [=]( 引数リスト ){ lambda-body } //必要なすべてのローカル変数を値で取得します。
  • [&]( 引数リスト ){ lambda-body } //必要なすべてのローカル変数を参照によって取得します。
  • [ capture-list ] { lambda-body } //引数リストと指定子を省略することができます。

パラメーター

パラメータ詳細
デフォルトキャプチャ リストされていないすべての変数のキャプチャ方法を指定します。可能= (値によってキャプチャ)または& (参照によってキャプチャ)。省略した場合、リストされていない変数はラムダ本体内でアクセスできなくなります。 デフォルトキャプチャは、 キャプチャリストに先行する必要があります
キャプチャリスト ラムダ本体内でローカル変数にアクセスする方法を指定します。接頭辞のない変数は値で取り込まれます。 &接頭辞が付いた変数は参照によって取得されます。クラスメソッド内では、 thisを使用して、すべてのメンバーを参照可能にすることができます。リストにデフォルトキャプチャが先行されていない限り、リストされていない変数にはアクセスできません。
引数リスト ラムダ関数の引数を指定します。
変更可能な (オプション)通常、値によって取り込まれる変数はconstです。 mutableを指定すると、非constになります。これらの変数に対する変更は、呼び出し間で保持されます。
スロー仕様 (オプション)ラムダ関数の例外スローイング動作を指定します。たとえば、 noexceptまたはthrow(std::exception)です。
属性 (オプション)ラムダ関数の任意の属性。たとえば、 lambda-bodyが常に例外をスローした場合、 [[noreturn]]を使用できます。
- > 戻り値型 (オプション)ラムダ関数の戻り値の型を指定します。戻り値の型をコンパイラが判別できない場合に必要です。
ラムダボディ ラムダ関数の実装を含むコードブロック。

備考

C ++ 17(現在のドラフト)では、基本的にコンパイル時に評価できるlambdaというconstexpr lambdaが導入されています。 lambdaはconstexpr要件を満たしていれば自動的にconstexprですが、 constexprキーワードを使用して指定することもできます。

//Explicitly define this lambdas as constexpr
[]() constexpr {
    //Do stuff
}

ラムダ 関連する例