私はこのようなクラスを持っています
class Foo {
public:
int GetID() const { return m_id; }
private:
int m_id;
};
次のように、Foo オブジェクトでいっぱいのベクターで find_if を使用したいと考えています。
std::find_if(foos.begin(), foos.end(), ???.GetID() == 42);
???の代わりに何を書かなければならないのかよくわかりません。boost::lambda の _1 または boost::phoenix の arg1 があることは知っていますが、その後は途方に暮れています。
編集:
多くの例でこのように見たにもかかわらず、機能しない次のことを試しました。
std::find_if(foos.begin(), foos.end(), boost::lambda::bind(&Foo::GetID, boost::lambda::_1) == 42);
次に、次のエラーが表示されます。
エラー C2678: バイナリ '==' : 型 'const boost::lambda::lambda_functor' の左側のオペランドを取る演算子が見つかりません (または、受け入れ可能な変換がありません)