呼び出し
std::count_if(vec.begin(), vec.end(), std::bind2nd(std::ptr_fun(foo), 17))
で正常に動作します
bool foo(int, int),
しかし、私はそれを動作させることはできません
bool foo(const int &, const int &)
それを機能させる方法はありますか、それとも独自のアダプター関数を作成する必要がありますか?
2番目の引数は数値であり、に変換することはできませんconst int &
。
あなたboost::bind
はトリックをするために使うことができます:
std::count_if (vec.begin(), vec.end(), boost::bind (foo, _1, 17));
編集:
私の最初の回答の時点では、はい、数値の代わりに変数を使用することはできません。問題は、内部オブジェクトをビルドするときに参照である場合に型を逆参照するように適切に定義されていないことだbind2nd
と思います。そのため、boostを使用するか、独自のファンクタークラスを作成します。ptr_fun
ptr_fun
Operation