1.呼び出し可能オブジェクト(呼び出し可能オブジェクト)のカテゴリが含まれます:
機能
関数ポインタ
オーバーロード関数呼び出し演算子クラス
ラムダ式
表現の2.lambda形式:
[キャプチャリスト(パラメータリスト) - >戻り型{関数本体}
キャプチャリスト(キャプチャリスト)関数は、(通常は空)で定義されたラムダのローカル変数のリストで、空気取り込みリストは、このラムダは、それが、の関数である任意のローカル変数を使用していないことを示している タイプの復帰、パラメータリストと関数本体を任意の通常のそれぞれの機能、戻り値の型、及び機能リスト機能体が、通常の関数とは異なるで、ラムダは、指定された戻り型の端部に背を設定する必要があります
戻り値の型の端が設定されている形状の参照リスト上の背中と1で-本当のタイプは、パラメータリストを以下の機能のリターンを示すために始め>シンボル、リターンは、オートを置く場所のこのタイプに表示されます
オートFUNC(INT I) - > INT(*)[10]; // funcがint引数を必要とし、含む10個の整数の配列を指していることを指すポインタを返します
ラムダは、パラメータリストや戻り値の型を無視することができますが、常にリストとキャプチャ機能体が含まれている必要があります
オートF = [] {リターン42。}。
ラムダは、同じ一般的な関数が呼び出されるによって呼び出され、呼び出し演算子が使用されています
COUT << F()<< ENDL。
カッコ内のラムダ、無視引数リストは空のパラメータリストを指定することと等価です
ラムダの戻り型を無視し、それは身体のリターン・コードのタイプの関数として推定することができます
3.ラムダデフォルトパラメータを持っていません
4.キャプチャリスト
あなたが名前のカンマ区切りのリストを提供することができるで[]、スタートのペアは、これらの名前は、それが中で定義されているラムダ関数です
キャプチャリストは、ローカル非静的変数のために使用され、直接ローカルおよび静的変数の名前を使用することができますラムダは、外で宣言それの機能
送信パラメータと同様に、撮影モード変数は、値または参照であってもよいです
異なるパラメータをコピーすることができる変数であるラムダは、コピー作成のとき、変数の値が取得される値の取得の前提をコピーするのではなく、時間を呼び出します
キャプチャラムダは、変数の参照キャプチャを使用するのと同様の参照の他のタイプの行動を参考にして撮影し、ローカル変数、変数であり、あなたは参照されたオブジェクトは、ラムダの実行時間中に存在することを確認する必要があります
関数は、ラムダを返し、関数が参照するようにローカル変数を返すことができない場合は、このリファレンスは、ラムダをキャプチャしていない含まれています
データ取り込みの量を最小限に抑えるために、ポインタまたは参照は、キャプチャを避けるために
暗黙的な取得:[&、C(CONST文字列&S){OS << S << C;} // OS暗黙的な取得、基準キャプチャモード; C明示的に捕捉、捕捉モード値
変数リストの最初の要素がなければならないキャプチャ、暗黙的および明示的なキャプチャキャプチャを使用して混合又は=&明示的に取り込ま暗黙捕捉するために異なる方法を使用しなければなりません
あなたは、変数の値が取得される変更したい場合、デフォルトでは、変数のコピーの値は、ラムダ)は、(あなたが最初に持っている必要があります前に可変であるパラメータリストでキーワード可変を追加する必要があり、その値を変更しません。
オートF = [V](){可変リターン++ V;}
参照変数キャプチャは常にconst参照型や非const型にこのポイントを変更できるかどうか