Допустим есть некий функциональный объект:
template <class item_type, class _Pred>
class Filler : public std::unary_function<const item_type*, void>
{
public:
Filler(_Pred _pred)
: m_Pred(_pred)
{}
void operator()(const item_type* pObj) const
{
CString sName;
m_Pred(sName);
// bla-bla
}
protected:
_Pred& m_Pred;
};
И его использование:
typedef boost::function<void (CString&)> TFunc;
std::for_each(objs.begin(), objs.end(), Filler<Object, TFunc>(boost::bind(&Object::GetFullName, _1, boost::ref(_2), (int*)NULL)));
В "objs" сидят Object* .
Хочется как-нить пропихнуть в качестве предиката в Filler функцию Object::GetFullName
Проблема в том, что GetFullName имеет несколько отличную сигнатуру, а именно
bool Object::GetFullName(CString& buf, int* pValue = NULL) const {}
Как сие провернуть, господа?