Update type requirements to reflect support for movability.
diff --git a/asio/src/doc/requirements/DescriptorService.qbk b/asio/src/doc/requirements/DescriptorService.qbk
index b1239b3..2c13627 100644
--- a/asio/src/doc/requirements/DescriptorService.qbk
+++ b/asio/src/doc/requirements/DescriptorService.qbk
@@ -8,12 +8,12 @@
 [section:DescriptorService Descriptor service requirements]
 
 A descriptor service must meet the requirements for an [link
-asio.reference.IoObjectService I/O object service], as well as the
-additional requirements listed below.
+asio.reference.IoObjectService I/O object service] with support for movability,
+as well as the additional requirements listed below.
 
-In the table below, `X` denotes a descriptor service class, `a` denotes a value
-of type `X`, `b` denotes a value of type `X::implementation_type`, `n` denotes
-a value of type `X::native_handle_type`, `ec` denotes a value of type
+In the table below, `X` denotes a descriptor service class, `a` and `ao` denote
+values of type `X`, `b` and `c` denote values of type `X::implementation_type`,
+`n` denotes a value of type `X::native_handle_type`, `ec` denotes a value of type
 `error_code`, `i` denotes a value meeting [link asio.reference.IoControlCommand
 `IoControlCommand`] requirements, and `u` and `v` denote identifiers.
 
@@ -48,6 +48,28 @@
   ]
   [
     [``
+      a.move_construct(b, c);
+    ``]
+    []
+    [
+      From [link asio.reference.IoObjectService IoObjectService] requirements.
+      The underlying native representation is moved from `c` to `b`.
+    ]
+  ]
+  [
+    [``
+      a.move_assign(b, ao, c);
+    ``]
+    []
+    [
+      From [link asio.reference.IoObjectService IoObjectService] requirements.
+      Implicitly cancels asynchronous operations associated with `b`, as if by
+      calling `a.close(b, ec)`. Then the underlying native representation is
+      moved from `c` to `b`.
+    ]
+  ]
+  [
+    [``
       a.assign(b, n, ec);
     ``]
     [`error_code`]
diff --git a/asio/src/doc/requirements/HandleService.qbk b/asio/src/doc/requirements/HandleService.qbk
index baa0919..3f7d1d0 100644
--- a/asio/src/doc/requirements/HandleService.qbk
+++ b/asio/src/doc/requirements/HandleService.qbk
@@ -8,13 +8,13 @@
 [section:HandleService Handle service requirements]
 
 A handle service must meet the requirements for an [link
-asio.reference.IoObjectService I/O object service], as well as the
-additional requirements listed below.
+asio.reference.IoObjectService I/O object service] with support for movability,
+as well as the additional requirements listed below.
 
-In the table below, `X` denotes a handle service class, `a` denotes a value of
-type `X`, `b` denotes a value of type `X::implementation_type`, `n` denotes a
-value of type `X::native_handle_type`, `ec` denotes a value of type
-`error_code`, and `u` and `v` denote identifiers.
+In the table below, `X` denotes a handle service class, `a` and `ao` denote
+values of type `X`, `b` and `c` denote values of type `X::implementation_type`,
+`n` denotes a value of type `X::native_handle_type`, `ec` denotes a value of
+type `error_code`, and `u` and `v` denote identifiers.
 
 [table HandleService requirements
   [[expression] [return type] [assertion/note\npre/post-condition]]
@@ -47,6 +47,28 @@
   ]
   [
     [``
+      a.move_construct(b, c);
+    ``]
+    []
+    [
+      From [link asio.reference.IoObjectService IoObjectService] requirements.
+      The underlying native representation is moved from `c` to `b`.
+    ]
+  ]
+  [
+    [``
+      a.move_assign(b, ao, c);
+    ``]
+    []
+    [
+      From [link asio.reference.IoObjectService IoObjectService] requirements.
+      Implicitly cancels asynchronous operations associated with `b`, as if by
+      calling `a.close(b, ec)`. Then the underlying native representation is
+      moved from `c` to `b`.
+    ]
+  ]
+  [
+    [``
       a.assign(b, n, ec);
     ``]
     [`error_code`]
diff --git a/asio/src/doc/requirements/IoObjectService.qbk b/asio/src/doc/requirements/IoObjectService.qbk
index 8ada186..8d65f51 100644
--- a/asio/src/doc/requirements/IoObjectService.qbk
+++ b/asio/src/doc/requirements/IoObjectService.qbk
@@ -11,9 +11,9 @@
 asio.reference.Service service], as well as the requirements listed
 below.
 
