[/ / Copyright (c) 2003-2023 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:deferred Deferred Operations] The [link boost_asio.reference.deferred `deferred`], completion token takes a call to an asynchronous operation's initiating function and turns it into a function object that accepts a completion token. For example: auto deferred_op = timer.async_wait( boost::asio::deferred); ... std::move(deferred_op)( [](boost::system::error_code ec){ ... }); or: auto deferred_op = timer.async_wait( boost::asio::deferred); ... std::future = std::move(deferred_op)( boost::asio::use_future); The deferred token also supports chaining, to create simple compositions: auto deferred_op = timer.async_wait( boost::asio::deferred( [&](boost::system::error_code ec) { timer.expires_after( std::chrono::seconds(1)); return timer.async_wait( boost::asio::deferred); }); ... std::future = std::move(deferred_op)(boost::asio::use_future); [heading See Also] [link boost_asio.reference.deferred deferred], [link boost_asio.reference.deferred_t deferred_t], [link boost_asio.examples.cpp14_examples.deferred Deferred examples (C++11)], [link boost_asio.examples.cpp14_examples.deferred Deferred examples (C++14)]. [endsect]