[/ / Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) / / Distributed under the Boost Software License, Version 1.0. (See accompanying / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) /] [section:LegacyCompletionHandler Legacy completion handler requirements] A legacy completion handler must meet the requirements for a [link asio.reference.Handler handler]. A legacy completion handler must meet the requirements of `CopyConstructible` types (C++Std [copyconstructible]). A value `h` of a completion handler class should work correctly in the expression `h()`. [heading Examples] A free function as a completion handler: void completion_handler() { ... } A completion handler function object: struct completion_handler { ... void operator()() { ... } ... }; A lambda as a completion handler: my_io_service.post( []() { ... }); A non-static class member function adapted to a completion handler using `std::bind()`: void my_class::completion_handler() { ... } ... my_io_service.post(std::bind(&my_class::completion_handler, this)); A non-static class member function adapted to a completion handler using `boost::bind()`: void my_class::completion_handler() { ... } ... my_io_service.post(boost::bind(&my_class::completion_handler, this)); [endsect]