Мне нужен указатель на функцию, который принимает два аргумента и возвращает строку.
Я хотел бы передать адаптер, который оборачивает функцию, которая принимает один аргумент и возвращает строку (то есть отбрасывает один из аргументов).
Я могу тривиально построить свой собственный адаптер, который принимает 2 аргумента, вызывает упакованную функцию, пропуская только один аргумент.
Но я бы предпочел простой способ создания адаптера на лету, если есть простой способ сделать это в C ++ / boost?
Вот некоторые подробности, чтобы сделать это немного более конкретным:
typedef boost::function<CString (int,int)> TooltipTextFn;
class MyCtrl
{
public:
MyCtrl(TooltipTextFn callback = boost::bind(&MyCtrl::GetCellText, this, _1, _2)) : m_callback(callback) { }
// QUESTION: how to trivially wrapper GetRowText to conform to TooltipTextFn by just discarding _2 ?!
void UseRowText() { m_callback = boost::bind(&MyCtrl::GetRowText, this, _1, ??); }
private:
CString GetCellText(int row, int column);
CString GetRowText(int row);
TooltipTextFn m_callback;
}
Очевидно, я могу предоставить член, который адаптирует GetRowText для получения двух аргументов и передает только первый в сам GetRowText ().
Но есть ли уже скоросшиватель / адаптер, который позволяет мне это делать?