C++0x ラムダ式(N2550)の簡単な訳



The evaluation of a lambda-expression results in a closure object, which is an rvalue.


Each lambda expression has a unique type.


6 The type of the closure object is a class with a unique name, call it F, considered to be defined at the point where the
lambda expression occurs.

クロージャオブジェクトの型はユニークな名前を持つクラスである、それを F と呼ぶことにする。

7 F has an implicitly-declared copy constructor ([class.copy], 12.8), and it has a public move constructor that performs
a member-wise move. The copy assignment operator in F is defined as deleted. The size of F is unspecified.

F は暗黙に宣言されたコピーコンストラクタと、public なムーブコンストラクタを持つ。
F のコピー代入演算子delete 指定して定義される。
F のサイズは明記されない。

8 If every name in the effective capture set is preceded by &,
F is publicly derived from std::reference_closure (20.5.17),
where R is the return type and P is the parameter-type-list of the lambda expression.
Converting an object of type F to type std::reference_closure and invoking its function call operator shall
have the same effect as invoking the function call operator of F.

キャプチャセットが参照を含む場合、F は std::reference_closure を public継承したクラスとなる、
R は戻り値の型で、P はラムダ式のパラメータ型リストである。
F を std::reference_closure に変換して関数呼び出し演算子(operator())を呼び出すことは

If one or more names in the effective capture set are preceded by &, the effect
of invoking a closure object, or a copy, after the innermost block scope of the context of the lambda expression has
been exited is undefined.