2013-03-21 26 views
5

このサンプル・ラムダを見る:C++ 11件のラムダと角括弧

[](int factor)->int{return factor*factor;} 

誰もがC++ 11のラムダ式の前に角括弧が適していますものを私に説明できますか?

+0

おっと、それを見落としました。しかし、とにかくありがとう。 – anhoppe

+1

他の答えでは言及されておらず、 '[]'はラムダ式が本当に簡単であることを解析します:ラムダ式を持つことができるコンテキストを想像してください。同じ点で '['を別のものとすることが有効であるような文脈を想像できますか? – Yakk

+0

あなたは正しいです、私はそれが私のような非常に多くの人々を気にしないものだと思います。しかし、良い点、私は言うだろう。 – anhoppe

答えて

6

角括弧は、ラムダによってどの変数が "キャプチャ"され、どのように(値または参照によって)指定されるかを指定します。

キャプチャとは、ラムダの内側からラムダの外側の変数を参照できることを意味します。値で取り込むと、ラムダが作成された時点で変数の値が取得されます。これは、パラメータを関数に値で渡す場合と同様です。参照によって取得する場合は、ラムダの外側にある実際の変数への参照があります(また、スコープ内にあることを確認する必要があります)。

クラス内では、 "this"をキャプチャして、クラスメソッドと同じようにクラスメソッドを呼び出すことができます。

+0

質問は本当に既に答えられていた、私の悪い、しかし、ありがとう。 – anhoppe