|  | 
            Move-construct a basic_socket from a socket of
            another protocol type.
          
template< typename Protocol1, typename Executor1> basic_socket( basic_socket< Protocol1, Executor1 > && other, constraint_t< is_convertible< Protocol1, Protocol >::value &&is_convertible< Executor1, Executor >::value > = 0);
This constructor moves a socket from one object to another.
                  The other basic_socket object from
                  which the move will occur.
                
            Following the move, the moved-from object is in the same state as if
            constructed using the basic_socket(const executor_type&)
            constructor.