ラムダ
http://d.hatena.ne.jp/Cryolite/20080213#p1
あれー私は lambda って言っても環境は持たないんだと勝手に思ってたんですが、どうやら本気でクロージャを C++ に入れるのかーと今頃気付きました。
で
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2529.pdf
を見るに <> は環境無し、 <&> は環境を参照で持つ、 <=> はコピーで、って感じなんだな。んで : [] をつけると追加で引数の渡しかたを指定できる、と。
<>(double d) : [sum, &factor] ( sum += factor * d ) <&>(double d) : [sum] ( sum += factor * d ) <=> (double d) : [&factor] ( sum += factor * d )
が全部一緒ってのが説明としてはわかりやすいな。 C++ らしくていい…のかな?無印 <> は <&> があれば特に存在価値無さそうな気もするけど。
ていうかデフォルト <&> で [] で値渡しにする引数を指定する、とかでいいんじゃないのとか素人考えを。
まぁなんにせよはよ使えるといいんだけどな。