| Home | Libraries | People | FAQ | More

### Move accept handler requirements

A move accept handler must meet the requirements for a handler. A value `h` of a move accept handler class should work correctly in the expression `h(ec, s)`, where `ec` is an lvalue of type `const error_code` and `s` is an lvalue of the nested type `Protocol::socket` for the type `Protocol` of the socket class template.

##### Examples

A free function as a move accept handler:

    void accept_handler(
        const boost::system::error_code& ec, boost::asio::ip::tcp::socket s)
    {
      ...
    }

A move accept handler function object:

    struct accept_handler
    {
      ...
      void operator()(
          const boost::system::error_code& ec, boost::asio::ip::tcp::socket s)
      {
        ...
      }
      ...
    };

A lambda as a move accept handler:

    acceptor.async_accept(...,
        [](const boost::system::error_code& ec, boost::asio::ip::tcp::socket s)
        {
          ...
        });

A non-static class member function adapted to a move accept handler using `std::bind()`:

    void my_class::accept_handler(
        const boost::system::error_code& ec, boost::asio::ip::tcp::socket socket)
    {
      ...
    }
    ...
    boost::asio::async_accept(...,
        std::bind(&my_class::accept_handler,
          this, std::placeholders::_1,
          std::placeholders::_2));