ラムダ

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++ らしくていい…のかな?無印 <> は <&> があれば特に存在価値無さそうな気もするけど。

ていうかデフォルト <&> で [] で値渡しにする引数を指定する、とかでいいんじゃないのとか素人考えを。

まぁなんにせよはよ使えるといいんだけどな。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h