Обработчик чтения должен соответствовать требованиям для обработчика. Значениеhкласса обработчика чтения должно корректно работать в выраженииh(ec,s), гдеecявляется значением типаКонстОшибка_кодиsявляется значением типаКонстразмер_t.
Бесплатная функция в качестве обработчика чтения:
void read_handler(
    const boost::system::error_code& ec,
    std::size_t bytes_transferred)
{
  ...
}
Объект функции обработчика чтения:
struct read_handler
{
  ...
  void operator()(
      const boost::system::error_code& ec,
      std::size_t bytes_transferred)
  {
    ...
  }
  ...
};
Функция нестатического члена класса, адаптированная к обработчику чтения с использованиемсвязывания():
void my_class::read_handler(
    const boost::system::error_code& ec,
    std::size_t bytes_transferred)
{
  ...
}
...
socket.async_read(...,
    boost::bind(&my_class::read_handler,
      this, boost::asio::placeholders::error,
      boost::asio::placeholders::bytes_transferred));