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.