18 Sockets [socket]

18.9 Class template basic_socket_acceptor [socket.acceptor]

18.9.3 basic_socket_acceptor assignment [socket.acceptor.assign]

basic_socket_acceptor& operator=(basic_socket_acceptor&& rhs);

Effects: If is_open() is true, cancels all outstanding asynchronous operations associated with this acceptor, and releases acceptor resources as if by POSIX close(native_handle()). Then moves into *this the state originally represented by rhs. Completion handlers for canceled operations are passed an error code ec such that ec == errc::operation_canceled yields true.

Postconditions:

  • get_executor() == rhs.get_executor().

  • is_open() returns the same value as rhs.is_open() prior to the assignment.

  • non_blocking() returns the same value as rhs.non_blocking() prior to the assignment.

  • enable_connection_aborted() returns the same value as rhs.enable_connection_aborted() prior to the assignment.

  • native_handle() returns the same value as rhs.native_handle() prior to the assignment.

  • protocol_ is the same value as rhs.protocol_ prior to the assignment.

  • rhs.is_open() == false.

Returns: *this.

template<class OtherProtocol> basic_socket_acceptor& operator=(basic_socket_acceptor<OtherProtocol>&& rhs);

Requires: OtherProtocol is implicitly convertible to Protocol.

Effects: If is_open() is true, cancels all outstanding asynchronous operations associated with this acceptor, and releases acceptor resources as if by POSIX close(native_handle()). Then moves into *this the state originally represented by rhs. Completion handlers for canceled operations are passed an error code ec such that ec == errc::operation_canceled yields true.

Postconditions:

  • get_executor() == rhs.get_executor().

  • is_open() returns the same value as rhs.is_open() prior to the assignment.

  • non_blocking() returns the same value as rhs.non_blocking() prior to the assignment.

  • enable_connection_aborted() returns the same value as rhs.enable_connection_aborted() prior to the assignment.

  • native_handle() returns the same value as rhs.native_handle() prior to the assignment.

  • protocol_ is the result of converting the value of rhs.protocol_ prior to the assignment.

  • rhs.is_open() == false.

Returns: *this.

Remarks: This assignment operator shall not participate in overload resolution unless OtherProtocol is implicitly convertible to Protocol.