我可以用bind1st / 2nd替换boost :: bind吗?

时间:2011-10-26 15:32:46

标签: c++ boost bind bind2nd

为了更好地理解,我可以用std :: bind1st / 2nd替换下面示例中对boost :: bind的调用吗?或者因为返回引用而无法实现?

实施例(缩短):

class Pos
{
public:
bool operator==( const Pos& );
...
}

class X
{
public:
const Pos& getPos()  { return m_p; }
...
private:
Pos m_p;
}

...
Pos position;
std::vector<X> v;
std::vector<X>::iterator iter;
...

iter = std::find_if( v.begin(), v.end(), boost::bind( &X::getPos, _1 ) == position );
...

1 个答案:

答案 0 :(得分:3)

这是不可能的,因为像bind1st那样bind2ndoperator==重载bind都不会(产生另一个仿函数)。如果您不想使用bind,则需要自己编写仿函数,或者使用lambda。