C++0x で、ラムダ関数をパラメータとして受け取る関数はテンプレート関数でないといけないんだろうーか

答え(1)「ラムダ関数のシグネチャはコンパイラの外から不可視なので、暗黙の型変換で普通の関数ポインタに変換できない場合(つまりキャプチャがある場合とか)はテンプレート使うしかないでしょうね」 答え(2)「std::functionでOK」 ありがとうございました。
1
ζ @zetamatta

今入っている MinGW32(5.1.6) の gcc が 3.4.5 とバージョンが低いので、20100909版の MinGW32 を導入した。gcc は 4.5.0 になった(満足)

2010-09-26 15:14:26
ζ @zetamatta

にっき書いた。C++0x で、ラムダ関数をパラメータとして受け取る関数はテンプレート関数でないといけないんだろうーか。謎が残った ≫ "MHI 3.1 - C++0x の lambda 式を使ってみた" http://t.co/0DxUN29

2010-09-26 16:37:15
ζ @zetamatta

C++0x で lambda 式を使うと、vim のシンタックスハイライトでエラー表示されるのが、とても悲しい。

2010-09-26 16:41:49
AoiMoe a.k.aしお兄P @AoiMoe

@zetamatta ラムダ関数のシグネチャはコンパイラの外から不可視なので、暗黙の型変換で普通の関数ポインタに変換できない場合(つまりキャプチャがある場合とか)はテンプレート使うしかないでしょうね

2010-09-26 16:45:05
AoiMoe a.k.aしお兄P @AoiMoe

内部的には、「引数がこういう型で、戻り値がこういう型で、こういう型の変数をキャプチャしてるようなラムダ関数」っていうシグネチャがあると思うんだけど

2010-09-26 16:47:37
AoiMoe a.k.aしお兄P @AoiMoe

それを正確に記述するような文法は用意されていない

2010-09-26 16:48:12
ζ @zetamatta

@AoiMoe やはり、そうですか。あまり、これに言及したページがなかったので、漠然とした推測でしたが、お言葉でシックリきました。ありがとうございます。

2010-09-26 16:50:06
ζ @zetamatta

しかし、ラムダ関数…やはり、文法がダサいのが残念。

2010-09-26 16:52:01
AoiMoe a.k.aしお兄P @AoiMoe

サンク作って無理やり変換するとかそういう荒業はやりたくなかったんだろうな。

2010-09-26 16:57:39
AoiMoe a.k.aしお兄P @AoiMoe

サンクはそもそも W^X と相性が悪いしなあ

2010-09-26 17:02:59
AoiMoe a.k.aしお兄P @AoiMoe

スレッドまで考えると、スタティックなサンクじゃなくてスタック上にサンク作りたくなるしなあ

2010-09-26 17:05:25
AoiMoe a.k.aしお兄P @AoiMoe

しかしセキュリティを考えると、スタック上にコード書いてそれを実行するとか悪夢だし

2010-09-26 17:06:27
AoiMoe a.k.aしお兄P @AoiMoe

AppleがCのほうに提案してる奴ではどうやってるんだろうか

2010-09-26 17:09:09
AoiMoe a.k.aしお兄P @AoiMoe

しかし、サンクって日本語に訳せば「既出」ということなんだけど、無茶な名づけだよな :D

2010-09-26 17:13:19
AoiMoe a.k.aしお兄P @AoiMoe

おおざっぱにいえば、「こういう概念考えたんだけど」「それは既出だよ」「既出ね、いい名前だ」

2010-09-26 17:14:20
ζ @zetamatta

「W^X」 って何かと思ったら、Write Xor Execute ってことか。書ける領域は実行できないようにするってわけですね ≫W^X - Wikipedia, the free encyclopedia http://t.co/28AHQ69

2010-09-26 17:26:36
ζ @zetamatta

@cpp_akira ありがとうございます。ぐぐってみます。

2010-09-26 19:08:11
ζ @zetamatta

にっき書いた:テンプレート以外に std::function を使うという方法もあるようだ。どういう仕組みになっているんだろう ≫ "MHI 3.1 - 続・C++0x の lambda 式を使ってみた" http://t.co/oAcFFTv via @zetamatta

2010-09-26 20:21:53
ζ @zetamatta

曰く『この記事は、C++0xのlambdaを完全に解説せんとする目的を以て書かれた』― おぉ! / 本の虫: lambda 完全解説 http://htn.to/58wXZJ

2010-09-26 20:27:50
ζ @zetamatta

しかし、std::function を使うっていうのも、ある意味、テンプレート使ってることには変わりないかな。

2010-09-26 20:43:03