Regenerate documentation.
diff --git a/asio/src/doc/reference.qbk b/asio/src/doc/reference.qbk
index 6ee7a54..a5d2058 100644
--- a/asio/src/doc/reference.qbk
+++ b/asio/src/doc/reference.qbk
@@ -2956,7 +2956,9 @@
 
      Construct a basic_datagram_socket, opening it and binding it to the given local endpoint. 
 
-     Construct a basic_datagram_socket on an existing native socket. ]
+     Construct a basic_datagram_socket on an existing native socket. 
+
+     Move-construct a basic_datagram_socket from another. ]
   ]
   
   [
@@ -3041,6 +3043,11 @@
   ]
   
   [
+    [[link asio.reference.basic_datagram_socket.operator_eq_ [*operator=]]]
+    [Move-assign a basic_datagram_socket from another. ]
+  ]
+  
+  [
     [[link asio.reference.basic_datagram_socket.receive [*receive]]]
     [Receive some data on a connected socket. ]
   ]
@@ -3077,6 +3084,22 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_datagram_socket.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Data Members]
 [table
   [[Name][Description]]
@@ -3114,12 +3137,12 @@
 
   [
     [[link asio.reference.basic_datagram_socket.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_datagram_socket.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -4010,7 +4033,15 @@
   ``  [''''»''' [link asio.reference.basic_datagram_socket.basic_datagram_socket.overload4 more...]]``
 
 
-[section:overload1 basic_datagram_socket::basic_datagram_socket (1 of 4 overloads)]
+Move-construct a [link asio.reference.basic_datagram_socket `basic_datagram_socket`] from another. 
+
+
+  ``[link asio.reference.basic_datagram_socket.basic_datagram_socket.overload5 basic_datagram_socket]``(
+      basic_datagram_socket && other);
+  ``  [''''»''' [link asio.reference.basic_datagram_socket.basic_datagram_socket.overload5 more...]]``
+
+
+[section:overload1 basic_datagram_socket::basic_datagram_socket (1 of 5 overloads)]
 
 
 Construct a [link asio.reference.basic_datagram_socket `basic_datagram_socket`] without opening it. 
@@ -4039,7 +4070,7 @@
 
 
 
-[section:overload2 basic_datagram_socket::basic_datagram_socket (2 of 4 overloads)]
+[section:overload2 basic_datagram_socket::basic_datagram_socket (2 of 5 overloads)]
 
 
 Construct and open a [link asio.reference.basic_datagram_socket `basic_datagram_socket`]. 
@@ -4081,7 +4112,7 @@
 
 
 
-[section:overload3 basic_datagram_socket::basic_datagram_socket (3 of 4 overloads)]
+[section:overload3 basic_datagram_socket::basic_datagram_socket (3 of 5 overloads)]
 
 
 Construct a [link asio.reference.basic_datagram_socket `basic_datagram_socket`], opening it and binding it to the given local endpoint. 
@@ -4123,7 +4154,7 @@
 
 
 
-[section:overload4 basic_datagram_socket::basic_datagram_socket (4 of 4 overloads)]
+[section:overload4 basic_datagram_socket::basic_datagram_socket (4 of 5 overloads)]
 
 
 Construct a [link asio.reference.basic_datagram_socket `basic_datagram_socket`] on an existing native socket. 
@@ -4167,6 +4198,45 @@
 [endsect]
 
 
+
+[section:overload5 basic_datagram_socket::basic_datagram_socket (5 of 5 overloads)]
+
+
+Move-construct a [link asio.reference.basic_datagram_socket `basic_datagram_socket`] from another. 
+
+
+  basic_datagram_socket(
+      basic_datagram_socket && other);
+
+
+This constructor moves a datagram socket from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.basic_datagram_socket `basic_datagram_socket`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 [section:bind basic_datagram_socket::bind]
@@ -4541,7 +4611,7 @@
 
 [variablelist
   
-[[asio::system_error][Thrown on failure.]]
+[[asio::system_error][Thrown on failure. Note that, even if the function indicates an error, the underlying descriptor is closed.]]
 
 ]
 
@@ -4578,7 +4648,7 @@
 
 [variablelist
   
-[[ec][Set to indicate what error occurred, if any.]]
+[[ec][Set to indicate what error occurred, if any. Note that, even if the function indicates an error, the underlying descriptor is closed.]]
 
 ]
 
@@ -4924,6 +4994,54 @@
 [endsect]
 
 
+[section:get_implementation basic_datagram_socket::get_implementation]
+
+[indexterm2 get_implementation..basic_datagram_socket] 
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & ``[link asio.reference.basic_datagram_socket.get_implementation.overload1 get_implementation]``();
+  ``  [''''»''' [link asio.reference.basic_datagram_socket.get_implementation.overload1 more...]]``
+
+  const implementation_type & ``[link asio.reference.basic_datagram_socket.get_implementation.overload2 get_implementation]``() const;
+  ``  [''''»''' [link asio.reference.basic_datagram_socket.get_implementation.overload2 more...]]``
+
+
+[section:overload1 basic_datagram_socket::get_implementation (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & get_implementation();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_datagram_socket::get_implementation (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  const implementation_type & get_implementation() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:get_io_service basic_datagram_socket::get_io_service]
 
@@ -5083,6 +5201,54 @@
 
 [endsect]
 
+[section:get_service basic_datagram_socket::get_service]
+
+[indexterm2 get_service..basic_datagram_socket] 
+Get the service associated with the I/O object. 
+
+
+  service_type & ``[link asio.reference.basic_datagram_socket.get_service.overload1 get_service]``();
+  ``  [''''»''' [link asio.reference.basic_datagram_socket.get_service.overload1 more...]]``
+
+  const service_type & ``[link asio.reference.basic_datagram_socket.get_service.overload2 get_service]``() const;
+  ``  [''''»''' [link asio.reference.basic_datagram_socket.get_service.overload2 more...]]``
+
+
+[section:overload1 basic_datagram_socket::get_service (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  service_type & get_service();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_datagram_socket::get_service (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  const service_type & get_service() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:implementation basic_datagram_socket::implementation]
 
@@ -5090,7 +5256,7 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 implementation..basic_datagram_socket] 
-The underlying implementation of the I/O object. 
+(Deprecated: Use `get_implementation()`.) The underlying implementation of the I/O object. 
 
 
   implementation_type implementation;
@@ -5775,7 +5941,9 @@
 
      Construct a basic_socket, opening it and binding it to the given local endpoint. 
 
-     Construct a basic_socket on an existing native socket. ]
+     Construct a basic_socket on an existing native socket. 
+
+     Move-construct a basic_socket from another. ]
   ]
   
   [
@@ -5860,6 +6028,11 @@
   ]
   
   [
+    [[link asio.reference.basic_socket.operator_eq_ [*operator=]]]
+    [Move-assign a basic_socket from another. ]
+  ]
+  
+  [
     [[link asio.reference.basic_socket.remote_endpoint [*remote_endpoint]]]
     [Get the remote endpoint of the socket. ]
   ]
@@ -5881,6 +6054,16 @@
   [[Name][Description]]
 
   [
+    [[link asio.reference.basic_socket.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_socket.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+  [
     [[link asio.reference.basic_socket._basic_socket [*~basic_socket]]]
     [Protected destructor to prevent deletion through this type. ]
   ]
@@ -5924,12 +6107,12 @@
 
   [
     [[link asio.reference.basic_socket.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_socket.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -6796,6 +6979,45 @@
 [endsect]
 
 
+[section:operator_eq_ basic_datagram_socket::operator=]
+
+[indexterm2 operator=..basic_datagram_socket] 
+Move-assign a [link asio.reference.basic_datagram_socket `basic_datagram_socket`] from another. 
+
+
+  basic_datagram_socket & operator=(
+      basic_datagram_socket && other);
+
+
+This assignment operator moves a datagram socket from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.basic_datagram_socket `basic_datagram_socket`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
+
 [section:protocol_type basic_datagram_socket::protocol_type]
 
 [indexterm2 protocol_type..basic_datagram_socket] 
@@ -7972,13 +8194,20 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 service..basic_datagram_socket] 
-The service associated with the I/O object. 
+(Deprecated: Use `get_service()`.) The service associated with the I/O object. 
 
 
   service_type & service;
 
 
 
+[heading Remarks]
+      
+Available only for services that do not support movability. 
+
+
+
+
 [endsect]
 
 
@@ -8413,18 +8642,34 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_deadline_timer.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_deadline_timer.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Protected Data Members]
 [table
   [[Name][Description]]
 
   [
     [[link asio.reference.basic_deadline_timer.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_deadline_timer.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -9220,6 +9465,54 @@
 
 [endsect]
 
+[section:get_implementation basic_deadline_timer::get_implementation]
+
+[indexterm2 get_implementation..basic_deadline_timer] 
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & ``[link asio.reference.basic_deadline_timer.get_implementation.overload1 get_implementation]``();
+  ``  [''''»''' [link asio.reference.basic_deadline_timer.get_implementation.overload1 more...]]``
+
+  const implementation_type & ``[link asio.reference.basic_deadline_timer.get_implementation.overload2 get_implementation]``() const;
+  ``  [''''»''' [link asio.reference.basic_deadline_timer.get_implementation.overload2 more...]]``
+
+
+[section:overload1 basic_deadline_timer::get_implementation (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & get_implementation();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_deadline_timer::get_implementation (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  const implementation_type & get_implementation() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:get_io_service basic_deadline_timer::get_io_service]
 
@@ -9246,6 +9539,54 @@
 [endsect]
 
 
+[section:get_service basic_deadline_timer::get_service]
+
+[indexterm2 get_service..basic_deadline_timer] 
+Get the service associated with the I/O object. 
+
+
+  service_type & ``[link asio.reference.basic_deadline_timer.get_service.overload1 get_service]``();
+  ``  [''''»''' [link asio.reference.basic_deadline_timer.get_service.overload1 more...]]``
+
+  const service_type & ``[link asio.reference.basic_deadline_timer.get_service.overload2 get_service]``() const;
+  ``  [''''»''' [link asio.reference.basic_deadline_timer.get_service.overload2 more...]]``
+
+
+[section:overload1 basic_deadline_timer::get_service (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  service_type & get_service();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_deadline_timer::get_service (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  const service_type & get_service() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:implementation basic_deadline_timer::implementation]
 
@@ -9253,7 +9594,7 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 implementation..basic_deadline_timer] 
-The underlying implementation of the I/O object. 
+(Deprecated: Use `get_implementation()`.) The underlying implementation of the I/O object. 
 
 
   implementation_type implementation;
@@ -9294,13 +9635,20 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 service..basic_deadline_timer] 
-The service associated with the I/O object. 
+(Deprecated: Use `get_service()`.) The service associated with the I/O object. 
 
 
   service_type & service;
 
 
 
+[heading Remarks]
+      
+Available only for services that do not support movability. 
+
+
+
+
 [endsect]
 
 
@@ -9453,8 +9801,7 @@
 
   template<
       typename ``[link asio.reference.IoObjectService IoObjectService]``>
-  class basic_io_object :
-    noncopyable
+  class basic_io_object
 
 
 [heading Types]
@@ -9494,7 +9841,24 @@
 
   [
     [[link asio.reference.basic_io_object.basic_io_object [*basic_io_object]]]
-    [Construct a basic_io_object. ]
+    [Construct a basic_io_object. 
+
+     Move-construct a basic_io_object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_io_object.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_io_object.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_io_object.operator_eq_ [*operator=]]]
+    [Move-assign a basic_io_object. ]
   ]
   
   [
@@ -9510,36 +9874,61 @@
 
   [
     [[link asio.reference.basic_io_object.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_io_object.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
 
+
+[heading Remarks]
+      
+All I/O objects are non-copyable. However, when using C++0x, certain I/O objects do support move construction and move assignment. 
+
+
+
 [heading Requirements]
 
 [*Header: ][^asio/basic_io_object.hpp]
 
 [*Convenience header: ][^asio.hpp]
 
-
 [section:basic_io_object basic_io_object::basic_io_object]
 
 [indexterm2 basic_io_object..basic_io_object] 
 Construct a [link asio.reference.basic_io_object `basic_io_object`]. 
 
 
+  explicit ``[link asio.reference.basic_io_object.basic_io_object.overload1 basic_io_object]``(
+      asio::io_service & io_service);
+  ``  [''''&raquo;''' [link asio.reference.basic_io_object.basic_io_object.overload1 more...]]``
+
+
+Move-construct a [link asio.reference.basic_io_object `basic_io_object`]. 
+
+
+  ``[link asio.reference.basic_io_object.basic_io_object.overload2 basic_io_object]``(
+      basic_io_object && other);
+  ``  [''''&raquo;''' [link asio.reference.basic_io_object.basic_io_object.overload2 more...]]``
+
+
+[section:overload1 basic_io_object::basic_io_object (1 of 2 overloads)]
+
+
+Construct a [link asio.reference.basic_io_object `basic_io_object`]. 
+
+
   basic_io_object(
       asio::io_service & io_service);
 
 
 Performs: 
 
-   service.construct(implementation); 
+   get_service().construct(get_implementation()); 
 
 
 
@@ -9549,6 +9938,80 @@
 
 
 
+[section:overload2 basic_io_object::basic_io_object (2 of 2 overloads)]
+
+
+Move-construct a [link asio.reference.basic_io_object `basic_io_object`]. 
+
+
+  basic_io_object(
+      basic_io_object && other);
+
+
+Performs: 
+
+   get_service().move_construct(
+       get_implementation(), other.get_implementation()); 
+
+
+
+
+
+[heading Remarks]
+      
+Available only for services that support movability, 
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+[section:get_implementation basic_io_object::get_implementation]
+
+[indexterm2 get_implementation..basic_io_object] 
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & ``[link asio.reference.basic_io_object.get_implementation.overload1 get_implementation]``();
+  ``  [''''&raquo;''' [link asio.reference.basic_io_object.get_implementation.overload1 more...]]``
+
+  const implementation_type & ``[link asio.reference.basic_io_object.get_implementation.overload2 get_implementation]``() const;
+  ``  [''''&raquo;''' [link asio.reference.basic_io_object.get_implementation.overload2 more...]]``
+
+
+[section:overload1 basic_io_object::get_implementation (1 of 2 overloads)]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & get_implementation();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_io_object::get_implementation (2 of 2 overloads)]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  const implementation_type & get_implementation() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:get_io_service basic_io_object::get_io_service]
 
 [indexterm2 get_io_service..basic_io_object] 
@@ -9571,11 +10034,53 @@
 [endsect]
 
 
+[section:get_service basic_io_object::get_service]
+
+[indexterm2 get_service..basic_io_object] 
+Get the service associated with the I/O object. 
+
+
+  service_type & ``[link asio.reference.basic_io_object.get_service.overload1 get_service]``();
+  ``  [''''&raquo;''' [link asio.reference.basic_io_object.get_service.overload1 more...]]``
+
+  const service_type & ``[link asio.reference.basic_io_object.get_service.overload2 get_service]``() const;
+  ``  [''''&raquo;''' [link asio.reference.basic_io_object.get_service.overload2 more...]]``
+
+
+[section:overload1 basic_io_object::get_service (1 of 2 overloads)]
+
+
+Get the service associated with the I/O object. 
+
+
+  service_type & get_service();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_io_object::get_service (2 of 2 overloads)]
+
+
+Get the service associated with the I/O object. 
+
+
+  const service_type & get_service() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:implementation basic_io_object::implementation]
 
 [indexterm2 implementation..basic_io_object] 
-The underlying implementation of the I/O object. 
+(Deprecated: Use `get_implementation()`.) The underlying implementation of the I/O object. 
 
 
   implementation_type implementation;
@@ -9607,16 +10112,53 @@
 
 
 
+[section:operator_eq_ basic_io_object::operator=]
+
+[indexterm2 operator=..basic_io_object] 
+Move-assign a [link asio.reference.basic_io_object `basic_io_object`]. 
+
+
+  basic_io_object & operator=(
+      basic_io_object && other);
+
+
+Performs: 
+
+   get_service().move_assign(get_implementation(),
+       other.get_service(), other.get_implementation()); 
+
+
+
+
+
+[heading Remarks]
+      
+Available only for services that support movability, 
+
+
+
+
+[endsect]
+
+
+
 [section:service basic_io_object::service]
 
 [indexterm2 service..basic_io_object] 
-The service associated with the I/O object. 
+(Deprecated: Use `get_service()`.) The service associated with the I/O object. 
 
 
   service_type & service;
 
 
 
+[heading Remarks]
+      
+Available only for services that do not support movability. 
+
+
+
+
 [endsect]
 
 
@@ -9653,7 +10195,7 @@
 
 Performs: 
 
-   service.destroy(implementation); 
+   get_service().destroy(get_implementation()); 
 
 
 
@@ -9890,7 +10432,9 @@
 
      Construct a basic_raw_socket, opening it and binding it to the given local endpoint. 
 
-     Construct a basic_raw_socket on an existing native socket. ]
+     Construct a basic_raw_socket on an existing native socket. 
+
+     Move-construct a basic_raw_socket from another. ]
   ]
   
   [
@@ -9975,6 +10519,11 @@
   ]
   
   [
+    [[link asio.reference.basic_raw_socket.operator_eq_ [*operator=]]]
+    [Move-assign a basic_raw_socket from another. ]
+  ]
+  
+  [
     [[link asio.reference.basic_raw_socket.receive [*receive]]]
     [Receive some data on a connected socket. ]
   ]
@@ -10011,6 +10560,22 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_raw_socket.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Data Members]
 [table
   [[Name][Description]]
@@ -10048,12 +10613,12 @@
 
   [
     [[link asio.reference.basic_raw_socket.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_raw_socket.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -10944,7 +11509,15 @@
   ``  [''''&raquo;''' [link asio.reference.basic_raw_socket.basic_raw_socket.overload4 more...]]``
 
 
-[section:overload1 basic_raw_socket::basic_raw_socket (1 of 4 overloads)]
+Move-construct a [link asio.reference.basic_raw_socket `basic_raw_socket`] from another. 
+
+
+  ``[link asio.reference.basic_raw_socket.basic_raw_socket.overload5 basic_raw_socket]``(
+      basic_raw_socket && other);
+  ``  [''''&raquo;''' [link asio.reference.basic_raw_socket.basic_raw_socket.overload5 more...]]``
+
+
+[section:overload1 basic_raw_socket::basic_raw_socket (1 of 5 overloads)]
 
 
 Construct a [link asio.reference.basic_raw_socket `basic_raw_socket`] without opening it. 
@@ -10973,7 +11546,7 @@
 
 
 
-[section:overload2 basic_raw_socket::basic_raw_socket (2 of 4 overloads)]
+[section:overload2 basic_raw_socket::basic_raw_socket (2 of 5 overloads)]
 
 
 Construct and open a [link asio.reference.basic_raw_socket `basic_raw_socket`]. 
@@ -11015,7 +11588,7 @@
 
 
 
-[section:overload3 basic_raw_socket::basic_raw_socket (3 of 4 overloads)]
+[section:overload3 basic_raw_socket::basic_raw_socket (3 of 5 overloads)]
 
 
 Construct a [link asio.reference.basic_raw_socket `basic_raw_socket`], opening it and binding it to the given local endpoint. 
@@ -11057,7 +11630,7 @@
 
 
 
-[section:overload4 basic_raw_socket::basic_raw_socket (4 of 4 overloads)]
+[section:overload4 basic_raw_socket::basic_raw_socket (4 of 5 overloads)]
 
 
 Construct a [link asio.reference.basic_raw_socket `basic_raw_socket`] on an existing native socket. 
@@ -11101,6 +11674,45 @@
 [endsect]
 
 
+
+[section:overload5 basic_raw_socket::basic_raw_socket (5 of 5 overloads)]
+
+
+Move-construct a [link asio.reference.basic_raw_socket `basic_raw_socket`] from another. 
+
+
+  basic_raw_socket(
+      basic_raw_socket && other);
+
+
+This constructor moves a raw socket from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.basic_raw_socket `basic_raw_socket`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 [section:bind basic_raw_socket::bind]
@@ -11475,7 +12087,7 @@
 
 [variablelist
   
-[[asio::system_error][Thrown on failure.]]
+[[asio::system_error][Thrown on failure. Note that, even if the function indicates an error, the underlying descriptor is closed.]]
 
 ]
 
@@ -11512,7 +12124,7 @@
 
 [variablelist
   
-[[ec][Set to indicate what error occurred, if any.]]
+[[ec][Set to indicate what error occurred, if any. Note that, even if the function indicates an error, the underlying descriptor is closed.]]
 
 ]
 
@@ -11858,6 +12470,54 @@
 [endsect]
 
 
+[section:get_implementation basic_raw_socket::get_implementation]
+
+[indexterm2 get_implementation..basic_raw_socket] 
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & ``[link asio.reference.basic_raw_socket.get_implementation.overload1 get_implementation]``();
+  ``  [''''&raquo;''' [link asio.reference.basic_raw_socket.get_implementation.overload1 more...]]``
+
+  const implementation_type & ``[link asio.reference.basic_raw_socket.get_implementation.overload2 get_implementation]``() const;
+  ``  [''''&raquo;''' [link asio.reference.basic_raw_socket.get_implementation.overload2 more...]]``
+
+
+[section:overload1 basic_raw_socket::get_implementation (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & get_implementation();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_raw_socket::get_implementation (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  const implementation_type & get_implementation() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:get_io_service basic_raw_socket::get_io_service]
 
@@ -12017,6 +12677,54 @@
 
 [endsect]
 
+[section:get_service basic_raw_socket::get_service]
+
+[indexterm2 get_service..basic_raw_socket] 
+Get the service associated with the I/O object. 
+
+
+  service_type & ``[link asio.reference.basic_raw_socket.get_service.overload1 get_service]``();
+  ``  [''''&raquo;''' [link asio.reference.basic_raw_socket.get_service.overload1 more...]]``
+
+  const service_type & ``[link asio.reference.basic_raw_socket.get_service.overload2 get_service]``() const;
+  ``  [''''&raquo;''' [link asio.reference.basic_raw_socket.get_service.overload2 more...]]``
+
+
+[section:overload1 basic_raw_socket::get_service (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  service_type & get_service();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_raw_socket::get_service (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  const service_type & get_service() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:implementation basic_raw_socket::implementation]
 
@@ -12024,7 +12732,7 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 implementation..basic_raw_socket] 
-The underlying implementation of the I/O object. 
+(Deprecated: Use `get_implementation()`.) The underlying implementation of the I/O object. 
 
 
   implementation_type implementation;
@@ -12709,7 +13417,9 @@
 
      Construct a basic_socket, opening it and binding it to the given local endpoint. 
 
-     Construct a basic_socket on an existing native socket. ]
+     Construct a basic_socket on an existing native socket. 
+
+     Move-construct a basic_socket from another. ]
   ]
   
   [
@@ -12794,6 +13504,11 @@
   ]
   
   [
+    [[link asio.reference.basic_socket.operator_eq_ [*operator=]]]
+    [Move-assign a basic_socket from another. ]
+  ]
+  
+  [
     [[link asio.reference.basic_socket.remote_endpoint [*remote_endpoint]]]
     [Get the remote endpoint of the socket. ]
   ]
@@ -12815,6 +13530,16 @@
   [[Name][Description]]
 
   [
+    [[link asio.reference.basic_socket.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_socket.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+  [
     [[link asio.reference.basic_socket._basic_socket [*~basic_socket]]]
     [Protected destructor to prevent deletion through this type. ]
   ]
@@ -12858,12 +13583,12 @@
 
   [
     [[link asio.reference.basic_socket.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_socket.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -13730,6 +14455,45 @@
 [endsect]
 
 
+[section:operator_eq_ basic_raw_socket::operator=]
+
+[indexterm2 operator=..basic_raw_socket] 
+Move-assign a [link asio.reference.basic_raw_socket `basic_raw_socket`] from another. 
+
+
+  basic_raw_socket & operator=(
+      basic_raw_socket && other);
+
+
+This assignment operator moves a raw socket from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.basic_raw_socket `basic_raw_socket`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
+
 [section:protocol_type basic_raw_socket::protocol_type]
 
 [indexterm2 protocol_type..basic_raw_socket] 
@@ -14906,13 +15670,20 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 service..basic_raw_socket] 
-The service associated with the I/O object. 
+(Deprecated: Use `get_service()`.) The service associated with the I/O object. 
 
 
   service_type & service;
 
 
 
+[heading Remarks]
+      
+Available only for services that do not support movability. 
+
+
+
+
 [endsect]
 
 
@@ -15453,7 +16224,9 @@
 
      Construct a basic_seq_packet_socket, opening it and binding it to the given local endpoint. 
 
-     Construct a basic_seq_packet_socket on an existing native socket. ]
+     Construct a basic_seq_packet_socket on an existing native socket. 
+
+     Move-construct a basic_seq_packet_socket from another. ]
   ]
   
   [
@@ -15538,6 +16311,11 @@
   ]
   
   [
+    [[link asio.reference.basic_seq_packet_socket.operator_eq_ [*operator=]]]
+    [Move-assign a basic_seq_packet_socket from another. ]
+  ]
+  
+  [
     [[link asio.reference.basic_seq_packet_socket.receive [*receive]]]
     [Receive some data on the socket. 
 
@@ -15566,6 +16344,22 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_seq_packet_socket.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Data Members]
 [table
   [[Name][Description]]
@@ -15603,12 +16397,12 @@
 
   [
     [[link asio.reference.basic_seq_packet_socket.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_seq_packet_socket.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -16168,7 +16962,15 @@
   ``  [''''&raquo;''' [link asio.reference.basic_seq_packet_socket.basic_seq_packet_socket.overload4 more...]]``
 
 
-[section:overload1 basic_seq_packet_socket::basic_seq_packet_socket (1 of 4 overloads)]
+Move-construct a [link asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] from another. 
+
+
+  ``[link asio.reference.basic_seq_packet_socket.basic_seq_packet_socket.overload5 basic_seq_packet_socket]``(
+      basic_seq_packet_socket && other);
+  ``  [''''&raquo;''' [link asio.reference.basic_seq_packet_socket.basic_seq_packet_socket.overload5 more...]]``
+
+
+[section:overload1 basic_seq_packet_socket::basic_seq_packet_socket (1 of 5 overloads)]
 
 
 Construct a [link asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] without opening it. 
@@ -16197,7 +16999,7 @@
 
 
 
-[section:overload2 basic_seq_packet_socket::basic_seq_packet_socket (2 of 4 overloads)]
+[section:overload2 basic_seq_packet_socket::basic_seq_packet_socket (2 of 5 overloads)]
 
 
 Construct and open a [link asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`]. 
@@ -16239,7 +17041,7 @@
 
 
 
-[section:overload3 basic_seq_packet_socket::basic_seq_packet_socket (3 of 4 overloads)]
+[section:overload3 basic_seq_packet_socket::basic_seq_packet_socket (3 of 5 overloads)]
 
 
 Construct a [link asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`], opening it and binding it to the given local endpoint. 
@@ -16281,7 +17083,7 @@
 
 
 
-[section:overload4 basic_seq_packet_socket::basic_seq_packet_socket (4 of 4 overloads)]
+[section:overload4 basic_seq_packet_socket::basic_seq_packet_socket (4 of 5 overloads)]
 
 
 Construct a [link asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] on an existing native socket. 
@@ -16325,6 +17127,45 @@
 [endsect]
 
 
+
+[section:overload5 basic_seq_packet_socket::basic_seq_packet_socket (5 of 5 overloads)]
+
+
+Move-construct a [link asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] from another. 
+
+
+  basic_seq_packet_socket(
+      basic_seq_packet_socket && other);
+
+
+This constructor moves a sequenced packet socket from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 [section:bind basic_seq_packet_socket::bind]
@@ -16699,7 +17540,7 @@
 
 [variablelist
   
-[[asio::system_error][Thrown on failure.]]
+[[asio::system_error][Thrown on failure. Note that, even if the function indicates an error, the underlying descriptor is closed.]]
 
 ]
 
@@ -16736,7 +17577,7 @@
 
 [variablelist
   
-[[ec][Set to indicate what error occurred, if any.]]
+[[ec][Set to indicate what error occurred, if any. Note that, even if the function indicates an error, the underlying descriptor is closed.]]
 
 ]
 
@@ -17082,6 +17923,54 @@
 [endsect]
 
 
+[section:get_implementation basic_seq_packet_socket::get_implementation]
+
+[indexterm2 get_implementation..basic_seq_packet_socket] 
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & ``[link asio.reference.basic_seq_packet_socket.get_implementation.overload1 get_implementation]``();
+  ``  [''''&raquo;''' [link asio.reference.basic_seq_packet_socket.get_implementation.overload1 more...]]``
+
+  const implementation_type & ``[link asio.reference.basic_seq_packet_socket.get_implementation.overload2 get_implementation]``() const;
+  ``  [''''&raquo;''' [link asio.reference.basic_seq_packet_socket.get_implementation.overload2 more...]]``
+
+
+[section:overload1 basic_seq_packet_socket::get_implementation (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & get_implementation();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_seq_packet_socket::get_implementation (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  const implementation_type & get_implementation() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:get_io_service basic_seq_packet_socket::get_io_service]
 
@@ -17241,6 +18130,54 @@
 
 [endsect]
 
+[section:get_service basic_seq_packet_socket::get_service]
+
+[indexterm2 get_service..basic_seq_packet_socket] 
+Get the service associated with the I/O object. 
+
+
+  service_type & ``[link asio.reference.basic_seq_packet_socket.get_service.overload1 get_service]``();
+  ``  [''''&raquo;''' [link asio.reference.basic_seq_packet_socket.get_service.overload1 more...]]``
+
+  const service_type & ``[link asio.reference.basic_seq_packet_socket.get_service.overload2 get_service]``() const;
+  ``  [''''&raquo;''' [link asio.reference.basic_seq_packet_socket.get_service.overload2 more...]]``
+
+
+[section:overload1 basic_seq_packet_socket::get_service (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  service_type & get_service();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_seq_packet_socket::get_service (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  const service_type & get_service() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:implementation basic_seq_packet_socket::implementation]
 
@@ -17248,7 +18185,7 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 implementation..basic_seq_packet_socket] 
-The underlying implementation of the I/O object. 
+(Deprecated: Use `get_implementation()`.) The underlying implementation of the I/O object. 
 
 
   implementation_type implementation;
@@ -17933,7 +18870,9 @@
 
      Construct a basic_socket, opening it and binding it to the given local endpoint. 
 
-     Construct a basic_socket on an existing native socket. ]
+     Construct a basic_socket on an existing native socket. 
+
+     Move-construct a basic_socket from another. ]
   ]
   
   [
@@ -18018,6 +18957,11 @@
   ]
   
   [
+    [[link asio.reference.basic_socket.operator_eq_ [*operator=]]]
+    [Move-assign a basic_socket from another. ]
+  ]
+  
+  [
     [[link asio.reference.basic_socket.remote_endpoint [*remote_endpoint]]]
     [Get the remote endpoint of the socket. ]
   ]
@@ -18039,6 +18983,16 @@
   [[Name][Description]]
 
   [
+    [[link asio.reference.basic_socket.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_socket.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+  [
     [[link asio.reference.basic_socket._basic_socket [*~basic_socket]]]
     [Protected destructor to prevent deletion through this type. ]
   ]
@@ -18082,12 +19036,12 @@
 
   [
     [[link asio.reference.basic_socket.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_socket.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -18954,6 +19908,45 @@
 [endsect]
 
 
+[section:operator_eq_ basic_seq_packet_socket::operator=]
+
+[indexterm2 operator=..basic_seq_packet_socket] 
+Move-assign a [link asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] from another. 
+
+
+  basic_seq_packet_socket & operator=(
+      basic_seq_packet_socket && other);
+
+
+This assignment operator moves a sequenced packet socket from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
+
 [section:protocol_type basic_seq_packet_socket::protocol_type]
 
 [indexterm2 protocol_type..basic_seq_packet_socket] 
@@ -19709,13 +20702,20 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 service..basic_seq_packet_socket] 
-The service associated with the I/O object. 
+(Deprecated: Use `get_service()`.) The service associated with the I/O object. 
 
 
   service_type & service;
 
 
 
+[heading Remarks]
+      
+Available only for services that do not support movability. 
+
+
+
+
 [endsect]
 
 
@@ -20120,7 +21120,9 @@
 
      Construct and open a basic_serial_port. 
 
-     Construct a basic_serial_port on an existing native serial port. ]
+     Construct a basic_serial_port on an existing native serial port. 
+
+     Move-construct a basic_serial_port from another. ]
   ]
   
   [
@@ -20171,6 +21173,11 @@
   ]
   
   [
+    [[link asio.reference.basic_serial_port.operator_eq_ [*operator=]]]
+    [Move-assign a basic_serial_port from another. ]
+  ]
+  
+  [
     [[link asio.reference.basic_serial_port.read_some [*read_some]]]
     [Read some data from the serial port. ]
   ]
@@ -20192,18 +21199,34 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_serial_port.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_serial_port.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Protected Data Members]
 [table
   [[Name][Description]]
 
   [
     [[link asio.reference.basic_serial_port.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_serial_port.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -20421,7 +21444,15 @@
   ``  [''''&raquo;''' [link asio.reference.basic_serial_port.basic_serial_port.overload4 more...]]``
 
 
-[section:overload1 basic_serial_port::basic_serial_port (1 of 4 overloads)]
+Move-construct a [link asio.reference.basic_serial_port `basic_serial_port`] from another. 
+
+
+  ``[link asio.reference.basic_serial_port.basic_serial_port.overload5 basic_serial_port]``(
+      basic_serial_port && other);
+  ``  [''''&raquo;''' [link asio.reference.basic_serial_port.basic_serial_port.overload5 more...]]``
+
+
+[section:overload1 basic_serial_port::basic_serial_port (1 of 5 overloads)]
 
 
 Construct a [link asio.reference.basic_serial_port `basic_serial_port`] without opening it. 
@@ -20450,7 +21481,7 @@
 
 
 
-[section:overload2 basic_serial_port::basic_serial_port (2 of 4 overloads)]
+[section:overload2 basic_serial_port::basic_serial_port (2 of 5 overloads)]
 
 
 Construct and open a [link asio.reference.basic_serial_port `basic_serial_port`]. 
@@ -20482,7 +21513,7 @@
 
 
 
-[section:overload3 basic_serial_port::basic_serial_port (3 of 4 overloads)]
+[section:overload3 basic_serial_port::basic_serial_port (3 of 5 overloads)]
 
 
 Construct and open a [link asio.reference.basic_serial_port `basic_serial_port`]. 
@@ -20514,7 +21545,7 @@
 
 
 
-[section:overload4 basic_serial_port::basic_serial_port (4 of 4 overloads)]
+[section:overload4 basic_serial_port::basic_serial_port (4 of 5 overloads)]
 
 
 Construct a [link asio.reference.basic_serial_port `basic_serial_port`] on an existing native serial port. 
@@ -20555,6 +21586,45 @@
 [endsect]
 
 
+
+[section:overload5 basic_serial_port::basic_serial_port (5 of 5 overloads)]
+
+
+Move-construct a [link asio.reference.basic_serial_port `basic_serial_port`] from another. 
+
+
+  basic_serial_port(
+      basic_serial_port && other);
+
+
+This constructor moves a serial port from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.basic_serial_port `basic_serial_port`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 [section:cancel basic_serial_port::cancel]
@@ -20701,6 +21771,54 @@
 
 [endsect]
 
+[section:get_implementation basic_serial_port::get_implementation]
+
+[indexterm2 get_implementation..basic_serial_port] 
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & ``[link asio.reference.basic_serial_port.get_implementation.overload1 get_implementation]``();
+  ``  [''''&raquo;''' [link asio.reference.basic_serial_port.get_implementation.overload1 more...]]``
+
+  const implementation_type & ``[link asio.reference.basic_serial_port.get_implementation.overload2 get_implementation]``() const;
+  ``  [''''&raquo;''' [link asio.reference.basic_serial_port.get_implementation.overload2 more...]]``
+
+
+[section:overload1 basic_serial_port::get_implementation (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & get_implementation();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_serial_port::get_implementation (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  const implementation_type & get_implementation() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:get_io_service basic_serial_port::get_io_service]
 
@@ -20825,6 +21943,54 @@
 
 [endsect]
 
+[section:get_service basic_serial_port::get_service]
+
+[indexterm2 get_service..basic_serial_port] 
+Get the service associated with the I/O object. 
+
+
+  service_type & ``[link asio.reference.basic_serial_port.get_service.overload1 get_service]``();
+  ``  [''''&raquo;''' [link asio.reference.basic_serial_port.get_service.overload1 more...]]``
+
+  const service_type & ``[link asio.reference.basic_serial_port.get_service.overload2 get_service]``() const;
+  ``  [''''&raquo;''' [link asio.reference.basic_serial_port.get_service.overload2 more...]]``
+
+
+[section:overload1 basic_serial_port::get_service (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  service_type & get_service();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_serial_port::get_service (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  const service_type & get_service() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:implementation basic_serial_port::implementation]
 
@@ -20832,7 +21998,7 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 implementation..basic_serial_port] 
-The underlying implementation of the I/O object. 
+(Deprecated: Use `get_implementation()`.) The underlying implementation of the I/O object. 
 
 
   implementation_type implementation;
@@ -21020,7 +22186,9 @@
 
      Construct and open a basic_serial_port. 
 
-     Construct a basic_serial_port on an existing native serial port. ]
+     Construct a basic_serial_port on an existing native serial port. 
+
+     Move-construct a basic_serial_port from another. ]
   ]
   
   [
@@ -21071,6 +22239,11 @@
   ]
   
   [
+    [[link asio.reference.basic_serial_port.operator_eq_ [*operator=]]]
+    [Move-assign a basic_serial_port from another. ]
+  ]
+  
+  [
     [[link asio.reference.basic_serial_port.read_some [*read_some]]]
     [Read some data from the serial port. ]
   ]
@@ -21092,18 +22265,34 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_serial_port.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_serial_port.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Protected Data Members]
 [table
   [[Name][Description]]
 
   [
     [[link asio.reference.basic_serial_port.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_serial_port.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -21292,6 +22481,45 @@
 
 [endsect]
 
+
+[section:operator_eq_ basic_serial_port::operator=]
+
+[indexterm2 operator=..basic_serial_port] 
+Move-assign a [link asio.reference.basic_serial_port `basic_serial_port`] from another. 
+
+
+  basic_serial_port & operator=(
+      basic_serial_port && other);
+
+
+This assignment operator moves a serial port from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.basic_serial_port `basic_serial_port`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
 [section:read_some basic_serial_port::read_some]
 
 [indexterm2 read_some..basic_serial_port] 
@@ -21497,13 +22725,20 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 service..basic_serial_port] 
-The service associated with the I/O object. 
+(Deprecated: Use `get_service()`.) The service associated with the I/O object. 
 
 
   service_type & service;
 
 
 
+[heading Remarks]
+      
+Available only for services that do not support movability. 
+
+
+
+
 [endsect]
 
 
@@ -21837,18 +23072,34 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_signal_set.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_signal_set.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Protected Data Members]
 [table
   [[Name][Description]]
 
   [
     [[link asio.reference.basic_signal_set.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_signal_set.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -22447,6 +23698,54 @@
 
 [endsect]
 
+[section:get_implementation basic_signal_set::get_implementation]
+
+[indexterm2 get_implementation..basic_signal_set] 
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & ``[link asio.reference.basic_signal_set.get_implementation.overload1 get_implementation]``();
+  ``  [''''&raquo;''' [link asio.reference.basic_signal_set.get_implementation.overload1 more...]]``
+
+  const implementation_type & ``[link asio.reference.basic_signal_set.get_implementation.overload2 get_implementation]``() const;
+  ``  [''''&raquo;''' [link asio.reference.basic_signal_set.get_implementation.overload2 more...]]``
+
+
+[section:overload1 basic_signal_set::get_implementation (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & get_implementation();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_signal_set::get_implementation (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  const implementation_type & get_implementation() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:get_io_service basic_signal_set::get_io_service]
 
@@ -22473,6 +23772,54 @@
 [endsect]
 
 
+[section:get_service basic_signal_set::get_service]
+
+[indexterm2 get_service..basic_signal_set] 
+Get the service associated with the I/O object. 
+
+
+  service_type & ``[link asio.reference.basic_signal_set.get_service.overload1 get_service]``();
+  ``  [''''&raquo;''' [link asio.reference.basic_signal_set.get_service.overload1 more...]]``
+
+  const service_type & ``[link asio.reference.basic_signal_set.get_service.overload2 get_service]``() const;
+  ``  [''''&raquo;''' [link asio.reference.basic_signal_set.get_service.overload2 more...]]``
+
+
+[section:overload1 basic_signal_set::get_service (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  service_type & get_service();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_signal_set::get_service (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  const service_type & get_service() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:implementation basic_signal_set::implementation]
 
@@ -22480,7 +23827,7 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 implementation..basic_signal_set] 
-The underlying implementation of the I/O object. 
+(Deprecated: Use `get_implementation()`.) The underlying implementation of the I/O object. 
 
 
   implementation_type implementation;
@@ -22619,13 +23966,20 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 service..basic_signal_set] 
-The service associated with the I/O object. 
+(Deprecated: Use `get_service()`.) The service associated with the I/O object. 
 
 
   service_type & service;
 
 
 
+[heading Remarks]
+      
+Available only for services that do not support movability. 
+
+
+
+
 [endsect]
 
 
@@ -22862,7 +24216,9 @@
 
      Construct a basic_socket, opening it and binding it to the given local endpoint. 
 
-     Construct a basic_socket on an existing native socket. ]
+     Construct a basic_socket on an existing native socket. 
+
+     Move-construct a basic_socket from another. ]
   ]
   
   [
@@ -22947,6 +24303,11 @@
   ]
   
   [
+    [[link asio.reference.basic_socket.operator_eq_ [*operator=]]]
+    [Move-assign a basic_socket from another. ]
+  ]
+  
+  [
     [[link asio.reference.basic_socket.remote_endpoint [*remote_endpoint]]]
     [Get the remote endpoint of the socket. ]
   ]
@@ -22968,6 +24329,16 @@
   [[Name][Description]]
 
   [
+    [[link asio.reference.basic_socket.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_socket.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+  [
     [[link asio.reference.basic_socket._basic_socket [*~basic_socket]]]
     [Protected destructor to prevent deletion through this type. ]
   ]
@@ -23011,12 +24382,12 @@
 
   [
     [[link asio.reference.basic_socket.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_socket.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -23358,7 +24729,15 @@
   ``  [''''&raquo;''' [link asio.reference.basic_socket.basic_socket.overload4 more...]]``
 
 
-[section:overload1 basic_socket::basic_socket (1 of 4 overloads)]
+Move-construct a [link asio.reference.basic_socket `basic_socket`] from another. 
+
+
+  ``[link asio.reference.basic_socket.basic_socket.overload5 basic_socket]``(
+      basic_socket && other);
+  ``  [''''&raquo;''' [link asio.reference.basic_socket.basic_socket.overload5 more...]]``
+
+
+[section:overload1 basic_socket::basic_socket (1 of 5 overloads)]
 
 
 Construct a [link asio.reference.basic_socket `basic_socket`] without opening it. 
@@ -23387,7 +24766,7 @@
 
 
 
-[section:overload2 basic_socket::basic_socket (2 of 4 overloads)]
+[section:overload2 basic_socket::basic_socket (2 of 5 overloads)]
 
 
 Construct and open a [link asio.reference.basic_socket `basic_socket`]. 
@@ -23429,7 +24808,7 @@
 
 
 
-[section:overload3 basic_socket::basic_socket (3 of 4 overloads)]
+[section:overload3 basic_socket::basic_socket (3 of 5 overloads)]
 
 
 Construct a [link asio.reference.basic_socket `basic_socket`], opening it and binding it to the given local endpoint. 
@@ -23471,7 +24850,7 @@
 
 
 
-[section:overload4 basic_socket::basic_socket (4 of 4 overloads)]
+[section:overload4 basic_socket::basic_socket (4 of 5 overloads)]
 
 
 Construct a [link asio.reference.basic_socket `basic_socket`] on an existing native socket. 
@@ -23515,6 +24894,45 @@
 [endsect]
 
 
+
+[section:overload5 basic_socket::basic_socket (5 of 5 overloads)]
+
+
+Move-construct a [link asio.reference.basic_socket `basic_socket`] from another. 
+
+
+  basic_socket(
+      basic_socket && other);
+
+
+This constructor moves a socket from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.basic_socket `basic_socket`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 [section:bind basic_socket::bind]
@@ -23874,7 +25292,7 @@
 
 [variablelist
   
-[[asio::system_error][Thrown on failure.]]
+[[asio::system_error][Thrown on failure. Note that, even if the function indicates an error, the underlying descriptor is closed.]]
 
 ]
 
@@ -23908,7 +25326,7 @@
 
 [variablelist
   
-[[ec][Set to indicate what error occurred, if any.]]
+[[ec][Set to indicate what error occurred, if any. Note that, even if the function indicates an error, the underlying descriptor is closed.]]
 
 ]
 
@@ -24248,6 +25666,54 @@
 [endsect]
 
 
+[section:get_implementation basic_socket::get_implementation]
+
+[indexterm2 get_implementation..basic_socket] 
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & ``[link asio.reference.basic_socket.get_implementation.overload1 get_implementation]``();
+  ``  [''''&raquo;''' [link asio.reference.basic_socket.get_implementation.overload1 more...]]``
+
+  const implementation_type & ``[link asio.reference.basic_socket.get_implementation.overload2 get_implementation]``() const;
+  ``  [''''&raquo;''' [link asio.reference.basic_socket.get_implementation.overload2 more...]]``
+
+
+[section:overload1 basic_socket::get_implementation (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & get_implementation();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_socket::get_implementation (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  const implementation_type & get_implementation() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:get_io_service basic_socket::get_io_service]
 
@@ -24405,6 +25871,54 @@
 
 [endsect]
 
+[section:get_service basic_socket::get_service]
+
+[indexterm2 get_service..basic_socket] 
+Get the service associated with the I/O object. 
+
+
+  service_type & ``[link asio.reference.basic_socket.get_service.overload1 get_service]``();
+  ``  [''''&raquo;''' [link asio.reference.basic_socket.get_service.overload1 more...]]``
+
+  const service_type & ``[link asio.reference.basic_socket.get_service.overload2 get_service]``() const;
+  ``  [''''&raquo;''' [link asio.reference.basic_socket.get_service.overload2 more...]]``
+
+
+[section:overload1 basic_socket::get_service (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  service_type & get_service();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_socket::get_service (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  const service_type & get_service() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:implementation basic_socket::implementation]
 
@@ -24412,7 +25926,7 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 implementation..basic_socket] 
-The underlying implementation of the I/O object. 
+(Deprecated: Use `get_implementation()`.) The underlying implementation of the I/O object. 
 
 
   implementation_type implementation;
@@ -25077,7 +26591,9 @@
 
      Construct a basic_socket, opening it and binding it to the given local endpoint. 
 
-     Construct a basic_socket on an existing native socket. ]
+     Construct a basic_socket on an existing native socket. 
+
+     Move-construct a basic_socket from another. ]
   ]
   
   [
@@ -25162,6 +26678,11 @@
   ]
   
   [
+    [[link asio.reference.basic_socket.operator_eq_ [*operator=]]]
+    [Move-assign a basic_socket from another. ]
+  ]
+  
+  [
     [[link asio.reference.basic_socket.remote_endpoint [*remote_endpoint]]]
     [Get the remote endpoint of the socket. ]
   ]
@@ -25183,6 +26704,16 @@
   [[Name][Description]]
 
   [
+    [[link asio.reference.basic_socket.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_socket.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+  [
     [[link asio.reference.basic_socket._basic_socket [*~basic_socket]]]
     [Protected destructor to prevent deletion through this type. ]
   ]
@@ -25226,12 +26757,12 @@
 
   [
     [[link asio.reference.basic_socket.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_socket.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -26068,6 +27599,45 @@
 [endsect]
 
 
+[section:operator_eq_ basic_socket::operator=]
+
+[indexterm2 operator=..basic_socket] 
+Move-assign a [link asio.reference.basic_socket `basic_socket`] from another. 
+
+
+  basic_socket & operator=(
+      basic_socket && other);
+
+
+This assignment operator moves a socket from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.basic_socket `basic_socket`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
+
 [section:protocol_type basic_socket::protocol_type]
 
 [indexterm2 protocol_type..basic_socket] 
@@ -26476,13 +28046,20 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 service..basic_socket] 
-The service associated with the I/O object. 
+(Deprecated: Use `get_service()`.) The service associated with the I/O object. 
 
 
   service_type & service;
 
 
 
+[heading Remarks]
+      
+Available only for services that do not support movability. 
+
+
+
+
 [endsect]
 
 
@@ -27010,7 +28587,9 @@
 
      Construct an acceptor opened on the given endpoint. 
 
-     Construct a basic_socket_acceptor on an existing native acceptor. ]
+     Construct a basic_socket_acceptor on an existing native acceptor. 
+
+     Move-construct a basic_socket_acceptor from another. ]
   ]
   
   [
@@ -27088,12 +28667,33 @@
   ]
   
   [
+    [[link asio.reference.basic_socket_acceptor.operator_eq_ [*operator=]]]
+    [Move-assign a basic_socket_acceptor from another. ]
+  ]
+  
+  [
     [[link asio.reference.basic_socket_acceptor.set_option [*set_option]]]
     [Set an option on the acceptor. ]
   ]
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_socket_acceptor.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_socket_acceptor.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Data Members]
 [table
   [[Name][Description]]
@@ -27131,12 +28731,12 @@
 
   [
     [[link asio.reference.basic_socket_acceptor.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_socket_acceptor.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -27658,7 +29258,15 @@
   ``  [''''&raquo;''' [link asio.reference.basic_socket_acceptor.basic_socket_acceptor.overload4 more...]]``
 
 
-[section:overload1 basic_socket_acceptor::basic_socket_acceptor (1 of 4 overloads)]
+Move-construct a [link asio.reference.basic_socket_acceptor `basic_socket_acceptor`] from another. 
+
+
+  ``[link asio.reference.basic_socket_acceptor.basic_socket_acceptor.overload5 basic_socket_acceptor]``(
+      basic_socket_acceptor && other);
+  ``  [''''&raquo;''' [link asio.reference.basic_socket_acceptor.basic_socket_acceptor.overload5 more...]]``
+
+
+[section:overload1 basic_socket_acceptor::basic_socket_acceptor (1 of 5 overloads)]
 
 
 Construct an acceptor without opening it. 
@@ -27687,7 +29295,7 @@
 
 
 
-[section:overload2 basic_socket_acceptor::basic_socket_acceptor (2 of 4 overloads)]
+[section:overload2 basic_socket_acceptor::basic_socket_acceptor (2 of 5 overloads)]
 
 
 Construct an open acceptor. 
@@ -27729,7 +29337,7 @@
 
 
 
-[section:overload3 basic_socket_acceptor::basic_socket_acceptor (3 of 4 overloads)]
+[section:overload3 basic_socket_acceptor::basic_socket_acceptor (3 of 5 overloads)]
 
 
 Construct an acceptor opened on the given endpoint. 
@@ -27789,7 +29397,7 @@
 
 
 
-[section:overload4 basic_socket_acceptor::basic_socket_acceptor (4 of 4 overloads)]
+[section:overload4 basic_socket_acceptor::basic_socket_acceptor (4 of 5 overloads)]
 
 
 Construct a [link asio.reference.basic_socket_acceptor `basic_socket_acceptor`] on an existing native acceptor. 
@@ -27833,6 +29441,45 @@
 [endsect]
 
 
+
+[section:overload5 basic_socket_acceptor::basic_socket_acceptor (5 of 5 overloads)]
+
+
+Move-construct a [link asio.reference.basic_socket_acceptor `basic_socket_acceptor`] from another. 
+
+
+  basic_socket_acceptor(
+      basic_socket_acceptor && other);
+
+
+This constructor moves an acceptor from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.basic_socket_acceptor `basic_socket_acceptor`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 [section:bind basic_socket_acceptor::bind]
@@ -28397,6 +30044,54 @@
 [endsect]
 
 
+[section:get_implementation basic_socket_acceptor::get_implementation]
+
+[indexterm2 get_implementation..basic_socket_acceptor] 
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & ``[link asio.reference.basic_socket_acceptor.get_implementation.overload1 get_implementation]``();
+  ``  [''''&raquo;''' [link asio.reference.basic_socket_acceptor.get_implementation.overload1 more...]]``
+
+  const implementation_type & ``[link asio.reference.basic_socket_acceptor.get_implementation.overload2 get_implementation]``() const;
+  ``  [''''&raquo;''' [link asio.reference.basic_socket_acceptor.get_implementation.overload2 more...]]``
+
+
+[section:overload1 basic_socket_acceptor::get_implementation (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & get_implementation();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_socket_acceptor::get_implementation (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  const implementation_type & get_implementation() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:get_io_service basic_socket_acceptor::get_io_service]
 
@@ -28554,6 +30249,54 @@
 
 [endsect]
 
+[section:get_service basic_socket_acceptor::get_service]
+
+[indexterm2 get_service..basic_socket_acceptor] 
+Get the service associated with the I/O object. 
+
+
+  service_type & ``[link asio.reference.basic_socket_acceptor.get_service.overload1 get_service]``();
+  ``  [''''&raquo;''' [link asio.reference.basic_socket_acceptor.get_service.overload1 more...]]``
+
+  const service_type & ``[link asio.reference.basic_socket_acceptor.get_service.overload2 get_service]``() const;
+  ``  [''''&raquo;''' [link asio.reference.basic_socket_acceptor.get_service.overload2 more...]]``
+
+
+[section:overload1 basic_socket_acceptor::get_service (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  service_type & get_service();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_socket_acceptor::get_service (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  const service_type & get_service() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:implementation basic_socket_acceptor::implementation]
 
@@ -28561,7 +30304,7 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 implementation..basic_socket_acceptor] 
-The underlying implementation of the I/O object. 
+(Deprecated: Use `get_implementation()`.) The underlying implementation of the I/O object. 
 
 
   implementation_type implementation;
@@ -29654,6 +31397,45 @@
 [endsect]
 
 
+[section:operator_eq_ basic_socket_acceptor::operator=]
+
+[indexterm2 operator=..basic_socket_acceptor] 
+Move-assign a [link asio.reference.basic_socket_acceptor `basic_socket_acceptor`] from another. 
+
+
+  basic_socket_acceptor & operator=(
+      basic_socket_acceptor && other);
+
+
+This assignment operator moves an acceptor from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.basic_socket_acceptor `basic_socket_acceptor`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
+
 [section:protocol_type basic_socket_acceptor::protocol_type]
 
 [indexterm2 protocol_type..basic_socket_acceptor] 
@@ -29951,13 +31733,20 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 service..basic_socket_acceptor] 
-The service associated with the I/O object. 
+(Deprecated: Use `get_service()`.) The service associated with the I/O object. 
 
 
   service_type & service;
 
 
 
+[heading Remarks]
+      
+Available only for services that do not support movability. 
+
+
+
+
 [endsect]
 
 
@@ -30960,6 +32749,16 @@
   ]
   
   [
+    [[link asio.reference.basic_socket_streambuf.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_socket_streambuf.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+  [
     [[link asio.reference.basic_socket_streambuf.overflow [*overflow]]]
     []
   ]
@@ -31018,12 +32817,12 @@
 
   [
     [[link asio.reference.basic_socket_streambuf.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_socket_streambuf.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -31764,7 +33563,7 @@
 
 [variablelist
   
-[[ec][Set to indicate what error occurred, if any.]]
+[[ec][Set to indicate what error occurred, if any. Note that, even if the function indicates an error, the underlying descriptor is closed.]]
 
 ]
 
@@ -32301,6 +34100,54 @@
 
 [endsect]
 
+[section:get_implementation basic_socket_streambuf::get_implementation]
+
+[indexterm2 get_implementation..basic_socket_streambuf] 
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & ``[link asio.reference.basic_socket_streambuf.get_implementation.overload1 get_implementation]``();
+  ``  [''''&raquo;''' [link asio.reference.basic_socket_streambuf.get_implementation.overload1 more...]]``
+
+  const implementation_type & ``[link asio.reference.basic_socket_streambuf.get_implementation.overload2 get_implementation]``() const;
+  ``  [''''&raquo;''' [link asio.reference.basic_socket_streambuf.get_implementation.overload2 more...]]``
+
+
+[section:overload1 basic_socket_streambuf::get_implementation (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & get_implementation();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_socket_streambuf::get_implementation (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  const implementation_type & get_implementation() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:get_io_service basic_socket_streambuf::get_io_service]
 
@@ -32460,6 +34307,54 @@
 
 [endsect]
 
+[section:get_service basic_socket_streambuf::get_service]
+
+[indexterm2 get_service..basic_socket_streambuf] 
+Get the service associated with the I/O object. 
+
+
+  service_type & ``[link asio.reference.basic_socket_streambuf.get_service.overload1 get_service]``();
+  ``  [''''&raquo;''' [link asio.reference.basic_socket_streambuf.get_service.overload1 more...]]``
+
+  const service_type & ``[link asio.reference.basic_socket_streambuf.get_service.overload2 get_service]``() const;
+  ``  [''''&raquo;''' [link asio.reference.basic_socket_streambuf.get_service.overload2 more...]]``
+
+
+[section:overload1 basic_socket_streambuf::get_service (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  service_type & get_service();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_socket_streambuf::get_service (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  const service_type & get_service() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:implementation basic_socket_streambuf::implementation]
 
@@ -32467,7 +34362,7 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 implementation..basic_socket_streambuf] 
-The underlying implementation of the I/O object. 
+(Deprecated: Use `get_implementation()`.) The underlying implementation of the I/O object. 
 
 
   implementation_type implementation;
@@ -33170,7 +35065,9 @@
 
      Construct a basic_socket, opening it and binding it to the given local endpoint. 
 
-     Construct a basic_socket on an existing native socket. ]
+     Construct a basic_socket on an existing native socket. 
+
+     Move-construct a basic_socket from another. ]
   ]
   
   [
@@ -33255,6 +35152,11 @@
   ]
   
   [
+    [[link asio.reference.basic_socket.operator_eq_ [*operator=]]]
+    [Move-assign a basic_socket from another. ]
+  ]
+  
+  [
     [[link asio.reference.basic_socket.remote_endpoint [*remote_endpoint]]]
     [Get the remote endpoint of the socket. ]
   ]
@@ -33276,6 +35178,16 @@
   [[Name][Description]]
 
   [
+    [[link asio.reference.basic_socket.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_socket.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+  [
     [[link asio.reference.basic_socket._basic_socket [*~basic_socket]]]
     [Protected destructor to prevent deletion through this type. ]
   ]
@@ -33319,12 +35231,12 @@
 
   [
     [[link asio.reference.basic_socket.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_socket.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -34648,13 +36560,20 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 service..basic_socket_streambuf] 
-The service associated with the I/O object. 
+(Deprecated: Use `get_service()`.) The service associated with the I/O object. 
 
 
   service_type & service;
 
 
 
+[heading Remarks]
+      
+Available only for services that do not support movability. 
+
+
+
+
 [endsect]
 
 
@@ -35296,7 +37215,9 @@
 
      Construct a basic_stream_socket, opening it and binding it to the given local endpoint. 
 
-     Construct a basic_stream_socket on an existing native socket. ]
+     Construct a basic_stream_socket on an existing native socket. 
+
+     Move-construct a basic_stream_socket from another. ]
   ]
   
   [
@@ -35381,6 +37302,11 @@
   ]
   
   [
+    [[link asio.reference.basic_stream_socket.operator_eq_ [*operator=]]]
+    [Move-assign a basic_stream_socket from another. ]
+  ]
+  
+  [
     [[link asio.reference.basic_stream_socket.read_some [*read_some]]]
     [Read some data from the socket. ]
   ]
@@ -35419,6 +37345,22 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_stream_socket.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Data Members]
 [table
   [[Name][Description]]
@@ -35456,12 +37398,12 @@
 
   [
     [[link asio.reference.basic_stream_socket.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_stream_socket.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -36223,7 +38165,15 @@
   ``  [''''&raquo;''' [link asio.reference.basic_stream_socket.basic_stream_socket.overload4 more...]]``
 
 
-[section:overload1 basic_stream_socket::basic_stream_socket (1 of 4 overloads)]
+Move-construct a [link asio.reference.basic_stream_socket `basic_stream_socket`] from another. 
+
+
+  ``[link asio.reference.basic_stream_socket.basic_stream_socket.overload5 basic_stream_socket]``(
+      basic_stream_socket && other);
+  ``  [''''&raquo;''' [link asio.reference.basic_stream_socket.basic_stream_socket.overload5 more...]]``
+
+
+[section:overload1 basic_stream_socket::basic_stream_socket (1 of 5 overloads)]
 
 
 Construct a [link asio.reference.basic_stream_socket `basic_stream_socket`] without opening it. 
@@ -36252,7 +38202,7 @@
 
 
 
-[section:overload2 basic_stream_socket::basic_stream_socket (2 of 4 overloads)]
+[section:overload2 basic_stream_socket::basic_stream_socket (2 of 5 overloads)]
 
 
 Construct and open a [link asio.reference.basic_stream_socket `basic_stream_socket`]. 
@@ -36294,7 +38244,7 @@
 
 
 
-[section:overload3 basic_stream_socket::basic_stream_socket (3 of 4 overloads)]
+[section:overload3 basic_stream_socket::basic_stream_socket (3 of 5 overloads)]
 
 
 Construct a [link asio.reference.basic_stream_socket `basic_stream_socket`], opening it and binding it to the given local endpoint. 
@@ -36336,7 +38286,7 @@
 
 
 
-[section:overload4 basic_stream_socket::basic_stream_socket (4 of 4 overloads)]
+[section:overload4 basic_stream_socket::basic_stream_socket (4 of 5 overloads)]
 
 
 Construct a [link asio.reference.basic_stream_socket `basic_stream_socket`] on an existing native socket. 
@@ -36380,6 +38330,45 @@
 [endsect]
 
 
+
+[section:overload5 basic_stream_socket::basic_stream_socket (5 of 5 overloads)]
+
+
+Move-construct a [link asio.reference.basic_stream_socket `basic_stream_socket`] from another. 
+
+
+  basic_stream_socket(
+      basic_stream_socket && other);
+
+
+This constructor moves a stream socket from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.basic_stream_socket `basic_stream_socket`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 [section:bind basic_stream_socket::bind]
@@ -36754,7 +38743,7 @@
 
 [variablelist
   
-[[asio::system_error][Thrown on failure.]]
+[[asio::system_error][Thrown on failure. Note that, even if the function indicates an error, the underlying descriptor is closed.]]
 
 ]
 
@@ -36791,7 +38780,7 @@
 
 [variablelist
   
-[[ec][Set to indicate what error occurred, if any.]]
+[[ec][Set to indicate what error occurred, if any. Note that, even if the function indicates an error, the underlying descriptor is closed.]]
 
 ]
 
@@ -37137,6 +39126,54 @@
 [endsect]
 
 
+[section:get_implementation basic_stream_socket::get_implementation]
+
+[indexterm2 get_implementation..basic_stream_socket] 
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & ``[link asio.reference.basic_stream_socket.get_implementation.overload1 get_implementation]``();
+  ``  [''''&raquo;''' [link asio.reference.basic_stream_socket.get_implementation.overload1 more...]]``
+
+  const implementation_type & ``[link asio.reference.basic_stream_socket.get_implementation.overload2 get_implementation]``() const;
+  ``  [''''&raquo;''' [link asio.reference.basic_stream_socket.get_implementation.overload2 more...]]``
+
+
+[section:overload1 basic_stream_socket::get_implementation (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & get_implementation();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_stream_socket::get_implementation (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  const implementation_type & get_implementation() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:get_io_service basic_stream_socket::get_io_service]
 
@@ -37296,6 +39333,54 @@
 
 [endsect]
 
+[section:get_service basic_stream_socket::get_service]
+
+[indexterm2 get_service..basic_stream_socket] 
+Get the service associated with the I/O object. 
+
+
+  service_type & ``[link asio.reference.basic_stream_socket.get_service.overload1 get_service]``();
+  ``  [''''&raquo;''' [link asio.reference.basic_stream_socket.get_service.overload1 more...]]``
+
+  const service_type & ``[link asio.reference.basic_stream_socket.get_service.overload2 get_service]``() const;
+  ``  [''''&raquo;''' [link asio.reference.basic_stream_socket.get_service.overload2 more...]]``
+
+
+[section:overload1 basic_stream_socket::get_service (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  service_type & get_service();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_stream_socket::get_service (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  const service_type & get_service() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:implementation basic_stream_socket::implementation]
 
@@ -37303,7 +39388,7 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 implementation..basic_stream_socket] 
-The underlying implementation of the I/O object. 
+(Deprecated: Use `get_implementation()`.) The underlying implementation of the I/O object. 
 
 
   implementation_type implementation;
@@ -37988,7 +40073,9 @@
 
      Construct a basic_socket, opening it and binding it to the given local endpoint. 
 
-     Construct a basic_socket on an existing native socket. ]
+     Construct a basic_socket on an existing native socket. 
+
+     Move-construct a basic_socket from another. ]
   ]
   
   [
@@ -38073,6 +40160,11 @@
   ]
   
   [
+    [[link asio.reference.basic_socket.operator_eq_ [*operator=]]]
+    [Move-assign a basic_socket from another. ]
+  ]
+  
+  [
     [[link asio.reference.basic_socket.remote_endpoint [*remote_endpoint]]]
     [Get the remote endpoint of the socket. ]
   ]
@@ -38094,6 +40186,16 @@
   [[Name][Description]]
 
   [
+    [[link asio.reference.basic_socket.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_socket.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+  [
     [[link asio.reference.basic_socket._basic_socket [*~basic_socket]]]
     [Protected destructor to prevent deletion through this type. ]
   ]
@@ -38137,12 +40239,12 @@
 
   [
     [[link asio.reference.basic_socket.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_socket.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -39009,6 +41111,45 @@
 [endsect]
 
 
+[section:operator_eq_ basic_stream_socket::operator=]
+
+[indexterm2 operator=..basic_stream_socket] 
+Move-assign a [link asio.reference.basic_stream_socket `basic_stream_socket`] from another. 
+
+
+  basic_stream_socket & operator=(
+      basic_stream_socket && other);
+
+
+This assignment operator moves a stream socket from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.basic_stream_socket `basic_stream_socket`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
+
 [section:protocol_type basic_stream_socket::protocol_type]
 
 [indexterm2 protocol_type..basic_stream_socket] 
@@ -39955,13 +42096,20 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 service..basic_stream_socket] 
-The service associated with the I/O object. 
+(Deprecated: Use `get_service()`.) The service associated with the I/O object. 
 
 
   service_type & service;
 
 
 
+[heading Remarks]
+      
+Available only for services that do not support movability. 
+
+
+
+
 [endsect]
 
 
@@ -48146,6 +50294,16 @@
   ]
   
   [
+    [[link asio.reference.datagram_socket_service.move_assign [*move_assign]]]
+    [Move-assign from another datagram socket implementation. ]
+  ]
+  
+  [
+    [[link asio.reference.datagram_socket_service.move_construct [*move_construct]]]
+    [Move-construct a new datagram socket implementation. ]
+  ]
+  
+  [
     [[link asio.reference.datagram_socket_service.native [*native]]]
     [(Deprecated: Use native_handle().) Get the native socket implementation. ]
   ]
@@ -48209,11 +50367,6 @@
     [Disable sends or receives on the socket. ]
   ]
   
-  [
-    [[link asio.reference.datagram_socket_service.shutdown_service [*shutdown_service]]]
-    [Destroy all user-defined handler objects owned by the service. ]
-  ]
-  
 ]
 
 [heading Data Members]
@@ -48640,6 +50793,39 @@
 
 
 
+[section:move_assign datagram_socket_service::move_assign]
+
+[indexterm2 move_assign..datagram_socket_service] 
+Move-assign from another datagram socket implementation. 
+
+
+  void move_assign(
+      implementation_type & impl,
+      datagram_socket_service & other_service,
+      implementation_type & other_impl);
+
+
+
+[endsect]
+
+
+
+[section:move_construct datagram_socket_service::move_construct]
+
+[indexterm2 move_construct..datagram_socket_service] 
+Move-construct a new datagram socket implementation. 
+
+
+  void move_construct(
+      implementation_type & impl,
+      implementation_type & other_impl);
+
+
+
+[endsect]
+
+
+
 [section:native datagram_socket_service::native]
 
 [indexterm2 native..datagram_socket_service] 
@@ -48990,20 +51176,6 @@
 
 
 
-[section:shutdown_service datagram_socket_service::shutdown_service]
-
-[indexterm2 shutdown_service..datagram_socket_service] 
-Destroy all user-defined handler objects owned by the service. 
-
-
-  virtual void shutdown_service();
-
-
-
-[endsect]
-
-
-
 [endsect]
 
 
@@ -49111,18 +51283,34 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_deadline_timer.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_deadline_timer.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Protected Data Members]
 [table
   [[Name][Description]]
 
   [
     [[link asio.reference.basic_deadline_timer.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_deadline_timer.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -49333,11 +51521,6 @@
   ]
   
   [
-    [[link asio.reference.deadline_timer_service.shutdown_service [*shutdown_service]]]
-    [Destroy all user-defined handler objects owned by the service. ]
-  ]
-  
-  [
     [[link asio.reference.deadline_timer_service.wait [*wait]]]
     []
   ]
@@ -49636,20 +51819,6 @@
 
 
 
-[section:shutdown_service deadline_timer_service::shutdown_service]
-
-[indexterm2 shutdown_service..deadline_timer_service] 
-Destroy all user-defined handler objects owned by the service. 
-
-
-  virtual void shutdown_service();
-
-
-
-[endsect]
-
-
-
 [section:time_type deadline_timer_service::time_type]
 
 [indexterm2 time_type..deadline_timer_service] 
@@ -50941,6 +53110,13 @@
   
   ]
 
+  [
+
+    [[link asio.reference.io_service.fork_event [*fork_event]]]
+    [Fork-related event notifications. ]
+  
+  ]
+
 ]
 
 [heading Member Functions]
@@ -50958,6 +53134,11 @@
   ]
   
   [
+    [[link asio.reference.io_service.notify_fork [*notify_fork]]]
+    [Notify the io_service of a fork-related event. ]
+  ]
+  
+  [
     [[link asio.reference.io_service.poll [*poll]]]
     [Run the io_service object's event processing loop to execute ready handlers. ]
   ]
@@ -51048,7 +53229,7 @@
   
 [*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Safe, with the exception that calling `reset()` while there are unfinished `run()`, `run_one()`, `poll()` or `poll_one()` calls results in undefined behaviour.
+[*Shared] [*objects:] Safe, with the specific exceptions of the `reset()` and `notify_fork()` functions. Calling `reset()` while there are unfinished `run()`, `run_one()`, `poll()` or `poll_one()` calls results in undefined behaviour. The `notify_fork()` function should not be called while any [link asio.reference.io_service `io_service`] function, or any function on an I/O object that is associated with the [link asio.reference.io_service `io_service`], is being called in another thread.
 
 
 
@@ -51250,6 +53431,44 @@
 
 
 
+[section:fork_event io_service::fork_event]
+
+[indexterm2 fork_event..io_service] 
+Fork-related event notifications. 
+
+
+  enum fork_event
+
+[indexterm2 fork_prepare..io_service]
+[indexterm2 fork_parent..io_service]
+[indexterm2 fork_child..io_service]
+
+[heading Values]
+[variablelist
+
+  [
+    [fork_prepare]
+    [Notify the io_service that the process is about to fork. ]
+  ]
+
+  [
+    [fork_parent]
+    [Notify the io_service that the process has forked and is the parent. ]
+  ]
+
+  [
+    [fork_child]
+    [Notify the io_service that the process has forked and is the child. ]
+  ]
+
+]
+
+
+
+[endsect]
+
+
+
 [section:has_service io_service::has_service]
 
 [indexterm2 has_service..io_service] 
@@ -51349,6 +53568,72 @@
 
 [endsect]
 
+
+[section:notify_fork io_service::notify_fork]
+
+[indexterm2 notify_fork..io_service] 
+Notify the [link asio.reference.io_service `io_service`] of a fork-related event. 
+
+
+  void notify_fork(
+      asio::io_service::fork_event event);
+
+
+This function is used to inform the [link asio.reference.io_service `io_service`] that the process is about to fork, or has just forked. This allows the [link asio.reference.io_service `io_service`], and the services it contains, to perform any necessary housekeeping to ensure correct operation following a fork.
+
+This function must not be called while any other [link asio.reference.io_service `io_service`] function, or any function on an I/O object associated with the [link asio.reference.io_service `io_service`], is being called in another thread. It is, however, safe to call this function from within a completion handler, provided no other thread is accessing the [link asio.reference.io_service `io_service`].
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[event][A fork-related event.]]
+
+]
+
+
+[heading Exceptions]
+    
+
+[variablelist
+  
+[[asio::system_error][Thrown on failure. If the notification fails the [link asio.reference.io_service `io_service`] object should no longer be used and should be destroyed.]]
+
+]
+
+
+[heading Example]
+  
+The following code illustrates how to incorporate the `notify_fork()` function: 
+
+   my_io_service.notify_fork(asio::io_service::fork_prepare);
+   if (fork() == 0)
+   {
+     // This is the child process.
+     my_io_service.notify_fork(asio::io_service::fork_child);
+   }
+   else
+   {
+     // This is the parent process.
+     my_io_service.notify_fork(asio::io_service::fork_parent);
+   } 
+
+
+
+
+
+[heading Remarks]
+      
+For each service object `svc` in the [link asio.reference.io_service `io_service`] set, performs `svc->fork_service();`. When processing the fork\_prepare event, services are visited in reverse order of the beginning of service object lifetime. Otherwise, services are visited in order of the beginning of service object lifetime. 
+
+
+
+
+[endsect]
+
+
 [section:poll io_service::poll]
 
 [indexterm2 poll..io_service] 
@@ -55784,18 +58069,34 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.ip__basic_resolver.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.ip__basic_resolver.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Protected Data Members]
 [table
   [[Name][Description]]
 
   [
     [[link asio.reference.ip__basic_resolver.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.ip__basic_resolver.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -56005,6 +58306,54 @@
 [endsect]
 
 
+[section:get_implementation ip::basic_resolver::get_implementation]
+
+[indexterm2 get_implementation..ip::basic_resolver] 
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & ``[link asio.reference.ip__basic_resolver.get_implementation.overload1 get_implementation]``();
+  ``  [''''&raquo;''' [link asio.reference.ip__basic_resolver.get_implementation.overload1 more...]]``
+
+  const implementation_type & ``[link asio.reference.ip__basic_resolver.get_implementation.overload2 get_implementation]``() const;
+  ``  [''''&raquo;''' [link asio.reference.ip__basic_resolver.get_implementation.overload2 more...]]``
+
+
+[section:overload1 ip::basic_resolver::get_implementation (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & get_implementation();
+
+
+
+[endsect]
+
+
+
+[section:overload2 ip::basic_resolver::get_implementation (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  const implementation_type & get_implementation() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:get_io_service ip::basic_resolver::get_io_service]
 
@@ -56031,6 +58380,54 @@
 [endsect]
 
 
+[section:get_service ip::basic_resolver::get_service]
+
+[indexterm2 get_service..ip::basic_resolver] 
+Get the service associated with the I/O object. 
+
+
+  service_type & ``[link asio.reference.ip__basic_resolver.get_service.overload1 get_service]``();
+  ``  [''''&raquo;''' [link asio.reference.ip__basic_resolver.get_service.overload1 more...]]``
+
+  const service_type & ``[link asio.reference.ip__basic_resolver.get_service.overload2 get_service]``() const;
+  ``  [''''&raquo;''' [link asio.reference.ip__basic_resolver.get_service.overload2 more...]]``
+
+
+[section:overload1 ip::basic_resolver::get_service (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  service_type & get_service();
+
+
+
+[endsect]
+
+
+
+[section:overload2 ip::basic_resolver::get_service (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  const service_type & get_service() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:implementation ip::basic_resolver::implementation]
 
@@ -56038,7 +58435,7 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 implementation..ip::basic_resolver] 
-The underlying implementation of the I/O object. 
+(Deprecated: Use `get_implementation()`.) The underlying implementation of the I/O object. 
 
 
   implementation_type implementation;
@@ -56568,13 +58965,20 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 service..ip::basic_resolver] 
-The service associated with the I/O object. 
+(Deprecated: Use `get_service()`.) The service associated with the I/O object. 
 
 
   service_type & service;
 
 
 
+[heading Remarks]
+      
+Available only for services that do not support movability. 
+
+
+
+
 [endsect]
 
 
@@ -58406,18 +60810,34 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.ip__basic_resolver.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.ip__basic_resolver.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Protected Data Members]
 [table
   [[Name][Description]]
 
   [
     [[link asio.reference.ip__basic_resolver.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.ip__basic_resolver.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -58666,7 +61086,9 @@
 
      Construct a basic_raw_socket, opening it and binding it to the given local endpoint. 
 
-     Construct a basic_raw_socket on an existing native socket. ]
+     Construct a basic_raw_socket on an existing native socket. 
+
+     Move-construct a basic_raw_socket from another. ]
   ]
   
   [
@@ -58751,6 +61173,11 @@
   ]
   
   [
+    [[link asio.reference.basic_raw_socket.operator_eq_ [*operator=]]]
+    [Move-assign a basic_raw_socket from another. ]
+  ]
+  
+  [
     [[link asio.reference.basic_raw_socket.receive [*receive]]]
     [Receive some data on a connected socket. ]
   ]
@@ -58787,6 +61214,22 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_raw_socket.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Data Members]
 [table
   [[Name][Description]]
@@ -58824,12 +61267,12 @@
 
   [
     [[link asio.reference.basic_raw_socket.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_raw_socket.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -59438,11 +61881,6 @@
     [Construct a new resolver service for the specified io_service. ]
   ]
   
-  [
-    [[link asio.reference.ip__resolver_service.shutdown_service [*shutdown_service]]]
-    [Destroy all user-defined handler objects owned by the service. ]
-  ]
-  
 ]
 
 [heading Data Members]
@@ -59997,20 +62435,6 @@
 
 
 
-[section:shutdown_service ip::resolver_service::shutdown_service]
-
-[indexterm2 shutdown_service..ip::resolver_service] 
-Destroy all user-defined handler objects owned by the service. 
-
-
-  virtual void shutdown_service();
-
-
-
-[endsect]
-
-
-
 [endsect]
 
 [section:ip__tcp ip::tcp]
@@ -60327,7 +62751,9 @@
 
      Construct an acceptor opened on the given endpoint. 
 
-     Construct a basic_socket_acceptor on an existing native acceptor. ]
+     Construct a basic_socket_acceptor on an existing native acceptor. 
+
+     Move-construct a basic_socket_acceptor from another. ]
   ]
   
   [
@@ -60405,12 +62831,33 @@
   ]
   
   [
+    [[link asio.reference.basic_socket_acceptor.operator_eq_ [*operator=]]]
+    [Move-assign a basic_socket_acceptor from another. ]
+  ]
+  
+  [
     [[link asio.reference.basic_socket_acceptor.set_option [*set_option]]]
     [Set an option on the acceptor. ]
   ]
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_socket_acceptor.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_socket_acceptor.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Data Members]
 [table
   [[Name][Description]]
@@ -60448,12 +62895,12 @@
 
   [
     [[link asio.reference.basic_socket_acceptor.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_socket_acceptor.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -60967,18 +63414,34 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.ip__basic_resolver.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.ip__basic_resolver.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Protected Data Members]
 [table
   [[Name][Description]]
 
   [
     [[link asio.reference.ip__basic_resolver.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.ip__basic_resolver.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -61227,7 +63690,9 @@
 
      Construct a basic_stream_socket, opening it and binding it to the given local endpoint. 
 
-     Construct a basic_stream_socket on an existing native socket. ]
+     Construct a basic_stream_socket on an existing native socket. 
+
+     Move-construct a basic_stream_socket from another. ]
   ]
   
   [
@@ -61312,6 +63777,11 @@
   ]
   
   [
+    [[link asio.reference.basic_stream_socket.operator_eq_ [*operator=]]]
+    [Move-assign a basic_stream_socket from another. ]
+  ]
+  
+  [
     [[link asio.reference.basic_stream_socket.read_some [*read_some]]]
     [Read some data from the socket. ]
   ]
@@ -61350,6 +63820,22 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_stream_socket.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Data Members]
 [table
   [[Name][Description]]
@@ -61387,12 +63873,12 @@
 
   [
     [[link asio.reference.basic_stream_socket.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_stream_socket.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -61892,18 +64378,34 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.ip__basic_resolver.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.ip__basic_resolver.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Protected Data Members]
 [table
   [[Name][Description]]
 
   [
     [[link asio.reference.ip__basic_resolver.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.ip__basic_resolver.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -62152,7 +64654,9 @@
 
      Construct a basic_datagram_socket, opening it and binding it to the given local endpoint. 
 
-     Construct a basic_datagram_socket on an existing native socket. ]
+     Construct a basic_datagram_socket on an existing native socket. 
+
+     Move-construct a basic_datagram_socket from another. ]
   ]
   
   [
@@ -62237,6 +64741,11 @@
   ]
   
   [
+    [[link asio.reference.basic_datagram_socket.operator_eq_ [*operator=]]]
+    [Move-assign a basic_datagram_socket from another. ]
+  ]
+  
+  [
     [[link asio.reference.basic_datagram_socket.receive [*receive]]]
     [Receive some data on a connected socket. ]
   ]
@@ -62273,6 +64782,22 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_datagram_socket.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Data Members]
 [table
   [[Name][Description]]
@@ -62310,12 +64835,12 @@
 
   [
     [[link asio.reference.basic_datagram_socket.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_datagram_socket.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -63801,7 +66326,9 @@
 
      Construct a basic_datagram_socket, opening it and binding it to the given local endpoint. 
 
-     Construct a basic_datagram_socket on an existing native socket. ]
+     Construct a basic_datagram_socket on an existing native socket. 
+
+     Move-construct a basic_datagram_socket from another. ]
   ]
   
   [
@@ -63886,6 +66413,11 @@
   ]
   
   [
+    [[link asio.reference.basic_datagram_socket.operator_eq_ [*operator=]]]
+    [Move-assign a basic_datagram_socket from another. ]
+  ]
+  
+  [
     [[link asio.reference.basic_datagram_socket.receive [*receive]]]
     [Receive some data on a connected socket. ]
   ]
@@ -63922,6 +66454,22 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_datagram_socket.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Data Members]
 [table
   [[Name][Description]]
@@ -63959,12 +66507,12 @@
 
   [
     [[link asio.reference.basic_datagram_socket.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_datagram_socket.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -64282,7 +66830,9 @@
 
      Construct an acceptor opened on the given endpoint. 
 
-     Construct a basic_socket_acceptor on an existing native acceptor. ]
+     Construct a basic_socket_acceptor on an existing native acceptor. 
+
+     Move-construct a basic_socket_acceptor from another. ]
   ]
   
   [
@@ -64360,12 +66910,33 @@
   ]
   
   [
+    [[link asio.reference.basic_socket_acceptor.operator_eq_ [*operator=]]]
+    [Move-assign a basic_socket_acceptor from another. ]
+  ]
+  
+  [
     [[link asio.reference.basic_socket_acceptor.set_option [*set_option]]]
     [Set an option on the acceptor. ]
   ]
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_socket_acceptor.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_socket_acceptor.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Data Members]
 [table
   [[Name][Description]]
@@ -64403,12 +66974,12 @@
 
   [
     [[link asio.reference.basic_socket_acceptor.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_socket_acceptor.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -64947,7 +67518,9 @@
 
      Construct a basic_stream_socket, opening it and binding it to the given local endpoint. 
 
-     Construct a basic_stream_socket on an existing native socket. ]
+     Construct a basic_stream_socket on an existing native socket. 
+
+     Move-construct a basic_stream_socket from another. ]
   ]
   
   [
@@ -65032,6 +67605,11 @@
   ]
   
   [
+    [[link asio.reference.basic_stream_socket.operator_eq_ [*operator=]]]
+    [Move-assign a basic_stream_socket from another. ]
+  ]
+  
+  [
     [[link asio.reference.basic_stream_socket.read_some [*read_some]]]
     [Read some data from the socket. ]
   ]
@@ -65070,6 +67648,22 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_stream_socket.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Data Members]
 [table
   [[Name][Description]]
@@ -65107,12 +67701,12 @@
 
   [
     [[link asio.reference.basic_stream_socket.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_stream_socket.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -65968,7 +68562,9 @@
     [[link asio.reference.posix__basic_descriptor.basic_descriptor [*basic_descriptor]]]
     [Construct a basic_descriptor without opening it. 
 
-     Construct a basic_descriptor on an existing native descriptor. ]
+     Construct a basic_descriptor on an existing native descriptor. 
+
+     Move-construct a basic_descriptor from another. ]
   ]
   
   [
@@ -66028,6 +68624,11 @@
   ]
   
   [
+    [[link asio.reference.posix__basic_descriptor.operator_eq_ [*operator=]]]
+    [Move-assign a basic_descriptor from another. ]
+  ]
+  
+  [
     [[link asio.reference.posix__basic_descriptor.release [*release]]]
     [Release ownership of the native descriptor implementation. ]
   ]
@@ -66039,6 +68640,16 @@
   [[Name][Description]]
 
   [
+    [[link asio.reference.posix__basic_descriptor.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.posix__basic_descriptor.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+  [
     [[link asio.reference.posix__basic_descriptor._basic_descriptor [*~basic_descriptor]]]
     [Protected destructor to prevent deletion through this type. ]
   ]
@@ -66051,12 +68662,12 @@
 
   [
     [[link asio.reference.posix__basic_descriptor.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.posix__basic_descriptor.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -66146,7 +68757,15 @@
   ``  [''''&raquo;''' [link asio.reference.posix__basic_descriptor.basic_descriptor.overload2 more...]]``
 
 
-[section:overload1 posix::basic_descriptor::basic_descriptor (1 of 2 overloads)]
+Move-construct a [link asio.reference.posix__basic_descriptor `posix::basic_descriptor`] from another. 
+
+
+  ``[link asio.reference.posix__basic_descriptor.basic_descriptor.overload3 basic_descriptor]``(
+      basic_descriptor && other);
+  ``  [''''&raquo;''' [link asio.reference.posix__basic_descriptor.basic_descriptor.overload3 more...]]``
+
+
+[section:overload1 posix::basic_descriptor::basic_descriptor (1 of 3 overloads)]
 
 
 Construct a [link asio.reference.posix__basic_descriptor `posix::basic_descriptor`] without opening it. 
@@ -66175,7 +68794,7 @@
 
 
 
-[section:overload2 posix::basic_descriptor::basic_descriptor (2 of 2 overloads)]
+[section:overload2 posix::basic_descriptor::basic_descriptor (2 of 3 overloads)]
 
 
 Construct a [link asio.reference.posix__basic_descriptor `posix::basic_descriptor`] on an existing native descriptor. 
@@ -66216,6 +68835,45 @@
 [endsect]
 
 
+
+[section:overload3 posix::basic_descriptor::basic_descriptor (3 of 3 overloads)]
+
+
+Move-construct a [link asio.reference.posix__basic_descriptor `posix::basic_descriptor`] from another. 
+
+
+  basic_descriptor(
+      basic_descriptor && other);
+
+
+This constructor moves a descriptor from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.posix__basic_descriptor `posix::basic_descriptor`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 
@@ -66364,7 +69022,7 @@
 
 [variablelist
   
-[[asio::system_error][Thrown on failure. ]]
+[[asio::system_error][Thrown on failure. Note that, even if the function indicates an error, the underlying descriptor is closed. ]]
 
 ]
 
@@ -66393,7 +69051,7 @@
 
 [variablelist
   
-[[ec][Set to indicate what error occurred, if any. ]]
+[[ec][Set to indicate what error occurred, if any. Note that, even if the function indicates an error, the underlying descriptor is closed. ]]
 
 ]
 
@@ -66405,6 +69063,54 @@
 
 [endsect]
 
+[section:get_implementation posix::basic_descriptor::get_implementation]
+
+[indexterm2 get_implementation..posix::basic_descriptor] 
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & ``[link asio.reference.posix__basic_descriptor.get_implementation.overload1 get_implementation]``();
+  ``  [''''&raquo;''' [link asio.reference.posix__basic_descriptor.get_implementation.overload1 more...]]``
+
+  const implementation_type & ``[link asio.reference.posix__basic_descriptor.get_implementation.overload2 get_implementation]``() const;
+  ``  [''''&raquo;''' [link asio.reference.posix__basic_descriptor.get_implementation.overload2 more...]]``
+
+
+[section:overload1 posix::basic_descriptor::get_implementation (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & get_implementation();
+
+
+
+[endsect]
+
+
+
+[section:overload2 posix::basic_descriptor::get_implementation (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  const implementation_type & get_implementation() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:get_io_service posix::basic_descriptor::get_io_service]
 
@@ -66431,6 +69137,54 @@
 [endsect]
 
 
+[section:get_service posix::basic_descriptor::get_service]
+
+[indexterm2 get_service..posix::basic_descriptor] 
+Get the service associated with the I/O object. 
+
+
+  service_type & ``[link asio.reference.posix__basic_descriptor.get_service.overload1 get_service]``();
+  ``  [''''&raquo;''' [link asio.reference.posix__basic_descriptor.get_service.overload1 more...]]``
+
+  const service_type & ``[link asio.reference.posix__basic_descriptor.get_service.overload2 get_service]``() const;
+  ``  [''''&raquo;''' [link asio.reference.posix__basic_descriptor.get_service.overload2 more...]]``
+
+
+[section:overload1 posix::basic_descriptor::get_service (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  service_type & get_service();
+
+
+
+[endsect]
+
+
+
+[section:overload2 posix::basic_descriptor::get_service (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  const service_type & get_service() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:implementation posix::basic_descriptor::implementation]
 
@@ -66438,7 +69192,7 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 implementation..posix::basic_descriptor] 
-The underlying implementation of the I/O object. 
+(Deprecated: Use `get_implementation()`.) The underlying implementation of the I/O object. 
 
 
   implementation_type implementation;
@@ -66759,7 +69513,9 @@
     [[link asio.reference.posix__basic_descriptor.basic_descriptor [*basic_descriptor]]]
     [Construct a basic_descriptor without opening it. 
 
-     Construct a basic_descriptor on an existing native descriptor. ]
+     Construct a basic_descriptor on an existing native descriptor. 
+
+     Move-construct a basic_descriptor from another. ]
   ]
   
   [
@@ -66819,6 +69575,11 @@
   ]
   
   [
+    [[link asio.reference.posix__basic_descriptor.operator_eq_ [*operator=]]]
+    [Move-assign a basic_descriptor from another. ]
+  ]
+  
+  [
     [[link asio.reference.posix__basic_descriptor.release [*release]]]
     [Release ownership of the native descriptor implementation. ]
   ]
@@ -66830,6 +69591,16 @@
   [[Name][Description]]
 
   [
+    [[link asio.reference.posix__basic_descriptor.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.posix__basic_descriptor.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+  [
     [[link asio.reference.posix__basic_descriptor._basic_descriptor [*~basic_descriptor]]]
     [Protected destructor to prevent deletion through this type. ]
   ]
@@ -66842,12 +69613,12 @@
 
   [
     [[link asio.reference.posix__basic_descriptor.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.posix__basic_descriptor.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -67241,6 +70012,45 @@
 
 
 
+[section:operator_eq_ posix::basic_descriptor::operator=]
+
+[indexterm2 operator=..posix::basic_descriptor] 
+Move-assign a [link asio.reference.posix__basic_descriptor `posix::basic_descriptor`] from another. 
+
+
+  basic_descriptor & operator=(
+      basic_descriptor && other);
+
+
+This assignment operator moves a descriptor from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.posix__basic_descriptor `posix::basic_descriptor`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
+
 [section:release posix::basic_descriptor::release]
 
 [indexterm2 release..posix::basic_descriptor] 
@@ -67265,13 +70075,20 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 service..posix::basic_descriptor] 
-The service associated with the I/O object. 
+(Deprecated: Use `get_service()`.) The service associated with the I/O object. 
 
 
   service_type & service;
 
 
 
+[heading Remarks]
+      
+Available only for services that do not support movability. 
+
+
+
+
 [endsect]
 
 
@@ -67406,7 +70223,9 @@
     [[link asio.reference.posix__basic_stream_descriptor.basic_stream_descriptor [*basic_stream_descriptor]]]
     [Construct a basic_stream_descriptor without opening it. 
 
-     Construct a basic_stream_descriptor on an existing native descriptor. ]
+     Construct a basic_stream_descriptor on an existing native descriptor. 
+
+     Move-construct a basic_stream_descriptor from another. ]
   ]
   
   [
@@ -67466,6 +70285,11 @@
   ]
   
   [
+    [[link asio.reference.posix__basic_stream_descriptor.operator_eq_ [*operator=]]]
+    [Move-assign a basic_stream_descriptor from another. ]
+  ]
+  
+  [
     [[link asio.reference.posix__basic_stream_descriptor.read_some [*read_some]]]
     [Read some data from the descriptor. ]
   ]
@@ -67482,18 +70306,34 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.posix__basic_stream_descriptor.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.posix__basic_stream_descriptor.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Protected Data Members]
 [table
   [[Name][Description]]
 
   [
     [[link asio.reference.posix__basic_stream_descriptor.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.posix__basic_stream_descriptor.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -67704,7 +70544,15 @@
   ``  [''''&raquo;''' [link asio.reference.posix__basic_stream_descriptor.basic_stream_descriptor.overload2 more...]]``
 
 
-[section:overload1 posix::basic_stream_descriptor::basic_stream_descriptor (1 of 2 overloads)]
+Move-construct a [link asio.reference.posix__basic_stream_descriptor `posix::basic_stream_descriptor`] from another. 
+
+
+  ``[link asio.reference.posix__basic_stream_descriptor.basic_stream_descriptor.overload3 basic_stream_descriptor]``(
+      basic_stream_descriptor && other);
+  ``  [''''&raquo;''' [link asio.reference.posix__basic_stream_descriptor.basic_stream_descriptor.overload3 more...]]``
+
+
+[section:overload1 posix::basic_stream_descriptor::basic_stream_descriptor (1 of 3 overloads)]
 
 
 Construct a [link asio.reference.posix__basic_stream_descriptor `posix::basic_stream_descriptor`] without opening it. 
@@ -67733,7 +70581,7 @@
 
 
 
-[section:overload2 posix::basic_stream_descriptor::basic_stream_descriptor (2 of 2 overloads)]
+[section:overload2 posix::basic_stream_descriptor::basic_stream_descriptor (2 of 3 overloads)]
 
 
 Construct a [link asio.reference.posix__basic_stream_descriptor `posix::basic_stream_descriptor`] on an existing native descriptor. 
@@ -67774,6 +70622,45 @@
 [endsect]
 
 
+
+[section:overload3 posix::basic_stream_descriptor::basic_stream_descriptor (3 of 3 overloads)]
+
+
+Move-construct a [link asio.reference.posix__basic_stream_descriptor `posix::basic_stream_descriptor`] from another. 
+
+
+  basic_stream_descriptor(
+      basic_stream_descriptor && other);
+
+
+This constructor moves a stream descriptor from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.posix__basic_stream_descriptor `posix::basic_stream_descriptor`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 
@@ -67931,7 +70818,7 @@
 
 [variablelist
   
-[[asio::system_error][Thrown on failure. ]]
+[[asio::system_error][Thrown on failure. Note that, even if the function indicates an error, the underlying descriptor is closed. ]]
 
 ]
 
@@ -67963,7 +70850,7 @@
 
 [variablelist
   
-[[ec][Set to indicate what error occurred, if any. ]]
+[[ec][Set to indicate what error occurred, if any. Note that, even if the function indicates an error, the underlying descriptor is closed. ]]
 
 ]
 
@@ -67975,6 +70862,54 @@
 
 [endsect]
 
+[section:get_implementation posix::basic_stream_descriptor::get_implementation]
+
+[indexterm2 get_implementation..posix::basic_stream_descriptor] 
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & ``[link asio.reference.posix__basic_stream_descriptor.get_implementation.overload1 get_implementation]``();
+  ``  [''''&raquo;''' [link asio.reference.posix__basic_stream_descriptor.get_implementation.overload1 more...]]``
+
+  const implementation_type & ``[link asio.reference.posix__basic_stream_descriptor.get_implementation.overload2 get_implementation]``() const;
+  ``  [''''&raquo;''' [link asio.reference.posix__basic_stream_descriptor.get_implementation.overload2 more...]]``
+
+
+[section:overload1 posix::basic_stream_descriptor::get_implementation (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & get_implementation();
+
+
+
+[endsect]
+
+
+
+[section:overload2 posix::basic_stream_descriptor::get_implementation (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  const implementation_type & get_implementation() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:get_io_service posix::basic_stream_descriptor::get_io_service]
 
@@ -68001,6 +70936,54 @@
 [endsect]
 
 
+[section:get_service posix::basic_stream_descriptor::get_service]
+
+[indexterm2 get_service..posix::basic_stream_descriptor] 
+Get the service associated with the I/O object. 
+
+
+  service_type & ``[link asio.reference.posix__basic_stream_descriptor.get_service.overload1 get_service]``();
+  ``  [''''&raquo;''' [link asio.reference.posix__basic_stream_descriptor.get_service.overload1 more...]]``
+
+  const service_type & ``[link asio.reference.posix__basic_stream_descriptor.get_service.overload2 get_service]``() const;
+  ``  [''''&raquo;''' [link asio.reference.posix__basic_stream_descriptor.get_service.overload2 more...]]``
+
+
+[section:overload1 posix::basic_stream_descriptor::get_service (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  service_type & get_service();
+
+
+
+[endsect]
+
+
+
+[section:overload2 posix::basic_stream_descriptor::get_service (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  const service_type & get_service() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:implementation posix::basic_stream_descriptor::implementation]
 
@@ -68008,7 +70991,7 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 implementation..posix::basic_stream_descriptor] 
-The underlying implementation of the I/O object. 
+(Deprecated: Use `get_implementation()`.) The underlying implementation of the I/O object. 
 
 
   implementation_type implementation;
@@ -68343,7 +71326,9 @@
     [[link asio.reference.posix__basic_descriptor.basic_descriptor [*basic_descriptor]]]
     [Construct a basic_descriptor without opening it. 
 
-     Construct a basic_descriptor on an existing native descriptor. ]
+     Construct a basic_descriptor on an existing native descriptor. 
+
+     Move-construct a basic_descriptor from another. ]
   ]
   
   [
@@ -68403,6 +71388,11 @@
   ]
   
   [
+    [[link asio.reference.posix__basic_descriptor.operator_eq_ [*operator=]]]
+    [Move-assign a basic_descriptor from another. ]
+  ]
+  
+  [
     [[link asio.reference.posix__basic_descriptor.release [*release]]]
     [Release ownership of the native descriptor implementation. ]
   ]
@@ -68414,6 +71404,16 @@
   [[Name][Description]]
 
   [
+    [[link asio.reference.posix__basic_descriptor.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.posix__basic_descriptor.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+  [
     [[link asio.reference.posix__basic_descriptor._basic_descriptor [*~basic_descriptor]]]
     [Protected destructor to prevent deletion through this type. ]
   ]
@@ -68426,12 +71426,12 @@
 
   [
     [[link asio.reference.posix__basic_descriptor.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.posix__basic_descriptor.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -68848,6 +71848,45 @@
 [endsect]
 
 
+
+[section:operator_eq_ posix::basic_stream_descriptor::operator=]
+
+[indexterm2 operator=..posix::basic_stream_descriptor] 
+Move-assign a [link asio.reference.posix__basic_stream_descriptor `posix::basic_stream_descriptor`] from another. 
+
+
+  basic_stream_descriptor & operator=(
+      basic_stream_descriptor && other);
+
+
+This assignment operator moves a stream descriptor from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.posix__basic_stream_descriptor `posix::basic_stream_descriptor`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
 [section:read_some posix::basic_stream_descriptor::read_some]
 
 [indexterm2 read_some..posix::basic_stream_descriptor] 
@@ -69002,13 +72041,20 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 service..posix::basic_stream_descriptor] 
-The service associated with the I/O object. 
+(Deprecated: Use `get_service()`.) The service associated with the I/O object. 
 
 
   service_type & service;
 
 
 
+[heading Remarks]
+      
+Available only for services that do not support movability. 
+
+
+
+
 [endsect]
 
 
@@ -69395,7 +72441,9 @@
     [[link asio.reference.posix__basic_stream_descriptor.basic_stream_descriptor [*basic_stream_descriptor]]]
     [Construct a basic_stream_descriptor without opening it. 
 
-     Construct a basic_stream_descriptor on an existing native descriptor. ]
+     Construct a basic_stream_descriptor on an existing native descriptor. 
+
+     Move-construct a basic_stream_descriptor from another. ]
   ]
   
   [
@@ -69455,6 +72503,11 @@
   ]
   
   [
+    [[link asio.reference.posix__basic_stream_descriptor.operator_eq_ [*operator=]]]
+    [Move-assign a basic_stream_descriptor from another. ]
+  ]
+  
+  [
     [[link asio.reference.posix__basic_stream_descriptor.read_some [*read_some]]]
     [Read some data from the descriptor. ]
   ]
@@ -69471,18 +72524,34 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.posix__basic_stream_descriptor.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.posix__basic_stream_descriptor.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Protected Data Members]
 [table
   [[Name][Description]]
 
   [
     [[link asio.reference.posix__basic_stream_descriptor.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.posix__basic_stream_descriptor.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -69602,6 +72671,16 @@
   ]
   
   [
+    [[link asio.reference.posix__stream_descriptor_service.move_assign [*move_assign]]]
+    [Move-assign from another stream descriptor implementation. ]
+  ]
+  
+  [
+    [[link asio.reference.posix__stream_descriptor_service.move_construct [*move_construct]]]
+    [Move-construct a new stream descriptor implementation. ]
+  ]
+  
+  [
     [[link asio.reference.posix__stream_descriptor_service.native [*native]]]
     [(Deprecated: Use native_handle().) Get the native descriptor implementation. ]
   ]
@@ -69636,11 +72715,6 @@
   ]
   
   [
-    [[link asio.reference.posix__stream_descriptor_service.shutdown_service [*shutdown_service]]]
-    [Destroy all user-defined handler objects owned by the service. ]
-  ]
-  
-  [
     [[link asio.reference.posix__stream_descriptor_service.stream_descriptor_service [*stream_descriptor_service]]]
     [Construct a new stream descriptor service for the specified io_service. ]
   ]
@@ -69875,6 +72949,39 @@
 
 
 
+[section:move_assign posix::stream_descriptor_service::move_assign]
+
+[indexterm2 move_assign..posix::stream_descriptor_service] 
+Move-assign from another stream descriptor implementation. 
+
+
+  void move_assign(
+      implementation_type & impl,
+      stream_descriptor_service & other_service,
+      implementation_type & other_impl);
+
+
+
+[endsect]
+
+
+
+[section:move_construct posix::stream_descriptor_service::move_construct]
+
+[indexterm2 move_construct..posix::stream_descriptor_service] 
+Move-construct a new stream descriptor implementation. 
+
+
+  void move_construct(
+      implementation_type & impl,
+      implementation_type & other_impl);
+
+
+
+[endsect]
+
+
+
 [section:native posix::stream_descriptor_service::native]
 
 [indexterm2 native..posix::stream_descriptor_service] 
@@ -70089,20 +73196,6 @@
 
 
 
-[section:shutdown_service posix::stream_descriptor_service::shutdown_service]
-
-[indexterm2 shutdown_service..posix::stream_descriptor_service] 
-Destroy all user-defined handler objects owned by the service. 
-
-
-  virtual void shutdown_service();
-
-
-
-[endsect]
-
-
-
 [section:stream_descriptor_service posix::stream_descriptor_service::stream_descriptor_service]
 
 [indexterm2 stream_descriptor_service..posix::stream_descriptor_service] 
@@ -70292,6 +73385,16 @@
   ]
   
   [
+    [[link asio.reference.raw_socket_service.move_assign [*move_assign]]]
+    [Move-assign from another raw socket implementation. ]
+  ]
+  
+  [
+    [[link asio.reference.raw_socket_service.move_construct [*move_construct]]]
+    [Move-construct a new raw socket implementation. ]
+  ]
+  
+  [
     [[link asio.reference.raw_socket_service.native [*native]]]
     [(Deprecated: Use native_handle().) Get the native socket implementation. ]
   ]
@@ -70360,11 +73463,6 @@
     [Disable sends or receives on the socket. ]
   ]
   
-  [
-    [[link asio.reference.raw_socket_service.shutdown_service [*shutdown_service]]]
-    [Destroy all user-defined handler objects owned by the service. ]
-  ]
-  
 ]
 
 [heading Data Members]
@@ -70776,6 +73874,39 @@
 
 
 
+[section:move_assign raw_socket_service::move_assign]
+
+[indexterm2 move_assign..raw_socket_service] 
+Move-assign from another raw socket implementation. 
+
+
+  void move_assign(
+      implementation_type & impl,
+      raw_socket_service & other_service,
+      implementation_type & other_impl);
+
+
+
+[endsect]
+
+
+
+[section:move_construct raw_socket_service::move_construct]
+
+[indexterm2 move_construct..raw_socket_service] 
+Move-construct a new raw socket implementation. 
+
+
+  void move_construct(
+      implementation_type & impl,
+      implementation_type & other_impl);
+
+
+
+[endsect]
+
+
+
 [section:native raw_socket_service::native]
 
 [indexterm2 native..raw_socket_service] 
@@ -71141,20 +74272,6 @@
 
 
 
-[section:shutdown_service raw_socket_service::shutdown_service]
-
-[indexterm2 shutdown_service..raw_socket_service] 
-Destroy all user-defined handler objects owned by the service. 
-
-
-  virtual void shutdown_service();
-
-
-
-[endsect]
-
-
-
 [endsect]
 
 [section:read read]
@@ -73391,6 +76508,16 @@
   ]
   
   [
+    [[link asio.reference.seq_packet_socket_service.move_assign [*move_assign]]]
+    [Move-assign from another sequenced packet socket implementation. ]
+  ]
+  
+  [
+    [[link asio.reference.seq_packet_socket_service.move_construct [*move_construct]]]
+    [Move-construct a new sequenced packet socket implementation. ]
+  ]
+  
+  [
     [[link asio.reference.seq_packet_socket_service.native [*native]]]
     [(Deprecated: Use native_handle().) Get the native socket implementation. ]
   ]
@@ -73449,11 +76576,6 @@
     [Disable sends or receives on the socket. ]
   ]
   
-  [
-    [[link asio.reference.seq_packet_socket_service.shutdown_service [*shutdown_service]]]
-    [Destroy all user-defined handler objects owned by the service. ]
-  ]
-  
 ]
 
 [heading Data Members]
@@ -73824,6 +76946,39 @@
 
 
 
+[section:move_assign seq_packet_socket_service::move_assign]
+
+[indexterm2 move_assign..seq_packet_socket_service] 
+Move-assign from another sequenced packet socket implementation. 
+
+
+  void move_assign(
+      implementation_type & impl,
+      seq_packet_socket_service & other_service,
+      implementation_type & other_impl);
+
+
+
+[endsect]
+
+
+
+[section:move_construct seq_packet_socket_service::move_construct]
+
+[indexterm2 move_construct..seq_packet_socket_service] 
+Move-construct a new sequenced packet socket implementation. 
+
+
+  void move_construct(
+      implementation_type & impl,
+      implementation_type & other_impl);
+
+
+
+[endsect]
+
+
+
 [section:native seq_packet_socket_service::native]
 
 [indexterm2 native..seq_packet_socket_service] 
@@ -74150,20 +77305,6 @@
 
 
 
-[section:shutdown_service seq_packet_socket_service::shutdown_service]
-
-[indexterm2 shutdown_service..seq_packet_socket_service] 
-Destroy all user-defined handler objects owned by the service. 
-
-
-  virtual void shutdown_service();
-
-
-
-[endsect]
-
-
-
 [endsect]
 
 
@@ -74242,7 +77383,9 @@
 
      Construct and open a basic_serial_port. 
 
-     Construct a basic_serial_port on an existing native serial port. ]
+     Construct a basic_serial_port on an existing native serial port. 
+
+     Move-construct a basic_serial_port from another. ]
   ]
   
   [
@@ -74293,6 +77436,11 @@
   ]
   
   [
+    [[link asio.reference.basic_serial_port.operator_eq_ [*operator=]]]
+    [Move-assign a basic_serial_port from another. ]
+  ]
+  
+  [
     [[link asio.reference.basic_serial_port.read_some [*read_some]]]
     [Read some data from the serial port. ]
   ]
@@ -74314,18 +77462,34 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_serial_port.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_serial_port.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Protected Data Members]
 [table
   [[Name][Description]]
 
   [
     [[link asio.reference.basic_serial_port.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_serial_port.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -75170,6 +78334,16 @@
   ]
   
   [
+    [[link asio.reference.serial_port_service.move_assign [*move_assign]]]
+    [Move-assign from another serial port implementation. ]
+  ]
+  
+  [
+    [[link asio.reference.serial_port_service.move_construct [*move_construct]]]
+    [Move-construct a new serial port implementation. ]
+  ]
+  
+  [
     [[link asio.reference.serial_port_service.native [*native]]]
     [(Deprecated: Use native_handle().) Get the native handle implementation. ]
   ]
@@ -75205,11 +78379,6 @@
   ]
   
   [
-    [[link asio.reference.serial_port_service.shutdown_service [*shutdown_service]]]
-    [Destroy all user-defined handler objects owned by the service. ]
-  ]
-  
-  [
     [[link asio.reference.serial_port_service.write_some [*write_some]]]
     [Write the given data to the stream. ]
   ]
@@ -75439,6 +78608,39 @@
 
 
 
+[section:move_assign serial_port_service::move_assign]
+
+[indexterm2 move_assign..serial_port_service] 
+Move-assign from another serial port implementation. 
+
+
+  void move_assign(
+      implementation_type & impl,
+      serial_port_service & other_service,
+      implementation_type & other_impl);
+
+
+
+[endsect]
+
+
+
+[section:move_construct serial_port_service::move_construct]
+
+[indexterm2 move_construct..serial_port_service] 
+Move-construct a new serial port implementation. 
+
+
+  void move_construct(
+      implementation_type & impl,
+      implementation_type & other_impl);
+
+
+
+[endsect]
+
+
+
 [section:native serial_port_service::native]
 
 [indexterm2 native..serial_port_service] 
@@ -75597,20 +78799,6 @@
 
 
 
-[section:shutdown_service serial_port_service::shutdown_service]
-
-[indexterm2 shutdown_service..serial_port_service] 
-Destroy all user-defined handler objects owned by the service. 
-
-
-  virtual void shutdown_service();
-
-
-
-[endsect]
-
-
-
 [section:write_some serial_port_service::write_some]
 
 [indexterm2 write_some..serial_port_service] 
@@ -75750,18 +78938,34 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_signal_set.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_signal_set.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Protected Data Members]
 [table
   [[Name][Description]]
 
   [
     [[link asio.reference.basic_signal_set.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.basic_signal_set.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -75907,11 +79111,6 @@
   ]
   
   [
-    [[link asio.reference.signal_set_service.shutdown_service [*shutdown_service]]]
-    [Destroy all user-defined handler objects owned by the service. ]
-  ]
-  
-  [
     [[link asio.reference.signal_set_service.signal_set_service [*signal_set_service]]]
     [Construct a new signal set service for the specified io_service. ]
   ]
@@ -76100,20 +79299,6 @@
 
 
 
-[section:shutdown_service signal_set_service::shutdown_service]
-
-[indexterm2 shutdown_service..signal_set_service] 
-Destroy all user-defined handler objects owned by the service. 
-
-
-  virtual void shutdown_service();
-
-
-
-[endsect]
-
-
-
 [section:signal_set_service signal_set_service::signal_set_service]
 
 [indexterm2 signal_set_service..signal_set_service] 
@@ -76259,6 +79444,16 @@
   ]
   
   [
+    [[link asio.reference.socket_acceptor_service.move_assign [*move_assign]]]
+    [Move-assign from another socket acceptor implementation. ]
+  ]
+  
+  [
+    [[link asio.reference.socket_acceptor_service.move_construct [*move_construct]]]
+    [Move-construct a new socket acceptor implementation. ]
+  ]
+  
+  [
     [[link asio.reference.socket_acceptor_service.native [*native]]]
     [(Deprecated: Use native_handle().) Get the native acceptor implementation. ]
   ]
@@ -76293,11 +79488,6 @@
   ]
   
   [
-    [[link asio.reference.socket_acceptor_service.shutdown_service [*shutdown_service]]]
-    [Destroy all user-defined handler objects owned by the service. ]
-  ]
-  
-  [
     [[link asio.reference.socket_acceptor_service.socket_acceptor_service [*socket_acceptor_service]]]
     [Construct a new socket acceptor service for the specified io_service. ]
   ]
@@ -76619,6 +79809,39 @@
 
 
 
+[section:move_assign socket_acceptor_service::move_assign]
+
+[indexterm2 move_assign..socket_acceptor_service] 
+Move-assign from another socket acceptor implementation. 
+
+
+  void move_assign(
+      implementation_type & impl,
+      socket_acceptor_service & other_service,
+      implementation_type & other_impl);
+
+
+
+[endsect]
+
+
+
+[section:move_construct socket_acceptor_service::move_construct]
+
+[indexterm2 move_construct..socket_acceptor_service] 
+Move-construct a new socket acceptor implementation. 
+
+
+  void move_construct(
+      implementation_type & impl,
+      implementation_type & other_impl);
+
+
+
+[endsect]
+
+
+
 [section:native socket_acceptor_service::native]
 
 [indexterm2 native..socket_acceptor_service] 
@@ -76856,20 +80079,6 @@
 
 
 
-[section:shutdown_service socket_acceptor_service::shutdown_service]
-
-[indexterm2 shutdown_service..socket_acceptor_service] 
-Destroy all user-defined handler objects owned by the service. 
-
-
-  virtual void shutdown_service();
-
-
-
-[endsect]
-
-
-
 [section:socket_acceptor_service socket_acceptor_service::socket_acceptor_service]
 
 [indexterm2 socket_acceptor_service..socket_acceptor_service] 
@@ -80155,11 +83364,6 @@
   ]
   
   [
-    [[link asio.reference.ssl__context_service.shutdown_service [*shutdown_service]]]
-    [Destroy all user-defined handler objects owned by the service. ]
-  ]
-  
-  [
     [[link asio.reference.ssl__context_service.use_certificate_chain_file [*use_certificate_chain_file]]]
     [Use a certificate chain from a file. ]
   ]
@@ -80403,20 +83607,6 @@
 
 
 
-[section:shutdown_service ssl::context_service::shutdown_service]
-
-[indexterm2 shutdown_service..ssl::context_service] 
-Destroy all user-defined handler objects owned by the service. 
-
-
-  virtual void shutdown_service();
-
-
-
-[endsect]
-
-
-
 [section:use_certificate_chain_file ssl::context_service::use_certificate_chain_file]
 
 [indexterm2 use_certificate_chain_file..ssl::context_service] 
@@ -81905,11 +85095,6 @@
   ]
   
   [
-    [[link asio.reference.ssl__stream_service.shutdown_service [*shutdown_service]]]
-    [Destroy all user-defined handler objects owned by the service. ]
-  ]
-  
-  [
     [[link asio.reference.ssl__stream_service.stream_service [*stream_service]]]
     [Construct a new stream service for the specified io_service. ]
   ]
@@ -82228,20 +85413,6 @@
 
 
 
-[section:shutdown_service ssl::stream_service::shutdown_service]
-
-[indexterm2 shutdown_service..ssl::stream_service] 
-Destroy all user-defined handler objects owned by the service. 
-
-
-  virtual void shutdown_service();
-
-
-
-[endsect]
-
-
-
 [section:stream_service ssl::stream_service::stream_service]
 
 [indexterm2 stream_service..ssl::stream_service] 
@@ -82536,6 +85707,16 @@
   ]
   
   [
+    [[link asio.reference.stream_socket_service.move_assign [*move_assign]]]
+    [Move-assign from another stream socket implementation. ]
+  ]
+  
+  [
+    [[link asio.reference.stream_socket_service.move_construct [*move_construct]]]
+    [Move-construct a new stream socket implementation. ]
+  ]
+  
+  [
     [[link asio.reference.stream_socket_service.native [*native]]]
     [(Deprecated: Use native_handle().) Get the native socket implementation. ]
   ]
@@ -82590,11 +85771,6 @@
   ]
   
   [
-    [[link asio.reference.stream_socket_service.shutdown_service [*shutdown_service]]]
-    [Destroy all user-defined handler objects owned by the service. ]
-  ]
-  
-  [
     [[link asio.reference.stream_socket_service.stream_socket_service [*stream_socket_service]]]
     [Construct a new stream socket service for the specified io_service. ]
   ]
@@ -82968,6 +86144,39 @@
 
 
 
+[section:move_assign stream_socket_service::move_assign]
+
+[indexterm2 move_assign..stream_socket_service] 
+Move-assign from another stream socket implementation. 
+
+
+  void move_assign(
+      implementation_type & impl,
+      stream_socket_service & other_service,
+      implementation_type & other_impl);
+
+
+
+[endsect]
+
+
+
+[section:move_construct stream_socket_service::move_construct]
+
+[indexterm2 move_construct..stream_socket_service] 
+Move-construct a new stream socket implementation. 
+
+
+  void move_construct(
+      implementation_type & impl,
+      implementation_type & other_impl);
+
+
+
+[endsect]
+
+
+
 [section:native stream_socket_service::native]
 
 [indexterm2 native..stream_socket_service] 
@@ -83278,20 +86487,6 @@
 
 
 
-[section:shutdown_service stream_socket_service::shutdown_service]
-
-[indexterm2 shutdown_service..stream_socket_service] 
-Destroy all user-defined handler objects owned by the service. 
-
-
-  virtual void shutdown_service();
-
-
-
-[endsect]
-
-
-
 [section:stream_socket_service stream_socket_service::stream_socket_service]
 
 [indexterm2 stream_socket_service..stream_socket_service] 
@@ -84246,7 +87441,9 @@
     [[link asio.reference.windows__basic_handle.basic_handle [*basic_handle]]]
     [Construct a basic_handle without opening it. 
 
-     Construct a basic_handle on an existing native handle. ]
+     Construct a basic_handle on an existing native handle. 
+
+     Move-construct a basic_handle from another. ]
   ]
   
   [
@@ -84286,6 +87483,11 @@
     [Get the native handle representation. ]
   ]
   
+  [
+    [[link asio.reference.windows__basic_handle.operator_eq_ [*operator=]]]
+    [Move-assign a basic_handle from another. ]
+  ]
+  
 ]
 
 [heading Protected Member Functions]
@@ -84293,6 +87495,16 @@
   [[Name][Description]]
 
   [
+    [[link asio.reference.windows__basic_handle.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.windows__basic_handle.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+  [
     [[link asio.reference.windows__basic_handle._basic_handle [*~basic_handle]]]
     [Protected destructor to prevent deletion through this type. ]
   ]
@@ -84305,12 +87517,12 @@
 
   [
     [[link asio.reference.windows__basic_handle.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.windows__basic_handle.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -84400,7 +87612,15 @@
   ``  [''''&raquo;''' [link asio.reference.windows__basic_handle.basic_handle.overload2 more...]]``
 
 
-[section:overload1 windows::basic_handle::basic_handle (1 of 2 overloads)]
+Move-construct a [link asio.reference.windows__basic_handle `windows::basic_handle`] from another. 
+
+
+  ``[link asio.reference.windows__basic_handle.basic_handle.overload3 basic_handle]``(
+      basic_handle && other);
+  ``  [''''&raquo;''' [link asio.reference.windows__basic_handle.basic_handle.overload3 more...]]``
+
+
+[section:overload1 windows::basic_handle::basic_handle (1 of 3 overloads)]
 
 
 Construct a [link asio.reference.windows__basic_handle `windows::basic_handle`] without opening it. 
@@ -84429,7 +87649,7 @@
 
 
 
-[section:overload2 windows::basic_handle::basic_handle (2 of 2 overloads)]
+[section:overload2 windows::basic_handle::basic_handle (2 of 3 overloads)]
 
 
 Construct a [link asio.reference.windows__basic_handle `windows::basic_handle`] on an existing native handle. 
@@ -84470,6 +87690,45 @@
 [endsect]
 
 
+
+[section:overload3 windows::basic_handle::basic_handle (3 of 3 overloads)]
+
+
+Move-construct a [link asio.reference.windows__basic_handle `windows::basic_handle`] from another. 
+
+
+  basic_handle(
+      basic_handle && other);
+
+
+This constructor moves a handle from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.windows__basic_handle `windows::basic_handle`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 [section:cancel windows::basic_handle::cancel]
@@ -84616,6 +87875,54 @@
 
 [endsect]
 
+[section:get_implementation windows::basic_handle::get_implementation]
+
+[indexterm2 get_implementation..windows::basic_handle] 
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & ``[link asio.reference.windows__basic_handle.get_implementation.overload1 get_implementation]``();
+  ``  [''''&raquo;''' [link asio.reference.windows__basic_handle.get_implementation.overload1 more...]]``
+
+  const implementation_type & ``[link asio.reference.windows__basic_handle.get_implementation.overload2 get_implementation]``() const;
+  ``  [''''&raquo;''' [link asio.reference.windows__basic_handle.get_implementation.overload2 more...]]``
+
+
+[section:overload1 windows::basic_handle::get_implementation (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & get_implementation();
+
+
+
+[endsect]
+
+
+
+[section:overload2 windows::basic_handle::get_implementation (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  const implementation_type & get_implementation() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:get_io_service windows::basic_handle::get_io_service]
 
@@ -84642,6 +87949,54 @@
 [endsect]
 
 
+[section:get_service windows::basic_handle::get_service]
+
+[indexterm2 get_service..windows::basic_handle] 
+Get the service associated with the I/O object. 
+
+
+  service_type & ``[link asio.reference.windows__basic_handle.get_service.overload1 get_service]``();
+  ``  [''''&raquo;''' [link asio.reference.windows__basic_handle.get_service.overload1 more...]]``
+
+  const service_type & ``[link asio.reference.windows__basic_handle.get_service.overload2 get_service]``() const;
+  ``  [''''&raquo;''' [link asio.reference.windows__basic_handle.get_service.overload2 more...]]``
+
+
+[section:overload1 windows::basic_handle::get_service (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  service_type & get_service();
+
+
+
+[endsect]
+
+
+
+[section:overload2 windows::basic_handle::get_service (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  const service_type & get_service() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:implementation windows::basic_handle::implementation]
 
@@ -84649,7 +88004,7 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 implementation..windows::basic_handle] 
-The underlying implementation of the I/O object. 
+(Deprecated: Use `get_implementation()`.) The underlying implementation of the I/O object. 
 
 
   implementation_type implementation;
@@ -84825,7 +88180,9 @@
     [[link asio.reference.windows__basic_handle.basic_handle [*basic_handle]]]
     [Construct a basic_handle without opening it. 
 
-     Construct a basic_handle on an existing native handle. ]
+     Construct a basic_handle on an existing native handle. 
+
+     Move-construct a basic_handle from another. ]
   ]
   
   [
@@ -84865,6 +88222,11 @@
     [Get the native handle representation. ]
   ]
   
+  [
+    [[link asio.reference.windows__basic_handle.operator_eq_ [*operator=]]]
+    [Move-assign a basic_handle from another. ]
+  ]
+  
 ]
 
 [heading Protected Member Functions]
@@ -84872,6 +88234,16 @@
   [[Name][Description]]
 
   [
+    [[link asio.reference.windows__basic_handle.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.windows__basic_handle.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+  [
     [[link asio.reference.windows__basic_handle._basic_handle [*~basic_handle]]]
     [Protected destructor to prevent deletion through this type. ]
   ]
@@ -84884,12 +88256,12 @@
 
   [
     [[link asio.reference.windows__basic_handle.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.windows__basic_handle.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -84991,19 +88363,65 @@
 
 
 
+[section:operator_eq_ windows::basic_handle::operator=]
+
+[indexterm2 operator=..windows::basic_handle] 
+Move-assign a [link asio.reference.windows__basic_handle `windows::basic_handle`] from another. 
+
+
+  basic_handle & operator=(
+      basic_handle && other);
+
+
+This assignment operator moves a handle from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.windows__basic_handle `windows::basic_handle`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
+
 [section:service windows::basic_handle::service]
 
 
 ['Inherited from basic_io_object.]
 
 [indexterm2 service..windows::basic_handle] 
-The service associated with the I/O object. 
+(Deprecated: Use `get_service()`.) The service associated with the I/O object. 
 
 
   service_type & service;
 
 
 
+[heading Remarks]
+      
+Available only for services that do not support movability. 
+
+
+
+
 [endsect]
 
 
@@ -85124,7 +88542,9 @@
     [[link asio.reference.windows__basic_random_access_handle.basic_random_access_handle [*basic_random_access_handle]]]
     [Construct a basic_random_access_handle without opening it. 
 
-     Construct a basic_random_access_handle on an existing native handle. ]
+     Construct a basic_random_access_handle on an existing native handle. 
+
+     Move-construct a basic_random_access_handle from another. ]
   ]
   
   [
@@ -85165,6 +88585,11 @@
   ]
   
   [
+    [[link asio.reference.windows__basic_random_access_handle.operator_eq_ [*operator=]]]
+    [Move-assign a basic_random_access_handle from another. ]
+  ]
+  
+  [
     [[link asio.reference.windows__basic_random_access_handle.read_some_at [*read_some_at]]]
     [Read some data from the handle at the specified offset. ]
   ]
@@ -85176,18 +88601,34 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.windows__basic_random_access_handle.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.windows__basic_random_access_handle.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Protected Data Members]
 [table
   [[Name][Description]]
 
   [
     [[link asio.reference.windows__basic_random_access_handle.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.windows__basic_random_access_handle.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -85403,7 +88844,15 @@
   ``  [''''&raquo;''' [link asio.reference.windows__basic_random_access_handle.basic_random_access_handle.overload2 more...]]``
 
 
-[section:overload1 windows::basic_random_access_handle::basic_random_access_handle (1 of 2 overloads)]
+Move-construct a [link asio.reference.windows__basic_random_access_handle `windows::basic_random_access_handle`] from another. 
+
+
+  ``[link asio.reference.windows__basic_random_access_handle.basic_random_access_handle.overload3 basic_random_access_handle]``(
+      basic_random_access_handle && other);
+  ``  [''''&raquo;''' [link asio.reference.windows__basic_random_access_handle.basic_random_access_handle.overload3 more...]]``
+
+
+[section:overload1 windows::basic_random_access_handle::basic_random_access_handle (1 of 3 overloads)]
 
 
 Construct a [link asio.reference.windows__basic_random_access_handle `windows::basic_random_access_handle`] without opening it. 
@@ -85432,7 +88881,7 @@
 
 
 
-[section:overload2 windows::basic_random_access_handle::basic_random_access_handle (2 of 2 overloads)]
+[section:overload2 windows::basic_random_access_handle::basic_random_access_handle (2 of 3 overloads)]
 
 
 Construct a [link asio.reference.windows__basic_random_access_handle `windows::basic_random_access_handle`] on an existing native handle. 
@@ -85473,6 +88922,45 @@
 [endsect]
 
 
+
+[section:overload3 windows::basic_random_access_handle::basic_random_access_handle (3 of 3 overloads)]
+
+
+Move-construct a [link asio.reference.windows__basic_random_access_handle `windows::basic_random_access_handle`] from another. 
+
+
+  basic_random_access_handle(
+      basic_random_access_handle && other);
+
+
+This constructor moves a random-access handle from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.windows__basic_random_access_handle `windows::basic_random_access_handle`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 [section:cancel windows::basic_random_access_handle::cancel]
@@ -85631,6 +89119,54 @@
 
 [endsect]
 
+[section:get_implementation windows::basic_random_access_handle::get_implementation]
+
+[indexterm2 get_implementation..windows::basic_random_access_handle] 
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & ``[link asio.reference.windows__basic_random_access_handle.get_implementation.overload1 get_implementation]``();
+  ``  [''''&raquo;''' [link asio.reference.windows__basic_random_access_handle.get_implementation.overload1 more...]]``
+
+  const implementation_type & ``[link asio.reference.windows__basic_random_access_handle.get_implementation.overload2 get_implementation]``() const;
+  ``  [''''&raquo;''' [link asio.reference.windows__basic_random_access_handle.get_implementation.overload2 more...]]``
+
+
+[section:overload1 windows::basic_random_access_handle::get_implementation (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & get_implementation();
+
+
+
+[endsect]
+
+
+
+[section:overload2 windows::basic_random_access_handle::get_implementation (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  const implementation_type & get_implementation() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:get_io_service windows::basic_random_access_handle::get_io_service]
 
@@ -85657,6 +89193,54 @@
 [endsect]
 
 
+[section:get_service windows::basic_random_access_handle::get_service]
+
+[indexterm2 get_service..windows::basic_random_access_handle] 
+Get the service associated with the I/O object. 
+
+
+  service_type & ``[link asio.reference.windows__basic_random_access_handle.get_service.overload1 get_service]``();
+  ``  [''''&raquo;''' [link asio.reference.windows__basic_random_access_handle.get_service.overload1 more...]]``
+
+  const service_type & ``[link asio.reference.windows__basic_random_access_handle.get_service.overload2 get_service]``() const;
+  ``  [''''&raquo;''' [link asio.reference.windows__basic_random_access_handle.get_service.overload2 more...]]``
+
+
+[section:overload1 windows::basic_random_access_handle::get_service (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  service_type & get_service();
+
+
+
+[endsect]
+
+
+
+[section:overload2 windows::basic_random_access_handle::get_service (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  const service_type & get_service() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:implementation windows::basic_random_access_handle::implementation]
 
@@ -85664,7 +89248,7 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 implementation..windows::basic_random_access_handle] 
-The underlying implementation of the I/O object. 
+(Deprecated: Use `get_implementation()`.) The underlying implementation of the I/O object. 
 
 
   implementation_type implementation;
@@ -85852,7 +89436,9 @@
     [[link asio.reference.windows__basic_handle.basic_handle [*basic_handle]]]
     [Construct a basic_handle without opening it. 
 
-     Construct a basic_handle on an existing native handle. ]
+     Construct a basic_handle on an existing native handle. 
+
+     Move-construct a basic_handle from another. ]
   ]
   
   [
@@ -85892,6 +89478,11 @@
     [Get the native handle representation. ]
   ]
   
+  [
+    [[link asio.reference.windows__basic_handle.operator_eq_ [*operator=]]]
+    [Move-assign a basic_handle from another. ]
+  ]
+  
 ]
 
 [heading Protected Member Functions]
@@ -85899,6 +89490,16 @@
   [[Name][Description]]
 
   [
+    [[link asio.reference.windows__basic_handle.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.windows__basic_handle.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+  [
     [[link asio.reference.windows__basic_handle._basic_handle [*~basic_handle]]]
     [Protected destructor to prevent deletion through this type. ]
   ]
@@ -85911,12 +89512,12 @@
 
   [
     [[link asio.reference.windows__basic_handle.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.windows__basic_handle.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -86023,6 +89624,45 @@
 [endsect]
 
 
+
+[section:operator_eq_ windows::basic_random_access_handle::operator=]
+
+[indexterm2 operator=..windows::basic_random_access_handle] 
+Move-assign a [link asio.reference.windows__basic_random_access_handle `windows::basic_random_access_handle`] from another. 
+
+
+  basic_random_access_handle & operator=(
+      basic_random_access_handle && other);
+
+
+This assignment operator moves a random-access handle from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.windows__basic_random_access_handle `windows::basic_random_access_handle`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
 [section:read_some_at windows::basic_random_access_handle::read_some_at]
 
 [indexterm2 read_some_at..windows::basic_random_access_handle] 
@@ -86164,13 +89804,20 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 service..windows::basic_random_access_handle] 
-The service associated with the I/O object. 
+(Deprecated: Use `get_service()`.) The service associated with the I/O object. 
 
 
   service_type & service;
 
 
 
+[heading Remarks]
+      
+Available only for services that do not support movability. 
+
+
+
+
 [endsect]
 
 
@@ -86411,7 +90058,9 @@
     [[link asio.reference.windows__basic_stream_handle.basic_stream_handle [*basic_stream_handle]]]
     [Construct a basic_stream_handle without opening it. 
 
-     Construct a basic_stream_handle on an existing native handle. ]
+     Construct a basic_stream_handle on an existing native handle. 
+
+     Move-construct a basic_stream_handle from another. ]
   ]
   
   [
@@ -86452,6 +90101,11 @@
   ]
   
   [
+    [[link asio.reference.windows__basic_stream_handle.operator_eq_ [*operator=]]]
+    [Move-assign a basic_stream_handle from another. ]
+  ]
+  
+  [
     [[link asio.reference.windows__basic_stream_handle.read_some [*read_some]]]
     [Read some data from the handle. ]
   ]
@@ -86463,18 +90117,34 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.windows__basic_stream_handle.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.windows__basic_stream_handle.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Protected Data Members]
 [table
   [[Name][Description]]
 
   [
     [[link asio.reference.windows__basic_stream_handle.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.windows__basic_stream_handle.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -86685,7 +90355,15 @@
   ``  [''''&raquo;''' [link asio.reference.windows__basic_stream_handle.basic_stream_handle.overload2 more...]]``
 
 
-[section:overload1 windows::basic_stream_handle::basic_stream_handle (1 of 2 overloads)]
+Move-construct a [link asio.reference.windows__basic_stream_handle `windows::basic_stream_handle`] from another. 
+
+
+  ``[link asio.reference.windows__basic_stream_handle.basic_stream_handle.overload3 basic_stream_handle]``(
+      basic_stream_handle && other);
+  ``  [''''&raquo;''' [link asio.reference.windows__basic_stream_handle.basic_stream_handle.overload3 more...]]``
+
+
+[section:overload1 windows::basic_stream_handle::basic_stream_handle (1 of 3 overloads)]
 
 
 Construct a [link asio.reference.windows__basic_stream_handle `windows::basic_stream_handle`] without opening it. 
@@ -86714,7 +90392,7 @@
 
 
 
-[section:overload2 windows::basic_stream_handle::basic_stream_handle (2 of 2 overloads)]
+[section:overload2 windows::basic_stream_handle::basic_stream_handle (2 of 3 overloads)]
 
 
 Construct a [link asio.reference.windows__basic_stream_handle `windows::basic_stream_handle`] on an existing native handle. 
@@ -86755,6 +90433,45 @@
 [endsect]
 
 
+
+[section:overload3 windows::basic_stream_handle::basic_stream_handle (3 of 3 overloads)]
+
+
+Move-construct a [link asio.reference.windows__basic_stream_handle `windows::basic_stream_handle`] from another. 
+
+
+  basic_stream_handle(
+      basic_stream_handle && other);
+
+
+This constructor moves a stream handle from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.windows__basic_stream_handle `windows::basic_stream_handle`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 [section:cancel windows::basic_stream_handle::cancel]
@@ -86913,6 +90630,54 @@
 
 [endsect]
 
+[section:get_implementation windows::basic_stream_handle::get_implementation]
+
+[indexterm2 get_implementation..windows::basic_stream_handle] 
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & ``[link asio.reference.windows__basic_stream_handle.get_implementation.overload1 get_implementation]``();
+  ``  [''''&raquo;''' [link asio.reference.windows__basic_stream_handle.get_implementation.overload1 more...]]``
+
+  const implementation_type & ``[link asio.reference.windows__basic_stream_handle.get_implementation.overload2 get_implementation]``() const;
+  ``  [''''&raquo;''' [link asio.reference.windows__basic_stream_handle.get_implementation.overload2 more...]]``
+
+
+[section:overload1 windows::basic_stream_handle::get_implementation (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  implementation_type & get_implementation();
+
+
+
+[endsect]
+
+
+
+[section:overload2 windows::basic_stream_handle::get_implementation (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the underlying implementation of the I/O object. 
+
+
+  const implementation_type & get_implementation() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:get_io_service windows::basic_stream_handle::get_io_service]
 
@@ -86939,6 +90704,54 @@
 [endsect]
 
 
+[section:get_service windows::basic_stream_handle::get_service]
+
+[indexterm2 get_service..windows::basic_stream_handle] 
+Get the service associated with the I/O object. 
+
+
+  service_type & ``[link asio.reference.windows__basic_stream_handle.get_service.overload1 get_service]``();
+  ``  [''''&raquo;''' [link asio.reference.windows__basic_stream_handle.get_service.overload1 more...]]``
+
+  const service_type & ``[link asio.reference.windows__basic_stream_handle.get_service.overload2 get_service]``() const;
+  ``  [''''&raquo;''' [link asio.reference.windows__basic_stream_handle.get_service.overload2 more...]]``
+
+
+[section:overload1 windows::basic_stream_handle::get_service (1 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  service_type & get_service();
+
+
+
+[endsect]
+
+
+
+[section:overload2 windows::basic_stream_handle::get_service (2 of 2 overloads)]
+
+
+['Inherited from basic_io_object.]
+
+
+Get the service associated with the I/O object. 
+
+
+  const service_type & get_service() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
 
 [section:implementation windows::basic_stream_handle::implementation]
 
@@ -86946,7 +90759,7 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 implementation..windows::basic_stream_handle] 
-The underlying implementation of the I/O object. 
+(Deprecated: Use `get_implementation()`.) The underlying implementation of the I/O object. 
 
 
   implementation_type implementation;
@@ -87134,7 +90947,9 @@
     [[link asio.reference.windows__basic_handle.basic_handle [*basic_handle]]]
     [Construct a basic_handle without opening it. 
 
-     Construct a basic_handle on an existing native handle. ]
+     Construct a basic_handle on an existing native handle. 
+
+     Move-construct a basic_handle from another. ]
   ]
   
   [
@@ -87174,6 +90989,11 @@
     [Get the native handle representation. ]
   ]
   
+  [
+    [[link asio.reference.windows__basic_handle.operator_eq_ [*operator=]]]
+    [Move-assign a basic_handle from another. ]
+  ]
+  
 ]
 
 [heading Protected Member Functions]
@@ -87181,6 +91001,16 @@
   [[Name][Description]]
 
   [
+    [[link asio.reference.windows__basic_handle.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.windows__basic_handle.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+  [
     [[link asio.reference.windows__basic_handle._basic_handle [*~basic_handle]]]
     [Protected destructor to prevent deletion through this type. ]
   ]
@@ -87193,12 +91023,12 @@
 
   [
     [[link asio.reference.windows__basic_handle.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.windows__basic_handle.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -87305,6 +91135,45 @@
 [endsect]
 
 
+
+[section:operator_eq_ windows::basic_stream_handle::operator=]
+
+[indexterm2 operator=..windows::basic_stream_handle] 
+Move-assign a [link asio.reference.windows__basic_stream_handle `windows::basic_stream_handle`] from another. 
+
+
+  basic_stream_handle & operator=(
+      basic_stream_handle && other);
+
+
+This assignment operator moves a stream handle from one object to another.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[other][The other [link asio.reference.windows__basic_stream_handle `windows::basic_stream_handle`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+      
+Following the move, the valid operations for the other object are: 
+* Using it as the target of a move assignment. 
+
+* Destruction. 
+
+
+
+
+
+
+[endsect]
+
+
 [section:read_some windows::basic_stream_handle::read_some]
 
 [indexterm2 read_some..windows::basic_stream_handle] 
@@ -87438,13 +91307,20 @@
 ['Inherited from basic_io_object.]
 
 [indexterm2 service..windows::basic_stream_handle] 
-The service associated with the I/O object. 
+(Deprecated: Use `get_service()`.) The service associated with the I/O object. 
 
 
   service_type & service;
 
 
 
+[heading Remarks]
+      
+Available only for services that do not support movability. 
+
+
+
+
 [endsect]
 
 
@@ -87939,7 +91815,9 @@
     [[link asio.reference.windows__basic_random_access_handle.basic_random_access_handle [*basic_random_access_handle]]]
     [Construct a basic_random_access_handle without opening it. 
 
-     Construct a basic_random_access_handle on an existing native handle. ]
+     Construct a basic_random_access_handle on an existing native handle. 
+
+     Move-construct a basic_random_access_handle from another. ]
   ]
   
   [
@@ -87980,6 +91858,11 @@
   ]
   
   [
+    [[link asio.reference.windows__basic_random_access_handle.operator_eq_ [*operator=]]]
+    [Move-assign a basic_random_access_handle from another. ]
+  ]
+  
+  [
     [[link asio.reference.windows__basic_random_access_handle.read_some_at [*read_some_at]]]
     [Read some data from the handle at the specified offset. ]
   ]
@@ -87991,18 +91874,34 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.windows__basic_random_access_handle.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.windows__basic_random_access_handle.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Protected Data Members]
 [table
   [[Name][Description]]
 
   [
     [[link asio.reference.windows__basic_random_access_handle.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.windows__basic_random_access_handle.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -88116,6 +92015,16 @@
   ]
   
   [
+    [[link asio.reference.windows__random_access_handle_service.move_assign [*move_assign]]]
+    [Move-assign from another random-access handle implementation. ]
+  ]
+  
+  [
+    [[link asio.reference.windows__random_access_handle_service.move_construct [*move_construct]]]
+    [Move-construct a new random-access handle implementation. ]
+  ]
+  
+  [
     [[link asio.reference.windows__random_access_handle_service.native [*native]]]
     [(Deprecated: Use native_handle().) Get the native handle implementation. ]
   ]
@@ -88136,11 +92045,6 @@
   ]
   
   [
-    [[link asio.reference.windows__random_access_handle_service.shutdown_service [*shutdown_service]]]
-    [Destroy all user-defined handler objects owned by the service. ]
-  ]
-  
-  [
     [[link asio.reference.windows__random_access_handle_service.write_some_at [*write_some_at]]]
     [Write the given data at the specified offset. ]
   ]
@@ -88353,6 +92257,39 @@
 
 
 
+[section:move_assign windows::random_access_handle_service::move_assign]
+
+[indexterm2 move_assign..windows::random_access_handle_service] 
+Move-assign from another random-access handle implementation. 
+
+
+  void move_assign(
+      implementation_type & impl,
+      random_access_handle_service & other_service,
+      implementation_type & other_impl);
+
+
+
+[endsect]
+
+
+
+[section:move_construct windows::random_access_handle_service::move_construct]
+
+[indexterm2 move_construct..windows::random_access_handle_service] 
+Move-construct a new random-access handle implementation. 
+
+
+  void move_construct(
+      implementation_type & impl,
+      implementation_type & other_impl);
+
+
+
+[endsect]
+
+
+
 [section:native windows::random_access_handle_service::native]
 
 [indexterm2 native..windows::random_access_handle_service] 
@@ -88460,20 +92397,6 @@
 
 
 
-[section:shutdown_service windows::random_access_handle_service::shutdown_service]
-
-[indexterm2 shutdown_service..windows::random_access_handle_service] 
-Destroy all user-defined handler objects owned by the service. 
-
-
-  virtual void shutdown_service();
-
-
-
-[endsect]
-
-
-
 [section:write_some_at windows::random_access_handle_service::write_some_at]
 
 [indexterm2 write_some_at..windows::random_access_handle_service] 
@@ -88570,7 +92493,9 @@
     [[link asio.reference.windows__basic_stream_handle.basic_stream_handle [*basic_stream_handle]]]
     [Construct a basic_stream_handle without opening it. 
 
-     Construct a basic_stream_handle on an existing native handle. ]
+     Construct a basic_stream_handle on an existing native handle. 
+
+     Move-construct a basic_stream_handle from another. ]
   ]
   
   [
@@ -88611,6 +92536,11 @@
   ]
   
   [
+    [[link asio.reference.windows__basic_stream_handle.operator_eq_ [*operator=]]]
+    [Move-assign a basic_stream_handle from another. ]
+  ]
+  
+  [
     [[link asio.reference.windows__basic_stream_handle.read_some [*read_some]]]
     [Read some data from the handle. ]
   ]
@@ -88622,18 +92552,34 @@
   
 ]
 
+[heading Protected Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.windows__basic_stream_handle.get_implementation [*get_implementation]]]
+    [Get the underlying implementation of the I/O object. ]
+  ]
+  
+  [
+    [[link asio.reference.windows__basic_stream_handle.get_service [*get_service]]]
+    [Get the service associated with the I/O object. ]
+  ]
+  
+]
+
 [heading Protected Data Members]
 [table
   [[Name][Description]]
 
   [
     [[link asio.reference.windows__basic_stream_handle.implementation [*implementation]]]
-    [The underlying implementation of the I/O object. ]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
   ]
 
   [
     [[link asio.reference.windows__basic_stream_handle.service [*service]]]
-    [The service associated with the I/O object. ]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
   ]
 
 ]
@@ -88748,6 +92694,16 @@
   ]
   
   [
+    [[link asio.reference.windows__stream_handle_service.move_assign [*move_assign]]]
+    [Move-assign from another stream handle implementation. ]
+  ]
+  
+  [
+    [[link asio.reference.windows__stream_handle_service.move_construct [*move_construct]]]
+    [Move-construct a new stream handle implementation. ]
+  ]
+  
+  [
     [[link asio.reference.windows__stream_handle_service.native [*native]]]
     [(Deprecated: Use native_handle().) Get the native handle implementation. ]
   ]
@@ -88763,11 +92719,6 @@
   ]
   
   [
-    [[link asio.reference.windows__stream_handle_service.shutdown_service [*shutdown_service]]]
-    [Destroy all user-defined handler objects owned by the service. ]
-  ]
-  
-  [
     [[link asio.reference.windows__stream_handle_service.stream_handle_service [*stream_handle_service]]]
     [Construct a new stream handle service for the specified io_service. ]
   ]
@@ -88983,6 +92934,39 @@
 
 
 
+[section:move_assign windows::stream_handle_service::move_assign]
+
+[indexterm2 move_assign..windows::stream_handle_service] 
+Move-assign from another stream handle implementation. 
+
+
+  void move_assign(
+      implementation_type & impl,
+      stream_handle_service & other_service,
+      implementation_type & other_impl);
+
+
+
+[endsect]
+
+
+
+[section:move_construct windows::stream_handle_service::move_construct]
+
+[indexterm2 move_construct..windows::stream_handle_service] 
+Move-construct a new stream handle implementation. 
+
+
+  void move_construct(
+      implementation_type & impl,
+      implementation_type & other_impl);
+
+
+
+[endsect]
+
+
+
 [section:native windows::stream_handle_service::native]
 
 [indexterm2 native..windows::stream_handle_service] 
@@ -89074,20 +93058,6 @@
 
 
 
-[section:shutdown_service windows::stream_handle_service::shutdown_service]
-
-[indexterm2 shutdown_service..windows::stream_handle_service] 
-Destroy all user-defined handler objects owned by the service. 
-
-
-  virtual void shutdown_service();
-
-
-
-[endsect]
-
-
-
 [section:stream_handle_service windows::stream_handle_service::stream_handle_service]
 
 [indexterm2 stream_handle_service..windows::stream_handle_service]