### execution::set_done

A customisation point that delivers a done notification to a receiver.

    constexpr unspecified set_done = unspecified;

The name `execution::set_done` denotes a customisation point object. The expression `execution::set_done(R)` for some subexpression `R` is expression-equivalent to:

- `R.set_done()`, if that expression is valid. If the function selected does not signal the receiver `R`'s done channel, the program is ill-formed with no diagnostic required.
- Otherwise, `set_done(R)`, if that expression is valid, with overload resolution performed in a context that includes the declaration `void set_done();` and that does not include a declaration of `execution::set_done`. If the function selected by overload resolution does not signal the receiver `R`'s done channel, the program is ill-formed with no diagnostic required.
- Otherwise, `execution::set_done(R)` is ill-formed.

##### Requirements

Header: `asio/execution/set_done.hpp`

Convenience header: `asio/execution.hpp`