lambda :: bind를 통해 멤버를 호출하고 싶습니다. 불행히도 같은 이름을 가진 두 멤버가 있지만 반환 유형이 다릅니다. 멤버 함수 호출에 대해 올바른 반환 형식을 추론하도록 lambda :: bind를 도와주는 방법이 있습니까? 문서boost lambda :: bind 반환 유형 선택
를 들어
#include <vector>
#include <iostream>
#include <algorithm>
#include <boost/bind.hpp>
#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>
using namespace std;
using namespace boost;
struct A
{
A (const string & name) : m_name(name) {}
string & name() { return m_name; }
const string & name() const { return m_name; }
string m_name;
};
vector<A> av;
int main()
{
av.push_back (A ("some name"));
// compiles fine
find_if(av.begin(), av.end(), bind<const string &>(&A::name, _1) == "some name");
// error: call of overloaded 'bind(<unresolved overloaded function type>, const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >&)' is ambiguous
find_if(av.begin(), av.end(), lambda::bind(&A::name, lambda::_1) == "some name");
return 0;
}
그것을 유일한 작품 바인드가 아닌 람다 표현식. 참조 : lambda :: ret (e) 참조. 불행히도 현재 상황에서는 적용 할 수 없습니다 ... –
psaghelyi