2011-10-26 24 views
1

わかりやすくするために、次の例のstd :: bind1st/2ndのboost :: bindの呼び出しを置き換えることはできますか?または、参照を返すことができないのですか?boost :: bindをbind1st/2ndと置き換えることはできますか?

例(短縮):bindのようなどちらbind1stbind2nd過負荷operator==が(別のファンクタを得るために)ないので

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); 
... 

答えて

3

それは、ことはできません。 bindを使用したくない場合は、自分でファンクタを書くか、ラムダを使用する必要があります。

+0

ありがとうございました。関数オブジェクトを使用して測定した後は、ターゲットシステムにとっては最速であることが判明しました。 – name

関連する問題