683 名前:デフォルトの名無しさん (ワッチョイ f35b-tpgq) mailto:sage [2017/03/18(土) 12:48:15.84 ID:waR+gchT0.net] >>666 > std::vector<int> invoke(const std::vector<int>& v, const F& f) const > std::bind(&F::calc, f, _1, 2)); bindしている対象は F& f つまり自分自身のクラスだろ。 それは継承してるのと意味は同じだよ。(今回の問いにおいては) 俺はそこに全く無関係のクラス class G{} を突っ込めるのかと問うている。 C++では出来ないだろ。(JavaScriptでは出来る) 自分自身、または継承関係のあるクラスなら、 > std::bind(&F::calc, f, _1, 2)); のところを代わりに f->*calc と書けるんだよ。それでいいだろ、という話。 今回は引数が複数個で、第2引数を確定させたいみたいだから、 C++にその文法が無く、部分適用関数をあらかじめ用意するしかないようだけど、 それは文法が足りてないから。(ただしそこまで使わないのでbindでもいいが) ただそもそもカリー化して一個ずつ食えって話だろ、本来は。 その場合なら第2引数を確定させた関数を作る為に、 class H: F{ int k; int calc(const int x); } だろ。それで h->*calcで良いんだよ。(継承関係が有ればbind無しで書ける) というか内部的には同じ事をやっていると思っているんだが。