Class template async_completion is provided as a convenience, to simplify the implementation of asynchronous operations that use async_result.
namespace std {
namespace experimental {
namespace net {
inline namespace v1 {
template<class CompletionToken, class Signature>
struct async_completion
{
using completion_handler_type = async_result<decay_t<CompletionToken>,
Signature>::completion_handler_type;
explicit async_completion(CompletionToken& t);
async_completion(const async_completion&) = delete;
async_completion& operator=(const async_completion&) = delete;
see below completion_handler;
async_result<decay_t<CompletionToken>, Signature> result;
};
} // inline namespace v1
} // namespace net
} // namespace experimental
} // namespace std
The template parameter Signature shall be a call signature (C++ 2014 [func.def]).
explicit async_completion(CompletionToken& t);
Effects: If CompletionToken and completion_handler_type are the same type, binds completion_handler to t; otherwise, initializes completion_handler with std::forward<CompletionToken>(t). Initializes result with completion_handler.
see below completion_handler;
Type: completion_handler_type& if CompletionToken and completion_handler_type are the same type; otherwise, completion_handler_type.