without opening it.
template< typename ExecutionContext> basic_datagram_socket( ExecutionContext & context, typename constraint< is_convertible< ExecutionContext &, execution_context & >::value >::type = 0);
This constructor creates a datagram socket without opening it. The
function must be called before data can be sent or received on the socket.
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.