[/
 / Copyright (c) 2003-2022 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:CancellationHandler Cancellation handler requirements]

A value `h` of a cancellation handler class should work correctly in the
expression `h(t)`, where `t` is a value of type
`asio::cancellation_type`.

[heading Examples]

A free function as a cancellation handler:

  void cancellation_handler(
      asio::cancellation_type type)
  {
    ...
  }

  slot.assign(cancellation_handler);

A cancellation handler function object:

  struct cancellation_handler
  {
    ...
    void operator()(
        asio::cancellation_type type)
    {
      ...
    }
    ...
  };

  cancellation_handler& h = slot.assign(cancellation_handler{ ... });

A lambda as a cancellation handler:

  auto& h = slot.assign(
      [](asio::cancellation_type type)
      {
        ...
      });

[endsect]
