Wikipedia がいつの間にか更新されていました
ラムダ式(N2550)についてけっこう書かれています
【return は省略できる・・・のかな】
return を省略したときの戻り値と戻り値の型について書いてないけど
(見逃してるだけかも)
vector<int> v; int total = 0; for_each(v.begin(), v.end(), [&total](int x) { total += x; });
【戻り値の型を省略すると、戻り値を decltype した型が戻り値の型になる】
以下の2つのラムダ式は同じ意味になる
[](int x, int y) { return x + y; } [](int x, int y) -> decltype(x + y) { return x + y; }
【メンバ関数内でのラムダ式】
メンバ関数内でのラムダ式はそのクラスの friend と見なされる
そのため、ラムダ式内ではそのクラスの private メンバにアクセスすることができる
class hoge { void private_func() {} public: void foo() { [](hoge *p) { p->private_func(); }; } };
【this キャプチャの例】
class hoge { void private_func() {} public: void foo() { [this]() { this->private_func(); } } };