-In the table below, `X` denotes an I/O object service class, `a` denotes a
-value of type `X`, `b` denotes a value of type `X::implementation_type`, and
-`u` denotes an identifier.
+In the table below, `X` denotes an I/O object service class, `a` and `ao` denote
+values of type `X`, `b` and `c` denote values of type `X::implementation_type`,
+and `u` denotes an identifier.
 
 [table IoObjectService requirements
   [[expression] [return type] [assertion/note\npre/post-condition]]
@@ -41,7 +41,21 @@
     ``]
     []
     [note: `destroy()` will only be called on a value that has previously been
-     initialised with `construct()`.]
+     initialised with `construct()` or `move_construct()`.]
+  ]
+  [
+    [``
+      a.move_construct(b, c);
+    ``]
+    []
+    [note: only required for I/O objects that support movability.]
+  ]
+  [
+    [``
+      a.move_assign(b, ao, c);
+    ``]
+    []
+    [note: only required for I/O objects that support movability.]
   ]
 ]
 
diff --git a/asio/src/doc/requirements/SerialPortService.qbk b/asio/src/doc/requirements/SerialPortService.qbk
index 0483694..f2632ef 100644
--- a/asio/src/doc/requirements/SerialPortService.qbk
+++ b/asio/src/doc/requirements/SerialPortService.qbk
@@ -8,13 +8,13 @@
 [section:SerialPortService Serial port service requirements]
 
 A serial port service must meet the requirements for an [link
-asio.reference.IoObjectService I/O object service], as well as the
-additional requirements listed below.
+asio.reference.IoObjectService I/O object service] with support for movability,
+as well as the additional requirements listed below.
 
-In the table below, `X` denotes a serial port service class, `a` denotes a
-value of type `X`, `d` denotes a serial port device name of type `std::string`,
-`b` denotes a value of type `X::implementation_type`, `n` denotes a value of
-type `X::native_handle_type`, `ec` denotes a value of type `error_code`, `s`
+In the table below, `X` denotes a serial port service class, `a` and `ao` denote
+values of type `X`, `d` denotes a serial port device name of type `std::string`,
+`b` and `c` denote values of type `X::implementation_type`, `n` denotes a value
+of type `X::native_handle_type`, `ec` denotes a value of type `error_code`, `s`
 denotes a value meeting [link asio.reference.SettableSerialPortOption
 `SettableSerialPortOption`] requirements, `g` denotes a value meeting [link
 asio.reference.GettableSerialPortOption `GettableSerialPortOption`]
