Могу ли я заменить boost :: bind на bind1st / 2nd? - PullRequest
1 голос
/ 26 октября 2011

Просто для лучшего понимания, могу ли я заменить вызов boost :: bind в следующем примере на std :: bind1st / 2nd? Или это невозможно из-за возврата ссылки?

Пример (сокращен):

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 Ответ

3 голосов
/ 26 октября 2011

Это невозможно, потому что ни bind1st, ни bind2nd не перегружают operator==, как bind (для получения другого функтора). Если вы не хотите использовать bind, вам нужно написать функтор самостоятельно или использовать лямбду.

...