1[/ 2 / Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) 3 / 4 / Distributed under the Boost Software License, Version 1.0. (See accompanying 5 / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 6 /] 7 8[section:WaitHandler Wait handler requirements] 9 10A wait handler must meet the requirements for a [link 11boost_asio.reference.Handler handler]. A value `h` of a wait handler class 12should work correctly in the expression `h(ec)`, where `ec` is an lvalue of 13type `const error_code`. 14 15[heading Examples] 16 17A free function as a wait handler: 18 19 void wait_handler( 20 const boost::system::error_code& ec) 21 { 22 ... 23 } 24 25A wait handler function object: 26 27 struct wait_handler 28 { 29 ... 30 void operator()( 31 const boost::system::error_code& ec) 32 { 33 ... 34 } 35 ... 36 }; 37 38A lambda as a wait handler: 39 40 socket.async_wait(..., 41 [](const boost::system::error_code& ec) 42 { 43 ... 44 }); 45 46A non-static class member function adapted to a wait handler using 47`std::bind()`: 48 49 void my_class::wait_handler( 50 const boost::system::error_code& ec) 51 { 52 ... 53 } 54 ... 55 socket.async_wait(..., 56 std::bind(&my_class::wait_handler, 57 this, std::placeholders::_1)); 58 59A non-static class member function adapted to a wait handler using 60`boost::bind()`: 61 62 void my_class::wait_handler( 63 const boost::system::error_code& ec) 64 { 65 ... 66 } 67 ... 68 socket.async_wait(..., 69 boost::bind(&my_class::wait_handler, 70 this, boost::asio::placeholders::error)); 71 72[endsect] 73