Can any one please explain to me why the former fails
while the latter compilesThe definition:
// usage in a ctor initialisation list …, where m_button_monitor is of type
ButtonMonitor,
, m_button_monitor(boost::bind(boost::mem_fn(&CView::OnRun),
this, ID_TOOLBUTTON_AUTO))
//definition 1 of ButtonMonitor that fails
// the
error message by MS VC9SP1:
// error
C2664: 'programmer_board::ButtonMonitor::ButtonMonitor(boost::function<Signature>
&)' :
//cannot
convert parameter 1 from 'boost::_bi::bind_t<R,F,L>' to
'boost::function<Signature> &'
//
class ButtonMonitor
{
public:
ButtonMonitor(boost::function<void()>& f)
:
m_f(f)
{
}
void UpdateStatus(BUTTON_STATUS status)
{
m_f();
};
private:
boost::function<void()>& m_f;
};
//definition 2 of ButtonMonitor that works
class ButtonMonitor
{
public:
ButtonMonitor(const
boost::function<void()>& f)
:
m_f(f)
{
}
void UpdateStatus(BUTTON_STATUS status)
{
m_f();
};
private:
const
boost::function<void()>& m_f;
};
Thanks,