##### basic_datagram_socket::basic_datagram_socket (4 of 10 overloads)

Construct and open a `basic_datagram_socket`.

    template<
        typename ExecutionContext>
    basic_datagram_socket(
        ExecutionContext & context,
        const protocol_type & protocol,
        constraint_t< is_convertible< ExecutionContext &, execution_context & >::value, defaulted_constraint >  = defaulted_constraint());

This constructor creates and opens a datagram socket.

###### Parameters

context

  An execution context which provides the I/O executor that the socket will use, by default, to dispatch handlers for any asynchronous operations performed on the socket.

protocol

  An object specifying protocol parameters to be used.

###### Exceptions

asio::system_error

  Thrown on failure.