@@ -57,6 +57,28 @@
   ]
   [
     [``
+      a.move_construct(b, c);
+    ``]
+    []
+    [
+      From [link asio.reference.IoObjectService IoObjectService] requirements.
+      The underlying native representation is moved from `c` to `b`.
+    ]
+  ]
+  [
+    [``
+      a.move_assign(b, ao, c);
+    ``]
+    []
+    [
+      From [link asio.reference.IoObjectService IoObjectService] requirements.
+      Implicitly cancels asynchronous operations associated with `b`, as if by
+      calling `a.close(b, ec)`. Then the underlying native representation is
+      moved from `c` to `b`.
+    ]
+  ]
+  [
+    [``
       const std::string& u = d;
       a.open(b, u, ec);
     ``]
diff --git a/asio/src/doc/requirements/SocketAcceptorService.qbk b/asio/src/doc/requirements/SocketAcceptorService.qbk
index 9e239e6..f0744e7 100644
--- a/asio/src/doc/requirements/SocketAcceptorService.qbk
+++ b/asio/src/doc/requirements/SocketAcceptorService.qbk
@@ -12,20 +12,19 @@
 additional requirements listed below.
 
 In the table below, `X` denotes a socket acceptor service class for protocol
-[link asio.reference.Protocol `Protocol`], `a` denotes a value of type
-`X`, `b` denotes a value of type `X::implementation_type`, `p` denotes a value
-of type `Protocol`, `n` denotes a value of type `X::native_handle_type`, `e`
-denotes a value of type `Protocol::endpoint`, `ec` denotes a value of type
+[link asio.reference.Protocol `Protocol`], `a` and `ao` denote values of type
+`X`, `b` and `c` denote values of type `X::implementation_type`, `p` denotes a
+value of type `Protocol`, `n` denotes a value of type `X::native_handle_type`,
+`e` denotes a value of type `Protocol::endpoint`, `ec` denotes a value of type
 `error_code`, `s` denotes a value meeting [link
 asio.reference.SettableSocketOption `SettableSocketOption`] requirements, `g`
 denotes a value meeting [link asio.reference.GettableSocketOption
 `GettableSocketOption`] requirements, `i` denotes a value meeting [link
-asio.reference.IoControlCommand `IoControlCommand`] requirements, `k`
-denotes a value of type `basic_socket<Protocol, SocketService>` where
-`SocketService` is a type meeting [link asio.reference.SocketService
-socket service] requirements, `ah` denotes a value meeting [link
-asio.reference.AcceptHandler `AcceptHandler`] requirements, and `u`
-and `v` denote identifiers.
+asio.reference.IoControlCommand `IoControlCommand`] requirements, `k` denotes a
+value of type `basic_socket<Protocol, SocketService>` where `SocketService` is
+a type meeting [link asio.reference.SocketService socket service] requirements,
+`ah` denotes a value meeting [link asio.reference.AcceptHandler
+`AcceptHandler`] requirements, and `u` and `v` denote identifiers.
 
 [table SocketAcceptorService requirements
   [[expression] [return type] [assertion/note\npre/post-condition]]
@@ -58,6 +57,28 @@
   ]
   [
     [``
+      a.move_construct(b, c);
+    ``]
+    []
+    [
+      From [link asio.reference.IoObjectService IoObjectService] requirements.
+      The underlying native representation is moved from `c` to `b`.
+    ]
+  ]
+  [
+    [``
+      a.move_assign(b, ao, c);
+    ``]
+    []
+    [
+      From [link asio.reference.IoObjectService IoObjectService] requirements.
+      Implicitly cancels asynchronous operations associated with `b`, as if by
+      calling `a.close(b, ec)`. Then the underlying native representation is
+      moved from `c` to `b`.
+    ]
+  ]
+  [
+    [``
       a.open(b, p, ec);
     ``]
     [`error_code`]
diff --git a/asio/src/doc/requirements/SocketService.qbk b/asio/src/doc/requirements/SocketService.qbk
index 97ebddf..110b8a1 100644
--- a/asio/src/doc/requirements/SocketService.qbk
+++ b/asio/src/doc/requirements/SocketService.qbk
@@ -8,13 +8,13 @@
 [section:SocketService Socket service requirements]
 
 A socket service must meet the requirements for an [link
-asio.reference.IoObjectService I/O object service], as well as the
-additional requirements listed below.
+asio.reference.IoObjectService I/O object service] with support for movability,
+as well as the  additional requirements listed below.
 
 In the table below, `X` denotes a socket service class for protocol [link
-asio.reference.Protocol `Protocol`], `a` denotes a value of type `X`,
-`b` denotes a value of type `X::implementation_type`, `p` denotes a value of
-type `Protocol`, `n` denotes a value of type `X::native_handle_type`, `e`
+asio.reference.Protocol `Protocol`], `a` and `ao` denote values of type `X`,
+`b` and `c` denote values of type `X::implementation_type`, `p` denotes a value
+of type `Protocol`, `n` denotes a value of type `X::native_handle_type`, `e`
 denotes a value of type `Protocol::endpoint`, `ec` denotes a value of type
 `error_code`, `s` denotes a value meeting [link
 asio.reference.SettableSocketOption `SettableSocketOption`] requirements, `g`
@@ -56,6 +56,28 @@
   ]
   [
     [``
+      a.move_construct(b, c);
+    ``]
+    []
+    [
+      From [link asio.reference.IoObjectService IoObjectService] requirements.
+      The underlying native representation is moved from `c` to `b`.
+    ]
+  ]
+  [
+    [``
+      a.move_assign(b, ao, c);
+    ``]
+    []
+    [
+      From [link asio.reference.IoObjectService IoObjectService] requirements.
+      Implicitly cancels asynchronous operations associated with `b`, as if by
+      calling `a.close(b, ec)`. Then the underlying native representation is
+      moved from `c` to `b`.
+    ]
+  ]
+  [
+    [``
       a.open(b, p, ec);
     ``]
     [`error_code`]