レスしてくださった方々、ありがとぅーん。boost::lambda::_1」という式自体が関数オブジェクトになるんじゃないかな。実装は凄すぎて私ではどうなっているのか分かりませんが。カリー化したいときに使うのであって、その用途で使うのはちょっと変ですね。boost::lambda::_1);コンパイルできるか分かんないですけど。12:56:17)C#のコードを見ると、func0とfunc1の両方ともintを受け取ってintを返す関数なので、C++の方も両方ともfunction<int(int)>でいいと思うんですよね。いう書き方すればコンパイル通るのか分からないんですが。2の結果(int)が渡されることを期待しているんですけど、それが無理なんですかねー。コンパイルエラーのメッセージを見ると、「演算子*は_1と2に適用できないYO!!」みたいなのがあったので、2をかけるのがNGなんですかね。_1)だったらコンパイルできるし。}って記述可能だそうですね。func0(n*2);};とかできるんですかねー。<>とか->とか使うのやめて欲しいですけど、でもboost::lambda使うよりかは直観的に分かりやすいと思います。束縛する引数を第1引数以外にしてみるとかもできるみたいですし、(こんな用法が必要に迫られることがあるのか知らないけど)あと、bindの引数にbindの結果を与えてやれば合成関数も作れるらしいですね。}えーとですね、僕がなぜこんな実用的でないプログラムに執着しているかといいますと、いわゆる「継続渡し」で階乗を求める以下のSchemeの関数をC++のboostを使ってやってみたかったからです。たんなる頭の体操です。boostやC++はあまり詳しくないので、直接やると分からなくなると思い、とりあえずC#で書き直しました。method(n*m);});}てな感じになるかと思います。これを、C++でやろうとしてたんですねー。継続);の値を求めるとき、func0はn==5のときの継続そのものなんでいいんですが、次のステップであるn==4のときの継続の書き方が分からなくて、とりあえず単に2をかける関数を作ってみるか、ってな感じで書いてたんです。func0の定義自体はいじりたくないんですよ。func0はboost::lambda::_1であって欲しいんス。継続のfunc0ですね。n));}ってやってみたり。んー、わけわからんッ。_1)なんてできるのかなぁ。できればC#やSchemeみたいに簡潔に1行で書きたい。カテゴリを「雑談」にしたい気分。19:32:31)うぉー、すげぇ。boost::lambdaによる関数オブジェクトの()演算子の戻り値の型を明示する方法、初めて知りました。他にも知らない関数がいくつかあります。このままじゃコンパイル通らないですが、参考にさせてもらいます。これって再帰関数なんですけど、継続渡しではないですよ。Fact(n-1);}に相当するものを関数オブジェクトとしてローカルに用意してるんですよね。納得いく答えが出せていないので、いろいろ考えてみます。ありがとうございました。01:42:49)やったどー!!やっと解決したどー!!分かってる人には、そんなことで何日も...と思うかもしれませんが。悩んで悩んで自分で答えを出せた時は嬉しいですねー。いうことで、誰も見てないかもしれませんが、一方的に結果報告させていただきます。ほげほげ)の「ほげほげ」の部分は合成関数なわけですね。ことで、boost::bindを2段でやってみました。これまでレスポンスくれた皆さん、ありがとうございました。