STL:为"const T &"类型调用带有ptr_fun的 bind2nd

STL: calling bind2nd with ptr_fun for "const T &" types

本文关键字:ptr fun bind2nd 类型 const STL 调用      更新时间:2023-10-16

调用

std::count_if(vec.begin(), vec.end(), std::bind2nd(std::ptr_fun(foo), 17)) 

与配合良好

bool foo(int, int),

但是我不能用

bool foo(const int &, const int &)

有没有办法做到这一点,或者我必须编写自己的适配器函数?

第二个参数是数字,不能转换为const int &

你可以使用boost::bind来完成这个技巧:

std::count_if (vec.begin(), vec.end(), boost::bind (foo, _1, 17));

编辑

根据我的第一个回答,是的,你不能用变量代替数字。我认为问题是,当ptr_fun构建内部Operation对象时,bind2ndptr_fun没有被正确定义为取消引用类型(如果它是引用的话(,所以我使用boost或编写自己的函子类。