パラメータ | 詳細 |
---|---|
デフォルトキャプチャ | リストされていないすべての変数のキャプチャ方法を指定します。可能= (値によってキャプチャ)または& (参照によってキャプチャ)。省略した場合、リストされていない変数はラムダ本体内でアクセスできなくなります。 デフォルトキャプチャは、 キャプチャリストに先行する必要があります 。 |
キャプチャリスト | ラムダ本体内でローカル変数にアクセスする方法を指定します。接頭辞のない変数は値で取り込まれます。 & 接頭辞が付いた変数は参照によって取得されます。クラスメソッド内では、 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
}