typename asio::async_result< typename asio::handler_type<CompletionToken, void(system::error_code)>::type>::type async_write_response(ServerSocket &socket, status_code sc, const Message &message, CompletionToken &&token) { static_assert(is_server_socket<ServerSocket>::value, "ServerSocket must fulfill the ServerSocket concept"); static_assert(is_message<Message>::value, "Message must fulfill the Message concept"); return socket.async_write_response(static_cast<std::uint_fast16_t>(sc), to_string<StringRef>(sc), message, std::forward<CompletionToken>(token)); }