为了更好地理解,我可以将下面示例中对boost::bind的调用替换为std::bind1/2吗?或者是因为返回一个引用而不可能?
示例(缩写):
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 );
...发布于 2011-10-26 23:37:03
这是不可能的,因为bind1st和bind2nd都不像bind那样重载operator== (以产生另一个函数器)。如果您不想使用bind,则需要自己编写函数器,或者使用lambda。
https://stackoverflow.com/questions/7905070
复制相似问题