関数合成をいろんな言語で書いてみた。そのに!
そのいち!の C++ ver. 2 を new を使わないように書き変えた。スタックに載るようにね。まだバグあるけど orz どうもスタックの解放された部分を見に行ってるんじゃないかと想像してるんだけど、ほんとかなぁ。[追記]解決。
C++ ver. 2.1
実行すると21行目でエラーが出て、composed.apply
の中の this.apply
が empty だと。その this.apply
ってつまり、f.compose(g).apply
だよな。うーん。ちゃんと main
の世界に連れて来られてると思うんだが。メソッドチェーンすると main
の世界にコピーされないのか?うーんうーん。
「初心者『C++ 分からん。』」状態。
[追記]C++ ver. 2.2 アドバイスにより解決
@kakkun61 thisはポインタのキャプチャしかされないからメンバ変数applyの寿命が尽きている。composeの中でapplyをローカル変数にコピーしてそれをコピーキャプチャしないとダメ
— 角さん (@kikairoya) 7月 20, 2012
27分でアドバイス来た!すごいねー、インターネットの時代だねー。
そしてちゃんと動くようになったのがこちら。
アドバイスくれた @kikairoya さん、RT してくれた @irof さん @finalfusion さんに感謝!