C
Chris Ahlstrom
This code compiles:
boost::asio::ip::tcp::acceptor m_acceptor; // declared in a class
connector:
ointer new_conn(new connector(m_acceptor.io_service()));
m_acceptor.async_accept
(
new_conn->socket(),
boost::bind
(
&timingserver::handle_accept,
this,
boost::asio:
laceholders::error,
new_conn
)
);
So now I want to pull out the boost::bind part and make a function object of it.
boost::function
<
void
(
const boost::system::error_code &,
boost::asio::ip::tcp::resolver::iterator endpoint_iterator
)
&timingserver::handle_accept,
this,
boost::asio:
laceholders::error,
new_conn
);
m_acceptor.async_accept(new_conn->socket(), b);
The ultimate error I get is
/usr/include/boost/asio/detail/bind_handler.hpp:39: error: no match for call to
'(
boost::function
<
void
(
const boost::system::error_code&,
/usr/include/boost/function/function_template.hpp:1006: note: candidates are:
R boost::function2<R, T1, T2>:
perator()(T0, T1) const
[with R = void,
T0 = const boost::system::error_code&,
T1 = boost::asio::ip::basic_resolver_iterator<boost::asio::ip::tcp>]
I've been able to make similar function objects from other bound functions,
so I'm a bit puzzled here.
boost::asio::ip::tcp::acceptor m_acceptor; // declared in a class
connector:
m_acceptor.async_accept
(
new_conn->socket(),
boost::bind
(
&timingserver::handle_accept,
this,
boost::asio:
new_conn
)
);
So now I want to pull out the boost::bind part and make a function object of it.
boost::function
<
void
(
const boost::system::error_code &,
boost::asio::ip::tcp::resolver::iterator endpoint_iterator
)
(> b = boost::bind
&timingserver::handle_accept,
this,
boost::asio:
new_conn
);
m_acceptor.async_accept(new_conn->socket(), b);
The ultimate error I get is
/usr/include/boost/asio/detail/bind_handler.hpp:39: error: no match for call to
'(
boost::function
<
void
(
const boost::system::error_code&,
) (boost::system::error_code&)'boost::asio::ip::basic_resolver_iterator said:
/usr/include/boost/function/function_template.hpp:1006: note: candidates are:
R boost::function2<R, T1, T2>:
[with R = void,
T0 = const boost::system::error_code&,
T1 = boost::asio::ip::basic_resolver_iterator<boost::asio::ip::tcp>]
I've been able to make similar function objects from other bound functions,
so I'm a bit puzzled here.