diff --git a/asio/include/asio/handler_type.hpp b/asio/include/asio/handler_type.hpp
index fa47504..08d033c 100644
--- a/asio/include/asio/handler_type.hpp
+++ b/asio/include/asio/handler_type.hpp
@@ -37,6 +37,8 @@
   typedef Handler type;
 };
 
+#if !defined(GENERATING_DOCUMENTATION)
+
 template <typename Handler, typename Signature>
 struct handler_type<const Handler, Signature>
   : handler_type<Handler, Signature> {};
@@ -98,6 +100,8 @@
 struct handler_type<ReturnType(Arg1, Arg2, Arg3, Arg4, Arg5), Signature>
   : handler_type<ReturnType(*)(Arg1, Arg2, Arg3, Arg4, Arg5), Signature> {};
 
+#endif // !defined(GENERATING_DOCUMENTATION)
+
 } // namespace asio
 
 #include "asio/detail/pop_options.hpp"
diff --git a/asio/include/asio/spawn.hpp b/asio/include/asio/spawn.hpp
index cf834da..501e073 100644
--- a/asio/include/asio/spawn.hpp
+++ b/asio/include/asio/spawn.hpp
@@ -26,10 +26,34 @@
 
 namespace asio {
 
+/// Context object the represents the currently executing coroutine.
+/**
+ * The basic_yield_context class is used to represent the currently executing
+ * stackful coroutine. A basic_yield_context may be passed as a handler to an
+ * asynchronous operation. For example:
+ *
+ * @code template <typename Handler>
+ * void my_coroutine(basic_yield_context<Handler> yield)
+ * {
+ *   ...
+ *   std::size_t n = my_socket.async_read_some(buffer, yield);
+ *   ...
+ * } @endcode
+ *
+ * The initiating function (async_read_some in the above example) suspends the
+ * current coroutine. The coroutine is resumed when the asynchronous operation
+ * completes, and the result of the operation is returned.
+ */
 template <typename Handler>
 class basic_yield_context
 {
 public:
+  /// Construct a yield context to represent the specified coroutine.
+  /**
+   * Most applications do not need to use this constructor. Instead, the
+   * spawn() function passes a yield context as an argument to the coroutine
+   * function.
+   */
   basic_yield_context(
       const detail::weak_ptr<boost::coroutines::coroutine<void()> >& coro,
       boost::coroutines::coroutine<void()>::caller_type& ca, Handler& handler)
@@ -40,6 +64,25 @@
   {
   }
 
+  /// Return a yield context that sets the specified error_code.
+  /**
+   * By default, when a yield context is used with an asynchronous operation, a
+   * non-success error_code is converted to system_error and thrown. This
+   * operator may be used to specify an error_code object that should instead be
+   * set with the asynchronous operation's result. For example:
+   *
+   * @code template <typename Handler>
+   * void my_coroutine(basic_yield_context<Handler> yield)
+   * {
+   *   ...
+   *   std::size_t n = my_socket.async_read_some(buffer, yield[ec]);
+   *   if (ec)
+   *   {
+   *     // An error occurred.
+   *   }
+   *   ...
+   * } @endcode
+   */
   basic_yield_context operator[](asio::error_code& ec)
   {
     basic_yield_context tmp(*this);
@@ -57,6 +100,7 @@
 };
 
 #if defined(GENERATING_DOCUMENTATION)
+/// Context object the represents the currently executing coroutine.
 typedef basic_yield_context<unspecified> yield_context;
 #else // defined(GENERATING_DOCUMENTATION)
 typedef basic_yield_context<
@@ -65,30 +109,123 @@
     detail::is_continuation_if_running> > yield_context;
 #endif // defined(GENERATING_DOCUMENTATION)
 
+/**
+ * @defgroup spawn asio::spawn
+ *
+ * @brief Start a new stackful coroutine.
+ *
+ * The spawn() function is a high-level wrapper over the Boost.Coroutine
+ * library. This function enables programs to implement asynchronous logic in a
+ * synchronous manner, as illustrated by the following example:
+ *
+ * @code asio::spawn(my_strand, do_echo);
+ *
+ * // ...
+ *
+ * void do_echo(asio::yield_context yield)
+ * {
+ *   try
+ *   {
+ *     char data[128];
+ *     for (;;)
+ *     {
+ *       std::size_t length =
+ *         my_socket.async_read_some(
+ *           asio::buffer(data), yield);
+ *
+ *       asio::async_write(my_socket,
+ *           asio::buffer(data, length), yield);
+ *     }
+ *   }
+ *   catch (std::exception& e)
+ *   {
+ *     // ...
+ *   }
+ * } @endcode
+ */
+/*@{*/
+
+/// Start a new stackful coroutine, calling the specified handler when it
+/// completes.
+/**
+ * This function is used to launch a new coroutine.
+ *
+ * @param handler A handler to be called when the coroutine exits. More
+ * importantly, the handler provides an execution context (via the the handler
+ * invocation hook) for the coroutine. The handler must have the signature:
+ * @code void handler(); @endcode
+ *
+ * @param function The coroutine function. The function must have the signature:
+ * @code void function(basic_yield_context<Handler> yield); @endcode
+ *
+ * @param attributes Boost.Coroutine attributes used to customise the coroutine.
+ */
 template <typename Handler, typename Function>
 void spawn(ASIO_MOVE_ARG(Handler) handler,
     ASIO_MOVE_ARG(Function) function,
     const boost::coroutines::attributes& attributes
       = boost::coroutines::attributes());
 
+/// Start a new stackful coroutine, inheriting the execution context of another.
+/**
+ * This function is used to launch a new coroutine.
+ *
+ * @param ctx Identifies the current coroutine as a parent of the new
+ * coroutine. This specifies that the new coroutine should inherit the
+ * execution context of the parent. For example, if the parent coroutine is
+ * executing in a particular strand, then the new coroutine will execute in the
+ * same strand.
+ *
+ * @param function The coroutine function. The function must have the signature:
+ * @code void function(basic_yield_context<Handler> yield); @endcode
+ *
+ * @param attributes Boost.Coroutine attributes used to customise the coroutine.
+ */
 template <typename Handler, typename Function>
 void spawn(basic_yield_context<Handler> ctx,
     ASIO_MOVE_ARG(Function) function,
     const boost::coroutines::attributes& attributes
       = boost::coroutines::attributes());
 
+/// Start a new stackful coroutine that executes in the contex of a strand.
+/**
+ * This function is used to launch a new coroutine.
+ *
+ * @param strand Identifies a strand. By starting multiple coroutines on the
+ * same strand, the implementation ensures that none of those coroutines can
+ * execute simultaneously.
+ *
+ * @param function The coroutine function. The function must have the signature:
+ * @code void function(yield_context yield); @endcode
+ *
+ * @param attributes Boost.Coroutine attributes used to customise the coroutine.
+ */
 template <typename Function>
 void spawn(asio::io_service::strand strand,
     ASIO_MOVE_ARG(Function) function,
     const boost::coroutines::attributes& attributes
       = boost::coroutines::attributes());
 
+/// Start a new stackful coroutine that executes on a given io_service.
+/**
+ * This function is used to launch a new coroutine.
+ *
+ * @param io_service Identifies the io_service that will run the coroutine. The
+ * new coroutine is implicitly given its own strand within this io_service.
+ *
+ * @param function The coroutine function. The function must have the signature:
+ * @code void function(yield_context yield); @endcode
+ *
+ * @param attributes Boost.Coroutine attributes used to customise the coroutine.
+ */
 template <typename Function>
 void spawn(asio::io_service& io_service,
     ASIO_MOVE_ARG(Function) function,
     const boost::coroutines::attributes& attributes
       = boost::coroutines::attributes());
 
+/*@}*/
+
 } // namespace asio
 
 #include "asio/detail/pop_options.hpp"
diff --git a/asio/include/asio/use_future.hpp b/asio/include/asio/use_future.hpp
index 7321a89..f1722e1 100644
--- a/asio/include/asio/use_future.hpp
+++ b/asio/include/asio/use_future.hpp
@@ -22,27 +22,46 @@
 
 namespace asio {
 
+/// Class used to specify that an asynchronous operation should return a future.
+/**
+ * The use_future_t class is used to indicate that an asynchronous operation
+ * should return a std::future object. A use_future_t object may be passed as a
+ * handler to an asynchronous operation, typically using the special value @c
+ * asio::use_future. For example:
+ *
+ * @code std::future<std::size_t> my_future
+ *   = my_socket.async_read_some(my_buffer, asio::use_future); @endcode
+ *
+ * The initiating function (async_read_some in the above example) returns a
+ * future that will receive the result of the operation. If the operation
+ * completes with an error_code indicating failure, it is converted into a
+ * system_error and passed back to the caller via the future.
+ */
 template <typename Allocator = std::allocator<void> >
 class use_future_t
 {
 public:
   typedef Allocator allocator_type;
 
+  /// Construct using default-constructed allocator.
   constexpr use_future_t()
   {
   }
 
+  /// Construct using specified allocator.
   explicit use_future_t(const Allocator& allocator)
     : allocator_(allocator)
   {
   }
 
+  /// Specify an alternate allocator.
   template <typename OtherAllocator>
   use_future_t<OtherAllocator> operator[](const OtherAllocator& allocator) const
   {
     return use_future_t<OtherAllocator>(allocator);
   }
 
+  /// Obtain allocator.
   allocator_type get_allocator() const
   {
     return allocator_;
@@ -52,7 +71,10 @@
   Allocator allocator_;
 };
 
-// A special value, similar to std::nothrow.
+/// A special value, similar to std::nothrow.
+/**
+ * See the documentation for asio::use_future_t for a usage example.
+ */
 constexpr use_future_t<> use_future;
 
 } // namespace asio
diff --git a/asio/src/doc/overview.qbk b/asio/src/doc/overview.qbk
index 1980a35..92ca3a6 100644
--- a/asio/src/doc/overview.qbk
+++ b/asio/src/doc/overview.qbk
@@ -19,8 +19,11 @@
   * [link asio.overview.core.line_based Line-Based Operations]
   * [link asio.overview.core.allocation Custom Memory Allocation]
   * [link asio.overview.core.handler_tracking Handler Tracking]
+  * [link asio.overview.core.coroutine Stackless Coroutines]
+  * [link asio.overview.core.spawn Stackful Coroutines]
 * [link asio.overview.networking Networking]
   * [link asio.overview.networking.protocols TCP, UDP and ICMP]
+  * [link asio.overview.networking.other_protocols Support for Other Protocols]
   * [link asio.overview.networking.iostreams Socket Iostreams]
   * [link asio.overview.networking.bsd_sockets The BSD Socket API and Asio]
 * [link asio.overview.timers Timers]
@@ -50,6 +53,8 @@
 * [link asio.overview.core.line_based Line-Based Operations]
 * [link asio.overview.core.allocation Custom Memory Allocation]
 * [link asio.overview.core.handler_tracking Handler Tracking]
+* [link asio.overview.core.coroutine Stackless Coroutines]
+* [link asio.overview.core.spawn Stackful Coroutines]
 
 [include overview/basics.qbk]
 [include overview/async.qbk]
@@ -61,16 +66,20 @@
 [include overview/line_based.qbk]
 [include overview/allocation.qbk]
 [include overview/handler_tracking.qbk]
+[include overview/coroutine.qbk]
+[include overview/spawn.qbk]
 
 [endsect]
 
 [section:networking Networking]
 
 * [link asio.overview.networking.protocols TCP, UDP and ICMP]
+* [link asio.overview.networking.other_protocols Support for Other Protocols]
 * [link asio.overview.networking.iostreams Socket Iostreams]
 * [link asio.overview.networking.bsd_sockets The BSD Socket API and Asio]
 
 [include overview/protocols.qbk]
+[include overview/other_protocols.qbk]
 [include overview/iostreams.qbk]
 [include overview/bsd_sockets.qbk]
 
diff --git a/asio/src/doc/overview/coroutine.qbk b/asio/src/doc/overview/coroutine.qbk
new file mode 100644
index 0000000..3295a38
--- /dev/null
+++ b/asio/src/doc/overview/coroutine.qbk
@@ -0,0 +1,51 @@
+[/
+ / Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+ /
+ / Distributed under the Boost Software License, Version 1.0. (See accompanying
+ / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ /]
+
+[section:coroutine Stackless Coroutines]
+
+The [link asio.reference.coroutine `coroutine`] class provides support for
+stackless coroutines. Stackless coroutines enable programs to implement
+asynchronous logic in a synchronous manner, with minimal overhead, as shown in
+the following example:
+
+  struct session : asio::coroutine
+  {
+    boost::shared_ptr<tcp::socket> socket_;
+    boost::shared_ptr<std::vector<char> > buffer_;
+
+    session(boost::shared_ptr<tcp::socket> socket)
+      : socket_(socket),
+        buffer_(new std::vector<char>(1024))
+    {
+    }
+
+    void operator()(asio::error_code ec = asio::error_code(), std::size_t n = 0)
+    {
+      if (!ec) reenter (this)
+      {
+        for (;;)
+        {
+          yield socket_->async_read_some(asio::buffer(*buffer_), *this);
+          yield asio::async_write(*socket_, asio::buffer(*buffer_, n), *this);
+        }
+      }
+    }
+  };
+
+The `coroutine` class is used in conjunction with the pseudo-keywords
+`reenter`, `yield` and `fork`. These are preprocessor macros, and are
+implemented in terms of a `switch` statement using a technique similar to
+Duff's Device. The [link asio.reference.coroutine `coroutine`] class's
+documentation provides a complete description of these pseudo-keywords.
+
+[heading See Also]
+
+[link asio.reference.coroutine coroutine],
+[link asio.examples.cpp03_examples.http_server_4 HTTP Server 4 example],
+[link asio.overview.core.spawn Stackful Coroutines].
+
+[endsect]
diff --git a/asio/src/doc/overview/cpp2011.qbk b/asio/src/doc/overview/cpp2011.qbk
index ad7ba92..e67129d 100644
--- a/asio/src/doc/overview/cpp2011.qbk
+++ b/asio/src/doc/overview/cpp2011.qbk
@@ -27,6 +27,8 @@
 
 [link asio.overview.cpp2011.chrono Chrono]
 
+[link asio.overview.cpp2011.futures Futures]
+
 [/boostify: non-boost docs start here]
 
 [section:system_error System Errors and Error Codes]
@@ -237,4 +239,37 @@
 
 [endsect]
 
+[section:futures Futures]
+
+The `asio::use_future` special value provides first-class support for returning a
+C++11 `std::future` from an asynchronous operation's initiating function.
+
+To use `asio::use_future`, pass it to an asynchronous operation instead of
+a normal completion handler. For example:
+
+  std::future<std::size_t> length =
+    my_socket.async_read_some(my_buffer, asio::use_future);
+
+Where a handler signature has the form:
+
+  void handler(asio::error_code ec, result_type result);
+
+the initiating function returns a `std::future` templated on `result_type`.
+In the above example, this is `std::size_t`. If the asynchronous operation
+fails, the `error_code` is converted into a `system_error` exception and
+passed back to the caller through the future.
+
+Where a handler signature has the form:
+
+  void handler(asio::error_code ec);
+
+the initiating function returns `std::future<void>`. As above, an error
+is passed back in the future as a `system_error` exception.
+
+[link asio.reference.use_future use_future],
+[link asio.reference.use_future_t use_future_t],
+[link asio.examples.cpp11_examples.futures Futures example (C++11)].
+
+[endsect]
+
 [endsect]
diff --git a/asio/src/doc/overview/other_protocols.qbk b/asio/src/doc/overview/other_protocols.qbk
new file mode 100644
index 0000000..8658b52
--- /dev/null
+++ b/asio/src/doc/overview/other_protocols.qbk
@@ -0,0 +1,94 @@
+[/
+ / Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+ /
+ / Distributed under the Boost Software License, Version 1.0. (See accompanying
+ / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ /]
+
+[section:other_protocols Support for Other Protocols]
+
+Support for other socket protocols (such as Bluetooth or IRCOMM sockets) can be
+added by implementing the [link asio.reference.Protocol protocol type
+requirements]. However, in many cases these protocols may also be used with
+Asio's generic protocol support. For this, Asio provides the following four
+classes:
+    
+* [link asio.reference.generic__datagram_protocol `generic::datagram_protocol`]
+* [link asio.reference.generic__raw_protocol `generic::raw_protocol`]
+* [link asio.reference.generic__seq_packet_protocol `generic::seq_packet_protocol`]
+* [link asio.reference.generic__stream_protocol `generic::stream_protocol`]
+    
+These classes implement the [link asio.reference.Protocol protocol type
+requirements], but allow the user to specify the address family (e.g. `AF_INET`)
+and protocol type (e.g. `IPPROTO_TCP`) at runtime. For example:
+
+  asio::generic::stream_protocol::socket my_socket(my_io_service);
+  my_socket.open(asio::generic::stream_protocol(AF_INET, IPPROTO_TCP));
+  ...
+
+An endpoint class template, [link asio.reference.generic__basic_endpoint
+`asio::generic::basic_endpoint`], is included to support these protocol
+classes. This endpoint can hold any other endpoint type, provided its native
+representation fits into a `sockaddr_storage` object. This class will also
+convert from other types that implement the [link asio.reference.Endpoint
+endpoint] type requirements:
+
+  asio::ip::tcp::endpoint my_endpoint1 = ...;
+  asio::generic::stream_protocol::endpoint my_endpoint2(my_endpoint1);
+
+The conversion is implicit, so as to support the following use cases:
+
+  asio::generic::stream_protocol::socket my_socket(my_io_service);
+  asio::ip::tcp::endpoint my_endpoint = ...;
+  my_socket.connect(my_endpoint);
+
+[heading C++11 Move Construction]
+    
+When using C++11, it is possible to perform move construction from a socket (or
+acceptor) object to convert to the more generic protocol's socket (or acceptor)
+type. If the protocol conversion is valid:
+
+  Protocol1 p1 = ...;
+  Protocol2 p2(p1);
+
+then the corresponding socket conversion is allowed:
+
+  Protocol1::socket my_socket1(my_io_service);
+  ...
+  Protocol2::socket my_socket2(std::move(my_socket1));
+
+For example, one possible conversion is from a TCP socket to a generic
+stream-oriented socket:
+
+  asio::ip::tcp::socket my_socket1(my_io_service);
+  ...
+  asio::generic::stream_protocol::socket my_socket2(std::move(my_socket1));
+
+These conversions are also available for move-assignment.
+
+These conversions are not limited to the above generic protocol classes.
+User-defined protocols may take advantage of this feature by similarly ensuring
+the conversion from `Protocol1` to `Protocol2` is valid, as above.
+
+[heading Accepting Generic Sockets]
+
+As a convenience, a socket acceptor's `accept()` and `async_accept()` functions
+can directly accept into a different protocol's socket type, provided the
+corresponding protocol conversion is valid. For example, the following is
+supported because the protocol `asio::ip::tcp` is convertible to
+`asio::generic::stream_protocol`:
+
+  asio::ip::tcp::acceptor my_acceptor(my_io_service);
+  ...
+  asio::generic::stream_protocol::socket my_socket(my_io_service);
+  my_acceptor.accept(my_socket);
+
+[heading See Also]
+
+[link asio.reference.generic__datagram_protocol `generic::datagram_protocol`],
+[link asio.reference.generic__raw_protocol `generic::raw_protocol`],
+[link asio.reference.generic__seq_packet_protocol `generic::seq_packet_protocol`],
+[link asio.reference.generic__stream_protocol `generic::stream_protocol`],
+[link asio.reference.Protocol protocol type requirements].
+
+[endsect]
diff --git a/asio/src/doc/overview/protocols.qbk b/asio/src/doc/overview/protocols.qbk
index 2cfe53b..b271292 100644
--- a/asio/src/doc/overview/protocols.qbk
+++ b/asio/src/doc/overview/protocols.qbk
@@ -138,12 +138,6 @@
 asio.reference.basic_raw_socket.async_send_to async_send_to()] member
 functions.
 
-[heading Other Protocols]
-
-Support for other socket protocols (such as Bluetooth or IRCOMM sockets) can be
-added by implementing the [link asio.reference.Protocol Protocol] type
-requirements.
-
 [heading See Also]
 
 [link asio.reference.ip__tcp ip::tcp],
diff --git a/asio/src/doc/overview/spawn.qbk b/asio/src/doc/overview/spawn.qbk
new file mode 100644
index 0000000..928e883
--- /dev/null
+++ b/asio/src/doc/overview/spawn.qbk
@@ -0,0 +1,102 @@
+[/
+ / Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+ /
+ / Distributed under the Boost Software License, Version 1.0. (See accompanying
+ / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ /]
+
+[section:spawn Stackful Coroutines]
+
+The [link asio.reference.spawn `spawn()`] function is a high-level wrapper for
+running stackful coroutines. It is based on the Boost.Coroutine library. The
+`spawn()` function enables programs to implement asynchronous logic in a
+synchronous manner, as shown in the following example:
+
+  asio::spawn(my_strand, do_echo);
+
+  // ...
+
+  void do_echo(asio::yield_context yield)
+  {
+    try
+    {
+      char data[128];
+      for (;;)
+      {
+        std::size_t length =
+          my_socket.async_read_some(
+            asio::buffer(data), yield);
+
+        asio::async_write(my_socket,
+            asio::buffer(data, length), yield);
+      }
+    }
+    catch (std::exception& e)
+    {
+      // ...
+    }
+  }
+
+The first argument to `spawn()` may be a
+[link asio.reference.io_service__strand `strand`],
+[link asio.reference.io_service `io_service`], or
+[link asio.reference.CompletionHandler completion handler].
+This argument determines the context in which the coroutine is permitted to
+execute. For example, a server's per-client object may consist of multiple
+coroutines; they should all run on the same `strand` so that no explicit
+synchronisation is required.
+
+The second argument is a function object with signature:
+
+  void coroutine(asio::yield_context yield);
+
+that specifies the code to be run as part of the coroutine. The parameter
+`yield` may be passed to an asynchronous operation in place of the completion
+handler, as in:
+
+  std::size_t length =
+    my_socket.async_read_some(
+      asio::buffer(data), yield);
+
+This starts the asynchronous operation and suspends the coroutine. The
+coroutine will be resumed automatically when the asynchronous operation
+completes.
+
+Where an asynchronous operation's handler signature has the form:
+
+  void handler(asio::error_code ec, result_type result);
+
+the initiating function returns the result_type. In the `async_read_some`
+example above, this is `size_t`. If the asynchronous operation fails, the
+`error_code` is converted into a `system_error` exception and thrown.
+
+Where a handler signature has the form:
+
+  void handler(asio::error_code ec);
+
+the initiating function returns `void`. As above, an error is passed back to
+the coroutine as a `system_error` exception.
+
+To collect the `error_code` from an operation, rather than have it throw an
+exception, associate the output variable with the `yield_context` as follows:
+
+  asio::error_code ec;
+  std::size_t length =
+    my_socket.async_read_some(
+      asio::buffer(data), yield[ec]);
+  
+[*Note:] if `spawn()` is used with a custom completion handler of type
+`Handler`, the function object signature is actually:
+  
+  void coroutine(asio::basic_yield_context<Handler> yield);
+
+[heading See Also]
+
+[link asio.reference.spawn spawn],
+[link asio.reference.yield_context yield_context],
+[link asio.reference.basic_yield_context basic_yield_context],
+[link asio.examples.cpp03_examples.spawn Spawn example (C++03)],
+[link asio.examples.cpp11_examples.spawn Spawn example (C++11)],
+[link asio.overview.core.coroutine Stackless Coroutines].
+
+[endsect]
diff --git a/asio/src/doc/quickref.xml b/asio/src/doc/quickref.xml
index 21047fd..7cc799f 100644
--- a/asio/src/doc/quickref.xml
+++ b/asio/src/doc/quickref.xml
@@ -28,6 +28,7 @@
           <simplelist type="vert" columns="1">
             <member><link linkend="asio.reference.const_buffer">const_buffer</link></member>
             <member><link linkend="asio.reference.const_buffers_1">const_buffers_1</link></member>
+            <member><link linkend="asio.reference.coroutine">coroutine</link></member>
             <member><link linkend="asio.reference.error_code">error_code</link></member>
             <member><link linkend="asio.reference.invalid_service_owner">invalid_service_owner</link></member>
             <member><link linkend="asio.reference.io_service">io_service</link></member>
@@ -42,11 +43,14 @@
             <member><link linkend="asio.reference.streambuf">streambuf</link></member>
             <member><link linkend="asio.reference.system_error">system_error</link></member>
             <member><link linkend="asio.reference.thread">thread</link></member>
+            <member><link linkend="asio.reference.use_future_t">use_future_t</link></member>
+            <member><link linkend="asio.reference.yield_context">yield_context</link></member>
           </simplelist>
           <bridgehead renderas="sect3">Class Templates</bridgehead>
           <simplelist type="vert" columns="1">
             <member><link linkend="asio.reference.basic_io_object">basic_io_object</link></member>
             <member><link linkend="asio.reference.basic_streambuf">basic_streambuf</link></member>
+            <member><link linkend="asio.reference.basic_yield_context">basic_yield_context</link></member>
             <member><link linkend="asio.reference.buffered_read_stream">buffered_read_stream</link></member>
             <member><link linkend="asio.reference.buffered_stream">buffered_stream</link></member>
             <member><link linkend="asio.reference.buffered_write_stream">buffered_write_stream</link></member>
@@ -60,6 +64,7 @@
             <member><link linkend="asio.reference.asio_handler_allocate">asio_handler_allocate</link></member>
             <member><link linkend="asio.reference.asio_handler_deallocate">asio_handler_deallocate</link></member>
             <member><link linkend="asio.reference.asio_handler_invoke">asio_handler_invoke</link></member>
+            <member><link linkend="asio.reference.asio_handler_is_continuation">asio_handler_is_continuation</link></member>
             <member><link linkend="asio.reference.async_read">async_read</link></member>
             <member><link linkend="asio.reference.async_read_at">async_read_at</link></member>
             <member><link linkend="asio.reference.async_read_until">async_read_until</link></member>
@@ -75,6 +80,7 @@
             <member><link linkend="asio.reference.read">read</link></member>
             <member><link linkend="asio.reference.read_at">read_at</link></member>
             <member><link linkend="asio.reference.read_until">read_until</link></member>
+            <member><link linkend="asio.reference.spawn">spawn</link></member>
             <member><link linkend="asio.reference.transfer_all">transfer_all</link></member>
             <member><link linkend="asio.reference.transfer_at_least">transfer_at_least</link></member>
             <member><link linkend="asio.reference.transfer_exactly">transfer_exactly</link></member>
@@ -84,7 +90,11 @@
           </simplelist>
         </entry>
         <entry valign="top">
-          <bridgehead renderas="sect3">Placeholders</bridgehead>
+          <bridgehead renderas="sect3">Special Values</bridgehead>
+          <simplelist type="vert" columns="1">
+            <member><link linkend="asio.reference.use_future">use_future</link></member>
+          </simplelist>
+          <bridgehead renderas="sect3">Boost.Bind Placeholders</bridgehead>
           <simplelist type="vert" columns="1">
             <member><link linkend="asio.reference.placeholders__bytes_transferred">placeholders::bytes_transferred</link></member>
             <member><link linkend="asio.reference.placeholders__error">placeholders::error</link></member>
@@ -100,6 +110,8 @@
           </simplelist>
           <bridgehead renderas="sect3">Type Traits</bridgehead>
           <simplelist type="vert" columns="1">
+            <member><link linkend="asio.reference.async_result">async_result</link></member>
+            <member><link linkend="asio.reference.handler_type">handler_type</link></member>
             <member><link linkend="asio.reference.is_match_condition">is_match_condition</link></member>
             <member><link linkend="asio.reference.is_read_buffered">is_read_buffered</link></member>
             <member><link linkend="asio.reference.is_write_buffered">is_write_buffered</link></member>
@@ -149,6 +161,19 @@
         <entry valign="top">
           <bridgehead renderas="sect3">Classes</bridgehead>
           <simplelist type="vert" columns="1">
+            <member><link linkend="asio.reference.generic__datagram_protocol">generic::datagram_protocol</link></member>
+            <member><link linkend="asio.reference.generic__datagram_protocol.endpoint">generic::datagram_protocol::endpoint</link></member>
+            <member><link linkend="asio.reference.generic__datagram_protocol.socket">generic::datagram_protocol::socket</link></member>
+            <member><link linkend="asio.reference.generic__raw_protocol">generic::raw_protocol</link></member>
+            <member><link linkend="asio.reference.generic__raw_protocol.endpoint">generic::raw_protocol::endpoint</link></member>
+            <member><link linkend="asio.reference.generic__raw_protocol.socket">generic::raw_protocol::socket</link></member>
+            <member><link linkend="asio.reference.generic__seq_packet_protocol">generic::seq_packet_protocol</link></member>
+            <member><link linkend="asio.reference.generic__seq_packet_protocol.endpoint">generic::seq_packet_protocol::endpoint</link></member>
+            <member><link linkend="asio.reference.generic__seq_packet_protocol.socket">generic::seq_packet_protocol::socket</link></member>
+            <member><link linkend="asio.reference.generic__stream_protocol">generic::stream_protocol</link></member>
+            <member><link linkend="asio.reference.generic__stream_protocol.endpoint">generic::stream_protocol::endpoint</link></member>
+            <member><link linkend="asio.reference.generic__stream_protocol.iostream">generic::stream_protocol::iostream</link></member>
+            <member><link linkend="asio.reference.generic__stream_protocol.socket">generic::stream_protocol::socket</link></member>
             <member><link linkend="asio.reference.ip__address">ip::address</link></member>
             <member><link linkend="asio.reference.ip__address_v4">ip::address_v4</link></member>
             <member><link linkend="asio.reference.ip__address_v6">ip::address_v6</link></member>
@@ -169,14 +194,14 @@
             <member><link linkend="asio.reference.ip__udp.socket">ip::udp::socket</link></member>
             <member><link linkend="asio.reference.socket_base">socket_base</link></member>
           </simplelist>
+        </entry>
+        <entry valign="top">
           <bridgehead renderas="sect3">Free Functions</bridgehead>
           <simplelist type="vert" columns="1">
             <member><link linkend="asio.reference.async_connect">async_connect</link></member>
             <member><link linkend="asio.reference.connect">connect</link></member>
             <member><link linkend="asio.reference.ip__host_name">ip::host_name</link></member>
           </simplelist>
-        </entry>
-        <entry valign="top">
           <bridgehead renderas="sect3">Class Templates</bridgehead>
           <simplelist type="vert" columns="1">
             <member><link linkend="asio.reference.basic_datagram_socket">basic_datagram_socket</link></member>
@@ -188,6 +213,7 @@
             <member><link linkend="asio.reference.basic_socket_iostream">basic_socket_iostream</link></member>
             <member><link linkend="asio.reference.basic_socket_streambuf">basic_socket_streambuf</link></member>
             <member><link linkend="asio.reference.basic_stream_socket">basic_stream_socket</link></member>
+            <member><link linkend="asio.reference.generic__basic_endpoint">generic::basic_endpoint</link></member>
             <member><link linkend="asio.reference.ip__basic_endpoint">ip::basic_endpoint</link></member>
             <member><link linkend="asio.reference.ip__basic_resolver">ip::basic_resolver</link></member>
             <member><link linkend="asio.reference.ip__basic_resolver_entry">ip::basic_resolver_entry</link></member>
diff --git a/asio/src/doc/reference.dox b/asio/src/doc/reference.dox
index 7c39bad..36c9940 100644
--- a/asio/src/doc/reference.dox
+++ b/asio/src/doc/reference.dox
@@ -74,6 +74,7 @@
 #---------------------------------------------------------------------------
 INPUT                  = ./../../include/asio.hpp \
                          ./../../include/asio \
+                         ./../../include/asio/generic \
                          ./../../include/asio/impl \
                          ./../../include/asio/ip \
                          ./../../include/asio/local \
diff --git a/asio/src/doc/reference.qbk b/asio/src/doc/reference.qbk
index 1a1f50a..28080c9 100644
--- a/asio/src/doc/reference.qbk
+++ b/asio/src/doc/reference.qbk
@@ -15,6 +15,7 @@
 [include requirements/AsyncRandomAccessWriteDevice.qbk]
 [include requirements/AsyncReadStream.qbk]
 [include requirements/AsyncWriteStream.qbk]
+[include requirements/BufferedHandshakeHandler.qbk]
 [include requirements/CompletionHandler.qbk]
 [include requirements/ComposedConnectHandler.qbk]
 [include requirements/ConnectHandler.qbk]
@@ -111,9 +112,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/io_service.hpp]
+['Header: ][^asio/io_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -167,9 +168,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/handler_alloc_hook.hpp]
+['Header: ][^asio/handler_alloc_hook.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -197,9 +198,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/handler_alloc_hook.hpp]
+['Header: ][^asio/handler_alloc_hook.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -252,9 +253,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/handler_invoke_hook.hpp]
+['Header: ][^asio/handler_invoke_hook.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -296,9 +297,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/handler_continuation_hook.hpp]
+['Header: ][^asio/handler_continuation_hook.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -315,7 +316,7 @@
       typename ``[link asio.reference.SocketService SocketService]``,
       typename Iterator,
       typename ``[link asio.reference.ComposedConnectHandler ComposedConnectHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_connect.overload1 async_connect]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_connect.overload1 async_connect]``(
       basic_socket< Protocol, SocketService > & s,
       Iterator begin,
       ComposedConnectHandler handler);
@@ -326,7 +327,7 @@
       typename ``[link asio.reference.SocketService SocketService]``,
       typename Iterator,
       typename ``[link asio.reference.ComposedConnectHandler ComposedConnectHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_connect.overload2 async_connect]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_connect.overload2 async_connect]``(
       basic_socket< Protocol, SocketService > & s,
       Iterator begin,
       Iterator end,
@@ -339,7 +340,7 @@
       typename Iterator,
       typename ConnectCondition,
       typename ``[link asio.reference.ComposedConnectHandler ComposedConnectHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_connect.overload3 async_connect]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_connect.overload3 async_connect]``(
       basic_socket< Protocol, SocketService > & s,
       Iterator begin,
       ConnectCondition connect_condition,
@@ -352,7 +353,7 @@
       typename Iterator,
       typename ConnectCondition,
       typename ``[link asio.reference.ComposedConnectHandler ComposedConnectHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_connect.overload4 async_connect]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_connect.overload4 async_connect]``(
       basic_socket< Protocol, SocketService > & s,
       Iterator begin,
       Iterator end,
@@ -362,9 +363,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/connect.hpp]
+['Header: ][^asio/connect.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:overload1 async_connect (1 of 4 overloads)]
@@ -378,7 +379,7 @@
       typename ``[link asio.reference.SocketService SocketService]``,
       typename Iterator,
       typename ``[link asio.reference.ComposedConnectHandler ComposedConnectHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_connect(
       basic_socket< Protocol, SocketService > & s,
       Iterator begin,
       ComposedConnectHandler handler);
@@ -473,7 +474,7 @@
       typename ``[link asio.reference.SocketService SocketService]``,
       typename Iterator,
       typename ``[link asio.reference.ComposedConnectHandler ComposedConnectHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_connect(
       basic_socket< Protocol, SocketService > & s,
       Iterator begin,
       Iterator end,
@@ -568,7 +569,7 @@
       typename Iterator,
       typename ConnectCondition,
       typename ``[link asio.reference.ComposedConnectHandler ComposedConnectHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_connect(
       basic_socket< Protocol, SocketService > & s,
       Iterator begin,
       ConnectCondition connect_condition,
@@ -698,7 +699,7 @@
       typename Iterator,
       typename ConnectCondition,
       typename ``[link asio.reference.ComposedConnectHandler ComposedConnectHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_connect(
       basic_socket< Protocol, SocketService > & s,
       Iterator begin,
       Iterator end,
@@ -826,7 +827,7 @@
       typename ``[link asio.reference.AsyncReadStream AsyncReadStream]``,
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_read.overload1 async_read]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_read.overload1 async_read]``(
       AsyncReadStream & s,
       const MutableBufferSequence & buffers,
       ReadHandler handler);
@@ -837,7 +838,7 @@
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename CompletionCondition,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_read.overload2 async_read]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_read.overload2 async_read]``(
       AsyncReadStream & s,
       const MutableBufferSequence & buffers,
       CompletionCondition completion_condition,
@@ -848,7 +849,7 @@
       typename ``[link asio.reference.AsyncReadStream AsyncReadStream]``,
       typename Allocator,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_read.overload3 async_read]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_read.overload3 async_read]``(
       AsyncReadStream & s,
       basic_streambuf< Allocator > & b,
       ReadHandler handler);
@@ -859,7 +860,7 @@
       typename Allocator,
       typename CompletionCondition,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_read.overload4 async_read]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_read.overload4 async_read]``(
       AsyncReadStream & s,
       basic_streambuf< Allocator > & b,
       CompletionCondition completion_condition,
@@ -868,9 +869,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/read.hpp]
+['Header: ][^asio/read.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:overload1 async_read (1 of 4 overloads)]
@@ -883,7 +884,7 @@
       typename ``[link asio.reference.AsyncReadStream AsyncReadStream]``,
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_read(
       AsyncReadStream & s,
       const MutableBufferSequence & buffers,
       ReadHandler handler);
@@ -897,7 +898,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a [*composed operation]. The program must ensure that the stream performs no other read operations (such as async\_read, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
+This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a ['composed operation]. The program must ensure that the stream performs no other read operations (such as async\_read, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
 
 
 [heading Parameters]
@@ -966,7 +967,7 @@
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename CompletionCondition,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_read(
       AsyncReadStream & s,
       const MutableBufferSequence & buffers,
       CompletionCondition completion_condition,
@@ -1049,7 +1050,7 @@
       typename ``[link asio.reference.AsyncReadStream AsyncReadStream]``,
       typename Allocator,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_read(
       AsyncReadStream & s,
       basic_streambuf< Allocator > & b,
       ReadHandler handler);
@@ -1063,7 +1064,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a [*composed operation]. The program must ensure that the stream performs no other read operations (such as async\_read, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
+This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a ['composed operation]. The program must ensure that the stream performs no other read operations (such as async\_read, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
 
 
 [heading Parameters]
@@ -1122,7 +1123,7 @@
       typename Allocator,
       typename CompletionCondition,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_read(
       AsyncReadStream & s,
       basic_streambuf< Allocator > & b,
       CompletionCondition completion_condition,
@@ -1137,7 +1138,7 @@
 
 * The completion\_condition function object returns 0.
 
-This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a [*composed operation]. The program must ensure that the stream performs no other read operations (such as async\_read, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
+This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a ['composed operation]. The program must ensure that the stream performs no other read operations (such as async\_read, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
 
 
 [heading Parameters]
@@ -1195,7 +1196,7 @@
       typename ``[link asio.reference.AsyncRandomAccessReadDevice AsyncRandomAccessReadDevice]``,
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_read_at.overload1 async_read_at]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_read_at.overload1 async_read_at]``(
       AsyncRandomAccessReadDevice & d,
       uint64_t offset,
       const MutableBufferSequence & buffers,
@@ -1207,7 +1208,7 @@
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename CompletionCondition,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_read_at.overload2 async_read_at]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_read_at.overload2 async_read_at]``(
       AsyncRandomAccessReadDevice & d,
       uint64_t offset,
       const MutableBufferSequence & buffers,
@@ -1219,7 +1220,7 @@
       typename ``[link asio.reference.AsyncRandomAccessReadDevice AsyncRandomAccessReadDevice]``,
       typename Allocator,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_read_at.overload3 async_read_at]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_read_at.overload3 async_read_at]``(
       AsyncRandomAccessReadDevice & d,
       uint64_t offset,
       basic_streambuf< Allocator > & b,
@@ -1231,7 +1232,7 @@
       typename Allocator,
       typename CompletionCondition,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_read_at.overload4 async_read_at]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_read_at.overload4 async_read_at]``(
       AsyncRandomAccessReadDevice & d,
       uint64_t offset,
       basic_streambuf< Allocator > & b,
@@ -1241,9 +1242,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/read_at.hpp]
+['Header: ][^asio/read_at.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:overload1 async_read_at (1 of 4 overloads)]
@@ -1256,7 +1257,7 @@
       typename ``[link asio.reference.AsyncRandomAccessReadDevice AsyncRandomAccessReadDevice]``,
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_at(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_read_at(
       AsyncRandomAccessReadDevice & d,
       uint64_t offset,
       const MutableBufferSequence & buffers,
@@ -1342,7 +1343,7 @@
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename CompletionCondition,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_at(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_read_at(
       AsyncRandomAccessReadDevice & d,
       uint64_t offset,
       const MutableBufferSequence & buffers,
@@ -1428,7 +1429,7 @@
       typename ``[link asio.reference.AsyncRandomAccessReadDevice AsyncRandomAccessReadDevice]``,
       typename Allocator,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_at(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_read_at(
       AsyncRandomAccessReadDevice & d,
       uint64_t offset,
       basic_streambuf< Allocator > & b,
@@ -1501,7 +1502,7 @@
       typename Allocator,
       typename CompletionCondition,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_at(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_read_at(
       AsyncRandomAccessReadDevice & d,
       uint64_t offset,
       basic_streambuf< Allocator > & b,
@@ -1574,7 +1575,7 @@
       typename ``[link asio.reference.AsyncReadStream AsyncReadStream]``,
       typename Allocator,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_read_until.overload1 async_read_until]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_read_until.overload1 async_read_until]``(
       AsyncReadStream & s,
       asio::basic_streambuf< Allocator > & b,
       char delim,
@@ -1585,7 +1586,7 @@
       typename ``[link asio.reference.AsyncReadStream AsyncReadStream]``,
       typename Allocator,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_read_until.overload2 async_read_until]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_read_until.overload2 async_read_until]``(
       AsyncReadStream & s,
       asio::basic_streambuf< Allocator > & b,
       const std::string & delim,
@@ -1596,7 +1597,7 @@
       typename ``[link asio.reference.AsyncReadStream AsyncReadStream]``,
       typename Allocator,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_read_until.overload3 async_read_until]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_read_until.overload3 async_read_until]``(
       AsyncReadStream & s,
       asio::basic_streambuf< Allocator > & b,
       const boost::regex & expr,
@@ -1608,7 +1609,7 @@
       typename Allocator,
       typename MatchCondition,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_read_until.overload4 async_read_until]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_read_until.overload4 async_read_until]``(
       AsyncReadStream & s,
       asio::basic_streambuf< Allocator > & b,
       MatchCondition match_condition,
@@ -1618,9 +1619,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/read_until.hpp]
+['Header: ][^asio/read_until.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:overload1 async_read_until (1 of 4 overloads)]
@@ -1633,7 +1634,7 @@
       typename ``[link asio.reference.AsyncReadStream AsyncReadStream]``,
       typename Allocator,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_until(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_read_until(
       AsyncReadStream & s,
       asio::basic_streambuf< Allocator > & b,
       char delim,
@@ -1648,7 +1649,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a [*composed operation]. If the streambuf's get area already contains the delimiter, this asynchronous operation completes immediately. The program must ensure that the stream performs no other read operations (such as async\_read, async\_read\_until, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
+This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a ['composed operation]. If the streambuf's get area already contains the delimiter, this asynchronous operation completes immediately. The program must ensure that the stream performs no other read operations (such as async\_read, async\_read\_until, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
 
 
 [heading Parameters]
@@ -1738,7 +1739,7 @@
       typename ``[link asio.reference.AsyncReadStream AsyncReadStream]``,
       typename Allocator,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_until(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_read_until(
       AsyncReadStream & s,
       asio::basic_streambuf< Allocator > & b,
       const std::string & delim,
@@ -1753,7 +1754,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a [*composed operation]. If the streambuf's get area already contains the delimiter, this asynchronous operation completes immediately. The program must ensure that the stream performs no other read operations (such as async\_read, async\_read\_until, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
+This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a ['composed operation]. If the streambuf's get area already contains the delimiter, this asynchronous operation completes immediately. The program must ensure that the stream performs no other read operations (such as async\_read, async\_read\_until, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
 
 
 [heading Parameters]
@@ -1843,7 +1844,7 @@
       typename ``[link asio.reference.AsyncReadStream AsyncReadStream]``,
       typename Allocator,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_until(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_read_until(
       AsyncReadStream & s,
       asio::basic_streambuf< Allocator > & b,
       const boost::regex & expr,
@@ -1858,7 +1859,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a [*composed operation]. If the streambuf's get area already contains data that matches the regular expression, this asynchronous operation completes immediately. The program must ensure that the stream performs no other read operations (such as async\_read, async\_read\_until, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
+This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a ['composed operation]. If the streambuf's get area already contains data that matches the regular expression, this asynchronous operation completes immediately. The program must ensure that the stream performs no other read operations (such as async\_read, async\_read\_until, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
 
 
 [heading Parameters]
@@ -1950,7 +1951,7 @@
       typename Allocator,
       typename MatchCondition,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_until(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_read_until(
       AsyncReadStream & s,
       asio::basic_streambuf< Allocator > & b,
       MatchCondition match_condition,
@@ -1966,7 +1967,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a [*composed operation]. If the match condition function object already indicates a match, this asynchronous operation completes immediately. The program must ensure that the stream performs no other read operations (such as async\_read, async\_read\_until, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
+This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a ['composed operation]. If the match condition function object already indicates a match, this asynchronous operation completes immediately. The program must ensure that the stream performs no other read operations (such as async\_read, async\_read\_until, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
 
 
 [heading Parameters]
@@ -2122,9 +2123,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/async_result.hpp]
+['Header: ][^asio/async_result.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:async_result async_result::async_result]
@@ -2170,9 +2171,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/async_result.hpp]
+['Header: ][^asio/async_result.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -2191,7 +2192,7 @@
       typename ``[link asio.reference.AsyncWriteStream AsyncWriteStream]``,
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_write.overload1 async_write]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_write.overload1 async_write]``(
       AsyncWriteStream & s,
       const ConstBufferSequence & buffers,
       WriteHandler handler);
@@ -2202,7 +2203,7 @@
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename CompletionCondition,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_write.overload2 async_write]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_write.overload2 async_write]``(
       AsyncWriteStream & s,
       const ConstBufferSequence & buffers,
       CompletionCondition completion_condition,
@@ -2213,7 +2214,7 @@
       typename ``[link asio.reference.AsyncWriteStream AsyncWriteStream]``,
       typename Allocator,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_write.overload3 async_write]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_write.overload3 async_write]``(
       AsyncWriteStream & s,
       basic_streambuf< Allocator > & b,
       WriteHandler handler);
@@ -2224,7 +2225,7 @@
       typename Allocator,
       typename CompletionCondition,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_write.overload4 async_write]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_write.overload4 async_write]``(
       AsyncWriteStream & s,
       basic_streambuf< Allocator > & b,
       CompletionCondition completion_condition,
@@ -2233,9 +2234,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/write.hpp]
+['Header: ][^asio/write.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:overload1 async_write (1 of 4 overloads)]
@@ -2248,7 +2249,7 @@
       typename ``[link asio.reference.AsyncWriteStream AsyncWriteStream]``,
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_write(
       AsyncWriteStream & s,
       const ConstBufferSequence & buffers,
       WriteHandler handler);
@@ -2262,7 +2263,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of zero or more calls to the stream's async\_write\_some function, and is known as a [*composed operation]. The program must ensure that the stream performs no other write operations (such as async\_write, the stream's async\_write\_some function, or any other composed operations that perform writes) until this operation completes.
+This operation is implemented in terms of zero or more calls to the stream's async\_write\_some function, and is known as a ['composed operation]. The program must ensure that the stream performs no other write operations (such as async\_write, the stream's async\_write\_some function, or any other composed operations that perform writes) until this operation completes.
 
 
 [heading Parameters]
@@ -2317,7 +2318,7 @@
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename CompletionCondition,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_write(
       AsyncWriteStream & s,
       const ConstBufferSequence & buffers,
       CompletionCondition completion_condition,
@@ -2332,7 +2333,7 @@
 
 * The completion\_condition function object returns 0.
 
-This operation is implemented in terms of zero or more calls to the stream's async\_write\_some function, and is known as a [*composed operation]. The program must ensure that the stream performs no other write operations (such as async\_write, the stream's async\_write\_some function, or any other composed operations that perform writes) until this operation completes.
+This operation is implemented in terms of zero or more calls to the stream's async\_write\_some function, and is known as a ['composed operation]. The program must ensure that the stream performs no other write operations (such as async\_write, the stream's async\_write\_some function, or any other composed operations that perform writes) until this operation completes.
 
 
 [heading Parameters]
@@ -2401,7 +2402,7 @@
       typename ``[link asio.reference.AsyncWriteStream AsyncWriteStream]``,
       typename Allocator,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_write(
       AsyncWriteStream & s,
       basic_streambuf< Allocator > & b,
       WriteHandler handler);
@@ -2415,7 +2416,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of zero or more calls to the stream's async\_write\_some function, and is known as a [*composed operation]. The program must ensure that the stream performs no other write operations (such as async\_write, the stream's async\_write\_some function, or any other composed operations that perform writes) until this operation completes.
+This operation is implemented in terms of zero or more calls to the stream's async\_write\_some function, and is known as a ['composed operation]. The program must ensure that the stream performs no other write operations (such as async\_write, the stream's async\_write\_some function, or any other composed operations that perform writes) until this operation completes.
 
 
 [heading Parameters]
@@ -2460,7 +2461,7 @@
       typename Allocator,
       typename CompletionCondition,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_write(
       AsyncWriteStream & s,
       basic_streambuf< Allocator > & b,
       CompletionCondition completion_condition,
@@ -2475,7 +2476,7 @@
 
 * The completion\_condition function object returns 0.
 
-This operation is implemented in terms of zero or more calls to the stream's async\_write\_some function, and is known as a [*composed operation]. The program must ensure that the stream performs no other write operations (such as async\_write, the stream's async\_write\_some function, or any other composed operations that perform writes) until this operation completes.
+This operation is implemented in terms of zero or more calls to the stream's async\_write\_some function, and is known as a ['composed operation]. The program must ensure that the stream performs no other write operations (such as async\_write, the stream's async\_write\_some function, or any other composed operations that perform writes) until this operation completes.
 
 
 [heading Parameters]
@@ -2532,7 +2533,7 @@
       typename ``[link asio.reference.AsyncRandomAccessWriteDevice AsyncRandomAccessWriteDevice]``,
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_write_at.overload1 async_write_at]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_write_at.overload1 async_write_at]``(
       AsyncRandomAccessWriteDevice & d,
       uint64_t offset,
       const ConstBufferSequence & buffers,
@@ -2544,7 +2545,7 @@
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename CompletionCondition,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_write_at.overload2 async_write_at]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_write_at.overload2 async_write_at]``(
       AsyncRandomAccessWriteDevice & d,
       uint64_t offset,
       const ConstBufferSequence & buffers,
@@ -2556,7 +2557,7 @@
       typename ``[link asio.reference.AsyncRandomAccessWriteDevice AsyncRandomAccessWriteDevice]``,
       typename Allocator,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_write_at.overload3 async_write_at]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_write_at.overload3 async_write_at]``(
       AsyncRandomAccessWriteDevice & d,
       uint64_t offset,
       basic_streambuf< Allocator > & b,
@@ -2568,7 +2569,7 @@
       typename Allocator,
       typename CompletionCondition,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.async_write_at.overload4 async_write_at]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.async_write_at.overload4 async_write_at]``(
       AsyncRandomAccessWriteDevice & d,
       uint64_t offset,
       basic_streambuf< Allocator > & b,
@@ -2578,9 +2579,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/write_at.hpp]
+['Header: ][^asio/write_at.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:overload1 async_write_at (1 of 4 overloads)]
@@ -2593,7 +2594,7 @@
       typename ``[link asio.reference.AsyncRandomAccessWriteDevice AsyncRandomAccessWriteDevice]``,
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_at(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_write_at(
       AsyncRandomAccessWriteDevice & d,
       uint64_t offset,
       const ConstBufferSequence & buffers,
@@ -2665,7 +2666,7 @@
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename CompletionCondition,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_at(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_write_at(
       AsyncRandomAccessWriteDevice & d,
       uint64_t offset,
       const ConstBufferSequence & buffers,
@@ -2752,7 +2753,7 @@
       typename ``[link asio.reference.AsyncRandomAccessWriteDevice AsyncRandomAccessWriteDevice]``,
       typename Allocator,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_at(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_write_at(
       AsyncRandomAccessWriteDevice & d,
       uint64_t offset,
       basic_streambuf< Allocator > & b,
@@ -2814,7 +2815,7 @@
       typename Allocator,
       typename CompletionCondition,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_at(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_write_at(
       AsyncRandomAccessWriteDevice & d,
       uint64_t offset,
       basic_streambuf< Allocator > & b,
@@ -3106,7 +3107,9 @@
 
      Construct a basic_datagram_socket on an existing native socket. 
 
-     Move-construct a basic_datagram_socket from another. ]
+     Move-construct a basic_datagram_socket from another. 
+
+     Move-construct a basic_datagram_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -3192,7 +3195,9 @@
   
   [
     [[link asio.reference.basic_datagram_socket.operator_eq_ [*operator=]]]
-    [Move-assign a basic_datagram_socket from another. ]
+    [Move-assign a basic_datagram_socket from another. 
+
+     Move-assign a basic_datagram_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -3300,17 +3305,17 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_datagram_socket.hpp]
+['Header: ][^asio/basic_datagram_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:assign basic_datagram_socket::assign]
 
@@ -3382,7 +3387,7 @@
 
   template<
       typename ``[link asio.reference.ConnectHandler ConnectHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_connect(
       const endpoint_type & peer_endpoint,
       ConnectHandler handler);
 
@@ -3447,7 +3452,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_datagram_socket.async_receive.overload1 async_receive]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_datagram_socket.async_receive.overload1 async_receive]``(
       const MutableBufferSequence & buffers,
       ReadHandler handler);
   ``  [''''&raquo;''' [link asio.reference.basic_datagram_socket.async_receive.overload1 more...]]``
@@ -3455,7 +3460,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_datagram_socket.async_receive.overload2 async_receive]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_datagram_socket.async_receive.overload2 async_receive]``(
       const MutableBufferSequence & buffers,
       socket_base::message_flags flags,
       ReadHandler handler);
@@ -3471,7 +3476,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_receive(
       const MutableBufferSequence & buffers,
       ReadHandler handler);
 
@@ -3528,7 +3533,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_receive(
       const MutableBufferSequence & buffers,
       socket_base::message_flags flags,
       ReadHandler handler);
@@ -3579,7 +3584,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_datagram_socket.async_receive_from.overload1 async_receive_from]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_datagram_socket.async_receive_from.overload1 async_receive_from]``(
       const MutableBufferSequence & buffers,
       endpoint_type & sender_endpoint,
       ReadHandler handler);
@@ -3588,7 +3593,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_datagram_socket.async_receive_from.overload2 async_receive_from]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_datagram_socket.async_receive_from.overload2 async_receive_from]``(
       const MutableBufferSequence & buffers,
       endpoint_type & sender_endpoint,
       socket_base::message_flags flags,
@@ -3605,7 +3610,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive_from(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_receive_from(
       const MutableBufferSequence & buffers,
       endpoint_type & sender_endpoint,
       ReadHandler handler);
@@ -3661,7 +3666,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive_from(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_receive_from(
       const MutableBufferSequence & buffers,
       endpoint_type & sender_endpoint,
       socket_base::message_flags flags,
@@ -3710,7 +3715,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_datagram_socket.async_send.overload1 async_send]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_datagram_socket.async_send.overload1 async_send]``(
       const ConstBufferSequence & buffers,
       WriteHandler handler);
   ``  [''''&raquo;''' [link asio.reference.basic_datagram_socket.async_send.overload1 more...]]``
@@ -3718,7 +3723,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_datagram_socket.async_send.overload2 async_send]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_datagram_socket.async_send.overload2 async_send]``(
       const ConstBufferSequence & buffers,
       socket_base::message_flags flags,
       WriteHandler handler);
@@ -3734,7 +3739,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_send(
       const ConstBufferSequence & buffers,
       WriteHandler handler);
 
@@ -3791,7 +3796,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_send(
       const ConstBufferSequence & buffers,
       socket_base::message_flags flags,
       WriteHandler handler);
@@ -3842,7 +3847,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_datagram_socket.async_send_to.overload1 async_send_to]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_datagram_socket.async_send_to.overload1 async_send_to]``(
       const ConstBufferSequence & buffers,
       const endpoint_type & destination,
       WriteHandler handler);
@@ -3851,7 +3856,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_datagram_socket.async_send_to.overload2 async_send_to]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_datagram_socket.async_send_to.overload2 async_send_to]``(
       const ConstBufferSequence & buffers,
       const endpoint_type & destination,
       socket_base::message_flags flags,
@@ -3868,7 +3873,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send_to(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_send_to(
       const ConstBufferSequence & buffers,
       const endpoint_type & destination,
       WriteHandler handler);
@@ -3926,7 +3931,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send_to(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_send_to(
       const ConstBufferSequence & buffers,
       const endpoint_type & destination,
       socket_base::message_flags flags,
@@ -4189,7 +4194,19 @@
   ``  [''''&raquo;''' [link asio.reference.basic_datagram_socket.basic_datagram_socket.overload5 more...]]``
 
 
-[section:overload1 basic_datagram_socket::basic_datagram_socket (1 of 5 overloads)]
+Move-construct a [link asio.reference.basic_datagram_socket `basic_datagram_socket`] from a socket of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.DatagramSocketService DatagramSocketService1]``>
+  ``[link asio.reference.basic_datagram_socket.basic_datagram_socket.overload6 basic_datagram_socket]``(
+      basic_datagram_socket< Protocol1, DatagramSocketService1 > && other,
+      typename enable_if< is_convertible< Protocol1, Protocol >::value >::type *  = 0);
+  ``  [''''&raquo;''' [link asio.reference.basic_datagram_socket.basic_datagram_socket.overload6 more...]]``
+
+
+[section:overload1 basic_datagram_socket::basic_datagram_socket (1 of 6 overloads)]
 
 
 Construct a [link asio.reference.basic_datagram_socket `basic_datagram_socket`] without opening it. 
@@ -4218,7 +4235,7 @@
 
 
 
-[section:overload2 basic_datagram_socket::basic_datagram_socket (2 of 5 overloads)]
+[section:overload2 basic_datagram_socket::basic_datagram_socket (2 of 6 overloads)]
 
 
 Construct and open a [link asio.reference.basic_datagram_socket `basic_datagram_socket`]. 
@@ -4260,7 +4277,7 @@
 
 
 
-[section:overload3 basic_datagram_socket::basic_datagram_socket (3 of 5 overloads)]
+[section:overload3 basic_datagram_socket::basic_datagram_socket (3 of 6 overloads)]
 
 
 Construct a [link asio.reference.basic_datagram_socket `basic_datagram_socket`], opening it and binding it to the given local endpoint. 
@@ -4302,7 +4319,7 @@
 
 
 
-[section:overload4 basic_datagram_socket::basic_datagram_socket (4 of 5 overloads)]
+[section:overload4 basic_datagram_socket::basic_datagram_socket (4 of 6 overloads)]
 
 
 Construct a [link asio.reference.basic_datagram_socket `basic_datagram_socket`] on an existing native socket. 
@@ -4347,7 +4364,7 @@
 
 
 
-[section:overload5 basic_datagram_socket::basic_datagram_socket (5 of 5 overloads)]
+[section:overload5 basic_datagram_socket::basic_datagram_socket (5 of 6 overloads)]
 
 
 Move-construct a [link asio.reference.basic_datagram_socket `basic_datagram_socket`] from another. 
@@ -4380,6 +4397,44 @@
 [endsect]
 
 
+
+[section:overload6 basic_datagram_socket::basic_datagram_socket (6 of 6 overloads)]
+
+
+Move-construct a [link asio.reference.basic_datagram_socket `basic_datagram_socket`] from a socket of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.DatagramSocketService DatagramSocketService1]``>
+  basic_datagram_socket(
+      basic_datagram_socket< Protocol1, DatagramSocketService1 > && other,
+      typename enable_if< is_convertible< Protocol1, Protocol >::value >::type *  = 0);
+
+
+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 moved-from object is in the same state as if constructed using the `basic_datagram_socket(io_service&) constructor`. 
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 [section:bind basic_datagram_socket::bind]
@@ -4553,9 +4608,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_datagram_socket.hpp]
+['Header: ][^asio/basic_datagram_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -4596,9 +4651,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_datagram_socket.hpp]
+['Header: ][^asio/basic_datagram_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -5000,9 +5055,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_datagram_socket.hpp]
+['Header: ][^asio/basic_datagram_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -5054,9 +5109,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_datagram_socket.hpp]
+['Header: ][^asio/basic_datagram_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -5108,9 +5163,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_datagram_socket.hpp]
+['Header: ][^asio/basic_datagram_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -5129,9 +5184,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_datagram_socket.hpp]
+['Header: ][^asio/basic_datagram_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -5425,9 +5480,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_datagram_socket.hpp]
+['Header: ][^asio/basic_datagram_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -5629,9 +5684,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_datagram_socket.hpp]
+['Header: ][^asio/basic_datagram_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -5684,9 +5739,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_datagram_socket.hpp]
+['Header: ][^asio/basic_datagram_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -6086,7 +6141,9 @@
 
      Construct a basic_socket on an existing native socket. 
 
-     Move-construct a basic_socket from another. ]
+     Move-construct a basic_socket from another. 
+
+     Move-construct a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -6172,7 +6229,9 @@
   
   [
     [[link asio.reference.basic_socket.operator_eq_ [*operator=]]]
-    [Move-assign a basic_socket from another. ]
+    [Move-assign a basic_socket from another. 
+
+     Move-assign a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -6265,18 +6324,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_datagram_socket.hpp]
+['Header: ][^asio/basic_datagram_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -6349,9 +6408,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_datagram_socket.hpp]
+['Header: ][^asio/basic_datagram_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -6442,9 +6501,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_datagram_socket.hpp]
+['Header: ][^asio/basic_datagram_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -6814,9 +6873,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_datagram_socket.hpp]
+['Header: ][^asio/basic_datagram_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -6992,9 +7051,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_datagram_socket.hpp]
+['Header: ][^asio/basic_datagram_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -7121,13 +7180,34 @@
 
 [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 & ``[link asio.reference.basic_datagram_socket.operator_eq_.overload1 operator=]``(
+      basic_datagram_socket && other);
+  ``  [''''&raquo;''' [link asio.reference.basic_datagram_socket.operator_eq_.overload1 more...]]``
+
+
+Move-assign a [link asio.reference.basic_datagram_socket `basic_datagram_socket`] from a socket of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.DatagramSocketService DatagramSocketService1]``>
+  enable_if< is_convertible< Protocol1, Protocol >::value, basic_datagram_socket >::type & ``[link asio.reference.basic_datagram_socket.operator_eq_.overload2 operator=]``(
+      basic_datagram_socket< Protocol1, DatagramSocketService1 > && other);
+  ``  [''''&raquo;''' [link asio.reference.basic_datagram_socket.operator_eq_.overload2 more...]]``
+
+
+[section:overload1 basic_datagram_socket::operator= (1 of 2 overloads)]
+
+
+Move-assign a [link asio.reference.basic_datagram_socket `basic_datagram_socket`] from another. 
+
+
   basic_datagram_socket & operator=(
       basic_datagram_socket && other);
 
@@ -7156,6 +7236,45 @@
 
 
 
+[section:overload2 basic_datagram_socket::operator= (2 of 2 overloads)]
+
+
+Move-assign a [link asio.reference.basic_datagram_socket `basic_datagram_socket`] from a socket of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.DatagramSocketService DatagramSocketService1]``>
+  enable_if< is_convertible< Protocol1, Protocol >::value, basic_datagram_socket >::type & operator=(
+      basic_datagram_socket< Protocol1, DatagramSocketService1 > && 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 moved-from object is in the same state as if constructed using the `basic_datagram_socket(io_service&) constructor`. 
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:protocol_type basic_datagram_socket::protocol_type]
 
 [indexterm2 protocol_type..basic_datagram_socket] 
@@ -7168,9 +7287,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_datagram_socket.hpp]
+['Header: ][^asio/basic_datagram_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -7413,9 +7532,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_datagram_socket.hpp]
+['Header: ][^asio/basic_datagram_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -7657,9 +7776,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_datagram_socket.hpp]
+['Header: ][^asio/basic_datagram_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -7828,9 +7947,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_datagram_socket.hpp]
+['Header: ][^asio/basic_datagram_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -8073,9 +8192,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_datagram_socket.hpp]
+['Header: ][^asio/basic_datagram_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -8127,9 +8246,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_datagram_socket.hpp]
+['Header: ][^asio/basic_datagram_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -8365,9 +8484,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_datagram_socket.hpp]
+['Header: ][^asio/basic_datagram_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -8821,9 +8940,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Examples]
@@ -8908,9 +9027,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_deadline_timer.hpp]
+['Header: ][^asio/basic_deadline_timer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:async_wait basic_deadline_timer::async_wait]
@@ -8921,7 +9040,7 @@
 
   template<
       typename ``[link asio.reference.WaitHandler WaitHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_wait(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_wait(
       WaitHandler handler);
 
 
@@ -9309,9 +9428,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_deadline_timer.hpp]
+['Header: ][^asio/basic_deadline_timer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -9758,9 +9877,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_deadline_timer.hpp]
+['Header: ][^asio/basic_deadline_timer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -9806,9 +9925,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_deadline_timer.hpp]
+['Header: ][^asio/basic_deadline_timer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -9827,9 +9946,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_deadline_timer.hpp]
+['Header: ][^asio/basic_deadline_timer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -9848,9 +9967,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_deadline_timer.hpp]
+['Header: ][^asio/basic_deadline_timer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -10031,9 +10150,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_io_object.hpp]
+['Header: ][^asio/basic_io_object.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:basic_io_object basic_io_object::basic_io_object]
 
@@ -10241,9 +10360,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_io_object.hpp]
+['Header: ][^asio/basic_io_object.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -10313,9 +10432,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_io_object.hpp]
+['Header: ][^asio/basic_io_object.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -10572,7 +10691,9 @@
 
      Construct a basic_raw_socket on an existing native socket. 
 
-     Move-construct a basic_raw_socket from another. ]
+     Move-construct a basic_raw_socket from another. 
+
+     Move-construct a basic_raw_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -10658,7 +10779,9 @@
   
   [
     [[link asio.reference.basic_raw_socket.operator_eq_ [*operator=]]]
-    [Move-assign a basic_raw_socket from another. ]
+    [Move-assign a basic_raw_socket from another. 
+
+     Move-assign a basic_raw_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -10766,17 +10889,17 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_raw_socket.hpp]
+['Header: ][^asio/basic_raw_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:assign basic_raw_socket::assign]
 
@@ -10848,7 +10971,7 @@
 
   template<
       typename ``[link asio.reference.ConnectHandler ConnectHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_connect(
       const endpoint_type & peer_endpoint,
       ConnectHandler handler);
 
@@ -10913,7 +11036,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_raw_socket.async_receive.overload1 async_receive]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_raw_socket.async_receive.overload1 async_receive]``(
       const MutableBufferSequence & buffers,
       ReadHandler handler);
   ``  [''''&raquo;''' [link asio.reference.basic_raw_socket.async_receive.overload1 more...]]``
@@ -10921,7 +11044,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_raw_socket.async_receive.overload2 async_receive]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_raw_socket.async_receive.overload2 async_receive]``(
       const MutableBufferSequence & buffers,
       socket_base::message_flags flags,
       ReadHandler handler);
@@ -10937,7 +11060,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_receive(
       const MutableBufferSequence & buffers,
       ReadHandler handler);
 
@@ -10994,7 +11117,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_receive(
       const MutableBufferSequence & buffers,
       socket_base::message_flags flags,
       ReadHandler handler);
@@ -11045,7 +11168,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_raw_socket.async_receive_from.overload1 async_receive_from]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_raw_socket.async_receive_from.overload1 async_receive_from]``(
       const MutableBufferSequence & buffers,
       endpoint_type & sender_endpoint,
       ReadHandler handler);
@@ -11054,7 +11177,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_raw_socket.async_receive_from.overload2 async_receive_from]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_raw_socket.async_receive_from.overload2 async_receive_from]``(
       const MutableBufferSequence & buffers,
       endpoint_type & sender_endpoint,
       socket_base::message_flags flags,
@@ -11071,7 +11194,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive_from(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_receive_from(
       const MutableBufferSequence & buffers,
       endpoint_type & sender_endpoint,
       ReadHandler handler);
@@ -11127,7 +11250,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive_from(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_receive_from(
       const MutableBufferSequence & buffers,
       endpoint_type & sender_endpoint,
       socket_base::message_flags flags,
@@ -11176,7 +11299,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_raw_socket.async_send.overload1 async_send]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_raw_socket.async_send.overload1 async_send]``(
       const ConstBufferSequence & buffers,
       WriteHandler handler);
   ``  [''''&raquo;''' [link asio.reference.basic_raw_socket.async_send.overload1 more...]]``
@@ -11184,7 +11307,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_raw_socket.async_send.overload2 async_send]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_raw_socket.async_send.overload2 async_send]``(
       const ConstBufferSequence & buffers,
       socket_base::message_flags flags,
       WriteHandler handler);
@@ -11200,7 +11323,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_send(
       const ConstBufferSequence & buffers,
       WriteHandler handler);
 
@@ -11257,7 +11380,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_send(
       const ConstBufferSequence & buffers,
       socket_base::message_flags flags,
       WriteHandler handler);
@@ -11308,7 +11431,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_raw_socket.async_send_to.overload1 async_send_to]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_raw_socket.async_send_to.overload1 async_send_to]``(
       const ConstBufferSequence & buffers,
       const endpoint_type & destination,
       WriteHandler handler);
@@ -11317,7 +11440,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_raw_socket.async_send_to.overload2 async_send_to]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_raw_socket.async_send_to.overload2 async_send_to]``(
       const ConstBufferSequence & buffers,
       const endpoint_type & destination,
       socket_base::message_flags flags,
@@ -11334,7 +11457,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send_to(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_send_to(
       const ConstBufferSequence & buffers,
       const endpoint_type & destination,
       WriteHandler handler);
@@ -11392,7 +11515,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send_to(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_send_to(
       const ConstBufferSequence & buffers,
       const endpoint_type & destination,
       socket_base::message_flags flags,
@@ -11655,7 +11778,19 @@
   ``  [''''&raquo;''' [link asio.reference.basic_raw_socket.basic_raw_socket.overload5 more...]]``
 
 
-[section:overload1 basic_raw_socket::basic_raw_socket (1 of 5 overloads)]
+Move-construct a [link asio.reference.basic_raw_socket `basic_raw_socket`] from a socket of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.RawSocketService RawSocketService1]``>
+  ``[link asio.reference.basic_raw_socket.basic_raw_socket.overload6 basic_raw_socket]``(
+      basic_raw_socket< Protocol1, RawSocketService1 > && other,
+      typename enable_if< is_convertible< Protocol1, Protocol >::value >::type *  = 0);
+  ``  [''''&raquo;''' [link asio.reference.basic_raw_socket.basic_raw_socket.overload6 more...]]``
+
+
+[section:overload1 basic_raw_socket::basic_raw_socket (1 of 6 overloads)]
 
 
 Construct a [link asio.reference.basic_raw_socket `basic_raw_socket`] without opening it. 
@@ -11684,7 +11819,7 @@
 
 
 
-[section:overload2 basic_raw_socket::basic_raw_socket (2 of 5 overloads)]
+[section:overload2 basic_raw_socket::basic_raw_socket (2 of 6 overloads)]
 
 
 Construct and open a [link asio.reference.basic_raw_socket `basic_raw_socket`]. 
@@ -11726,7 +11861,7 @@
 
 
 
-[section:overload3 basic_raw_socket::basic_raw_socket (3 of 5 overloads)]
+[section:overload3 basic_raw_socket::basic_raw_socket (3 of 6 overloads)]
 
 
 Construct a [link asio.reference.basic_raw_socket `basic_raw_socket`], opening it and binding it to the given local endpoint. 
@@ -11768,7 +11903,7 @@
 
 
 
-[section:overload4 basic_raw_socket::basic_raw_socket (4 of 5 overloads)]
+[section:overload4 basic_raw_socket::basic_raw_socket (4 of 6 overloads)]
 
 
 Construct a [link asio.reference.basic_raw_socket `basic_raw_socket`] on an existing native socket. 
@@ -11813,7 +11948,7 @@
 
 
 
-[section:overload5 basic_raw_socket::basic_raw_socket (5 of 5 overloads)]
+[section:overload5 basic_raw_socket::basic_raw_socket (5 of 6 overloads)]
 
 
 Move-construct a [link asio.reference.basic_raw_socket `basic_raw_socket`] from another. 
@@ -11846,6 +11981,44 @@
 [endsect]
 
 
+
+[section:overload6 basic_raw_socket::basic_raw_socket (6 of 6 overloads)]
+
+
+Move-construct a [link asio.reference.basic_raw_socket `basic_raw_socket`] from a socket of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.RawSocketService RawSocketService1]``>
+  basic_raw_socket(
+      basic_raw_socket< Protocol1, RawSocketService1 > && other,
+      typename enable_if< is_convertible< Protocol1, Protocol >::value >::type *  = 0);
+
+
+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 moved-from object is in the same state as if constructed using the `basic_raw_socket(io_service&) constructor`. 
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 [section:bind basic_raw_socket::bind]
@@ -12019,9 +12192,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_raw_socket.hpp]
+['Header: ][^asio/basic_raw_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -12062,9 +12235,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_raw_socket.hpp]
+['Header: ][^asio/basic_raw_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -12466,9 +12639,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_raw_socket.hpp]
+['Header: ][^asio/basic_raw_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -12520,9 +12693,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_raw_socket.hpp]
+['Header: ][^asio/basic_raw_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -12574,9 +12747,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_raw_socket.hpp]
+['Header: ][^asio/basic_raw_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -12595,9 +12768,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_raw_socket.hpp]
+['Header: ][^asio/basic_raw_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -12891,9 +13064,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_raw_socket.hpp]
+['Header: ][^asio/basic_raw_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -13095,9 +13268,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_raw_socket.hpp]
+['Header: ][^asio/basic_raw_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -13150,9 +13323,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_raw_socket.hpp]
+['Header: ][^asio/basic_raw_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -13552,7 +13725,9 @@
 
      Construct a basic_socket on an existing native socket. 
 
-     Move-construct a basic_socket from another. ]
+     Move-construct a basic_socket from another. 
+
+     Move-construct a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -13638,7 +13813,9 @@
   
   [
     [[link asio.reference.basic_socket.operator_eq_ [*operator=]]]
-    [Move-assign a basic_socket from another. ]
+    [Move-assign a basic_socket from another. 
+
+     Move-assign a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -13731,18 +13908,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_raw_socket.hpp]
+['Header: ][^asio/basic_raw_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -13815,9 +13992,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_raw_socket.hpp]
+['Header: ][^asio/basic_raw_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -13908,9 +14085,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_raw_socket.hpp]
+['Header: ][^asio/basic_raw_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -14280,9 +14457,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_raw_socket.hpp]
+['Header: ][^asio/basic_raw_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -14458,9 +14635,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_raw_socket.hpp]
+['Header: ][^asio/basic_raw_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -14587,13 +14764,34 @@
 
 [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 & ``[link asio.reference.basic_raw_socket.operator_eq_.overload1 operator=]``(
+      basic_raw_socket && other);
+  ``  [''''&raquo;''' [link asio.reference.basic_raw_socket.operator_eq_.overload1 more...]]``
+
+
+Move-assign a [link asio.reference.basic_raw_socket `basic_raw_socket`] from a socket of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.RawSocketService RawSocketService1]``>
+  enable_if< is_convertible< Protocol1, Protocol >::value, basic_raw_socket >::type & ``[link asio.reference.basic_raw_socket.operator_eq_.overload2 operator=]``(
+      basic_raw_socket< Protocol1, RawSocketService1 > && other);
+  ``  [''''&raquo;''' [link asio.reference.basic_raw_socket.operator_eq_.overload2 more...]]``
+
+
+[section:overload1 basic_raw_socket::operator= (1 of 2 overloads)]
+
+
+Move-assign a [link asio.reference.basic_raw_socket `basic_raw_socket`] from another. 
+
+
   basic_raw_socket & operator=(
       basic_raw_socket && other);
 
@@ -14622,6 +14820,45 @@
 
 
 
+[section:overload2 basic_raw_socket::operator= (2 of 2 overloads)]
+
+
+Move-assign a [link asio.reference.basic_raw_socket `basic_raw_socket`] from a socket of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.RawSocketService RawSocketService1]``>
+  enable_if< is_convertible< Protocol1, Protocol >::value, basic_raw_socket >::type & operator=(
+      basic_raw_socket< Protocol1, RawSocketService1 > && 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 moved-from object is in the same state as if constructed using the `basic_raw_socket(io_service&) constructor`. 
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:protocol_type basic_raw_socket::protocol_type]
 
 [indexterm2 protocol_type..basic_raw_socket] 
@@ -14634,9 +14871,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_raw_socket.hpp]
+['Header: ][^asio/basic_raw_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -14879,9 +15116,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_raw_socket.hpp]
+['Header: ][^asio/basic_raw_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -15123,9 +15360,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_raw_socket.hpp]
+['Header: ][^asio/basic_raw_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -15294,9 +15531,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_raw_socket.hpp]
+['Header: ][^asio/basic_raw_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -15539,9 +15776,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_raw_socket.hpp]
+['Header: ][^asio/basic_raw_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -15593,9 +15830,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_raw_socket.hpp]
+['Header: ][^asio/basic_raw_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -15831,9 +16068,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_raw_socket.hpp]
+['Header: ][^asio/basic_raw_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -16354,7 +16591,9 @@
 
      Construct a basic_seq_packet_socket on an existing native socket. 
 
-     Move-construct a basic_seq_packet_socket from another. ]
+     Move-construct a basic_seq_packet_socket from another. 
+
+     Move-construct a basic_seq_packet_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -16440,7 +16679,9 @@
   
   [
     [[link asio.reference.basic_seq_packet_socket.operator_eq_ [*operator=]]]
-    [Move-assign a basic_seq_packet_socket from another. ]
+    [Move-assign a basic_seq_packet_socket from another. 
+
+     Move-assign a basic_seq_packet_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -16540,17 +16781,17 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_seq_packet_socket.hpp]
+['Header: ][^asio/basic_seq_packet_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:assign basic_seq_packet_socket::assign]
 
@@ -16622,7 +16863,7 @@
 
   template<
       typename ``[link asio.reference.ConnectHandler ConnectHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_connect(
       const endpoint_type & peer_endpoint,
       ConnectHandler handler);
 
@@ -16687,7 +16928,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_seq_packet_socket.async_receive.overload1 async_receive]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_seq_packet_socket.async_receive.overload1 async_receive]``(
       const MutableBufferSequence & buffers,
       socket_base::message_flags & out_flags,
       ReadHandler handler);
@@ -16696,7 +16937,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_seq_packet_socket.async_receive.overload2 async_receive]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_seq_packet_socket.async_receive.overload2 async_receive]``(
       const MutableBufferSequence & buffers,
       socket_base::message_flags in_flags,
       socket_base::message_flags & out_flags,
@@ -16713,7 +16954,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_receive(
       const MutableBufferSequence & buffers,
       socket_base::message_flags & out_flags,
       ReadHandler handler);
@@ -16768,7 +17009,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_receive(
       const MutableBufferSequence & buffers,
       socket_base::message_flags in_flags,
       socket_base::message_flags & out_flags,
@@ -16830,7 +17071,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_send(
       const ConstBufferSequence & buffers,
       socket_base::message_flags flags,
       WriteHandler handler);
@@ -17098,7 +17339,19 @@
   ``  [''''&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)]
+Move-construct a [link asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] from a socket of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.SeqPacketSocketService SeqPacketSocketService1]``>
+  ``[link asio.reference.basic_seq_packet_socket.basic_seq_packet_socket.overload6 basic_seq_packet_socket]``(
+      basic_seq_packet_socket< Protocol1, SeqPacketSocketService1 > && other,
+      typename enable_if< is_convertible< Protocol1, Protocol >::value >::type *  = 0);
+  ``  [''''&raquo;''' [link asio.reference.basic_seq_packet_socket.basic_seq_packet_socket.overload6 more...]]``
+
+
+[section:overload1 basic_seq_packet_socket::basic_seq_packet_socket (1 of 6 overloads)]
 
 
 Construct a [link asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] without opening it. 
@@ -17127,7 +17380,7 @@
 
 
 
-[section:overload2 basic_seq_packet_socket::basic_seq_packet_socket (2 of 5 overloads)]
+[section:overload2 basic_seq_packet_socket::basic_seq_packet_socket (2 of 6 overloads)]
 
 
 Construct and open a [link asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`]. 
@@ -17169,7 +17422,7 @@
 
 
 
-[section:overload3 basic_seq_packet_socket::basic_seq_packet_socket (3 of 5 overloads)]
+[section:overload3 basic_seq_packet_socket::basic_seq_packet_socket (3 of 6 overloads)]
 
 
 Construct a [link asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`], opening it and binding it to the given local endpoint. 
@@ -17211,7 +17464,7 @@
 
 
 
-[section:overload4 basic_seq_packet_socket::basic_seq_packet_socket (4 of 5 overloads)]
+[section:overload4 basic_seq_packet_socket::basic_seq_packet_socket (4 of 6 overloads)]
 
 
 Construct a [link asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] on an existing native socket. 
@@ -17256,7 +17509,7 @@
 
 
 
-[section:overload5 basic_seq_packet_socket::basic_seq_packet_socket (5 of 5 overloads)]
+[section:overload5 basic_seq_packet_socket::basic_seq_packet_socket (5 of 6 overloads)]
 
 
 Move-construct a [link asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] from another. 
@@ -17289,6 +17542,44 @@
 [endsect]
 
 
+
+[section:overload6 basic_seq_packet_socket::basic_seq_packet_socket (6 of 6 overloads)]
+
+
+Move-construct a [link asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] from a socket of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.SeqPacketSocketService SeqPacketSocketService1]``>
+  basic_seq_packet_socket(
+      basic_seq_packet_socket< Protocol1, SeqPacketSocketService1 > && other,
+      typename enable_if< is_convertible< Protocol1, Protocol >::value >::type *  = 0);
+
+
+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 moved-from object is in the same state as if constructed using the `basic_seq_packet_socket(io_service&) constructor`. 
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 [section:bind basic_seq_packet_socket::bind]
@@ -17462,9 +17753,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_seq_packet_socket.hpp]
+['Header: ][^asio/basic_seq_packet_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -17505,9 +17796,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_seq_packet_socket.hpp]
+['Header: ][^asio/basic_seq_packet_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -17909,9 +18200,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_seq_packet_socket.hpp]
+['Header: ][^asio/basic_seq_packet_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -17963,9 +18254,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_seq_packet_socket.hpp]
+['Header: ][^asio/basic_seq_packet_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -18017,9 +18308,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_seq_packet_socket.hpp]
+['Header: ][^asio/basic_seq_packet_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -18038,9 +18329,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_seq_packet_socket.hpp]
+['Header: ][^asio/basic_seq_packet_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -18334,9 +18625,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_seq_packet_socket.hpp]
+['Header: ][^asio/basic_seq_packet_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -18538,9 +18829,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_seq_packet_socket.hpp]
+['Header: ][^asio/basic_seq_packet_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -18593,9 +18884,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_seq_packet_socket.hpp]
+['Header: ][^asio/basic_seq_packet_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -18995,7 +19286,9 @@
 
      Construct a basic_socket on an existing native socket. 
 
-     Move-construct a basic_socket from another. ]
+     Move-construct a basic_socket from another. 
+
+     Move-construct a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -19081,7 +19374,9 @@
   
   [
     [[link asio.reference.basic_socket.operator_eq_ [*operator=]]]
-    [Move-assign a basic_socket from another. ]
+    [Move-assign a basic_socket from another. 
+
+     Move-assign a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -19174,18 +19469,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_seq_packet_socket.hpp]
+['Header: ][^asio/basic_seq_packet_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -19258,9 +19553,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_seq_packet_socket.hpp]
+['Header: ][^asio/basic_seq_packet_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -19351,9 +19646,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_seq_packet_socket.hpp]
+['Header: ][^asio/basic_seq_packet_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -19723,9 +20018,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_seq_packet_socket.hpp]
+['Header: ][^asio/basic_seq_packet_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -19901,9 +20196,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_seq_packet_socket.hpp]
+['Header: ][^asio/basic_seq_packet_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -20030,13 +20325,34 @@
 
 [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 & ``[link asio.reference.basic_seq_packet_socket.operator_eq_.overload1 operator=]``(
+      basic_seq_packet_socket && other);
+  ``  [''''&raquo;''' [link asio.reference.basic_seq_packet_socket.operator_eq_.overload1 more...]]``
+
+
+Move-assign a [link asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] from a socket of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.SeqPacketSocketService SeqPacketSocketService1]``>
+  enable_if< is_convertible< Protocol1, Protocol >::value, basic_seq_packet_socket >::type & ``[link asio.reference.basic_seq_packet_socket.operator_eq_.overload2 operator=]``(
+      basic_seq_packet_socket< Protocol1, SeqPacketSocketService1 > && other);
+  ``  [''''&raquo;''' [link asio.reference.basic_seq_packet_socket.operator_eq_.overload2 more...]]``
+
+
+[section:overload1 basic_seq_packet_socket::operator= (1 of 2 overloads)]
+
+
+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);
 
@@ -20065,6 +20381,45 @@
 
 
 
+[section:overload2 basic_seq_packet_socket::operator= (2 of 2 overloads)]
+
+
+Move-assign a [link asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] from a socket of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.SeqPacketSocketService SeqPacketSocketService1]``>
+  enable_if< is_convertible< Protocol1, Protocol >::value, basic_seq_packet_socket >::type & operator=(
+      basic_seq_packet_socket< Protocol1, SeqPacketSocketService1 > && 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 moved-from object is in the same state as if constructed using the `basic_seq_packet_socket(io_service&) constructor`. 
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:protocol_type basic_seq_packet_socket::protocol_type]
 
 [indexterm2 protocol_type..basic_seq_packet_socket] 
@@ -20077,9 +20432,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_seq_packet_socket.hpp]
+['Header: ][^asio/basic_seq_packet_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -20343,9 +20698,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_seq_packet_socket.hpp]
+['Header: ][^asio/basic_seq_packet_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -20397,9 +20752,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_seq_packet_socket.hpp]
+['Header: ][^asio/basic_seq_packet_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -20568,9 +20923,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_seq_packet_socket.hpp]
+['Header: ][^asio/basic_seq_packet_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -20751,9 +21106,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_seq_packet_socket.hpp]
+['Header: ][^asio/basic_seq_packet_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -20805,9 +21160,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_seq_packet_socket.hpp]
+['Header: ][^asio/basic_seq_packet_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -20853,9 +21208,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_seq_packet_socket.hpp]
+['Header: ][^asio/basic_seq_packet_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -21354,17 +21709,17 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_serial_port.hpp]
+['Header: ][^asio/basic_serial_port.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:assign basic_serial_port::assign]
 
@@ -21424,7 +21779,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_some(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_read_some(
       const MutableBufferSequence & buffers,
       ReadHandler handler);
 
@@ -21481,7 +21836,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_some(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_write_some(
       const ConstBufferSequence & buffers,
       WriteHandler handler);
 
@@ -22137,9 +22492,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_serial_port.hpp]
+['Header: ][^asio/basic_serial_port.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -22415,18 +22770,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_serial_port.hpp]
+['Header: ][^asio/basic_serial_port.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -22477,9 +22832,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_serial_port.hpp]
+['Header: ][^asio/basic_serial_port.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -22498,9 +22853,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_serial_port.hpp]
+['Header: ][^asio/basic_serial_port.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -22866,9 +23221,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_serial_port.hpp]
+['Header: ][^asio/basic_serial_port.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -23219,9 +23574,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Example]
@@ -23276,9 +23631,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_signal_set.hpp]
+['Header: ][^asio/basic_signal_set.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:add basic_signal_set::add]
 
@@ -23377,7 +23732,7 @@
 
   template<
       typename ``[link asio.reference.SignalHandler SignalHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_wait(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_wait(
       SignalHandler handler);
 
 
@@ -23961,9 +24316,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_signal_set.hpp]
+['Header: ][^asio/basic_signal_set.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -24107,9 +24462,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_signal_set.hpp]
+['Header: ][^asio/basic_signal_set.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -24326,7 +24681,9 @@
 
      Construct a basic_socket on an existing native socket. 
 
-     Move-construct a basic_socket from another. ]
+     Move-construct a basic_socket from another. 
+
+     Move-construct a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -24412,7 +24769,9 @@
   
   [
     [[link asio.reference.basic_socket.operator_eq_ [*operator=]]]
-    [Move-assign a basic_socket from another. ]
+    [Move-assign a basic_socket from another. 
+
+     Move-assign a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -24505,17 +24864,17 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket.hpp]
+['Header: ][^asio/basic_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:assign basic_socket::assign]
 
@@ -24578,7 +24937,7 @@
 
   template<
       typename ``[link asio.reference.ConnectHandler ConnectHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_connect(
       const endpoint_type & peer_endpoint,
       ConnectHandler handler);
 
@@ -24845,7 +25204,19 @@
   ``  [''''&raquo;''' [link asio.reference.basic_socket.basic_socket.overload5 more...]]``
 
 
-[section:overload1 basic_socket::basic_socket (1 of 5 overloads)]
+Move-construct a [link asio.reference.basic_socket `basic_socket`] from a socket of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.SocketService SocketService1]``>
+  ``[link asio.reference.basic_socket.basic_socket.overload6 basic_socket]``(
+      basic_socket< Protocol1, SocketService1 > && other,
+      typename enable_if< is_convertible< Protocol1, Protocol >::value >::type *  = 0);
+  ``  [''''&raquo;''' [link asio.reference.basic_socket.basic_socket.overload6 more...]]``
+
+
+[section:overload1 basic_socket::basic_socket (1 of 6 overloads)]
 
 
 Construct a [link asio.reference.basic_socket `basic_socket`] without opening it. 
@@ -24874,7 +25245,7 @@
 
 
 
-[section:overload2 basic_socket::basic_socket (2 of 5 overloads)]
+[section:overload2 basic_socket::basic_socket (2 of 6 overloads)]
 
 
 Construct and open a [link asio.reference.basic_socket `basic_socket`]. 
@@ -24916,7 +25287,7 @@
 
 
 
-[section:overload3 basic_socket::basic_socket (3 of 5 overloads)]
+[section:overload3 basic_socket::basic_socket (3 of 6 overloads)]
 
 
 Construct a [link asio.reference.basic_socket `basic_socket`], opening it and binding it to the given local endpoint. 
@@ -24958,7 +25329,7 @@
 
 
 
-[section:overload4 basic_socket::basic_socket (4 of 5 overloads)]
+[section:overload4 basic_socket::basic_socket (4 of 6 overloads)]
 
 
 Construct a [link asio.reference.basic_socket `basic_socket`] on an existing native socket. 
@@ -25003,7 +25374,7 @@
 
 
 
-[section:overload5 basic_socket::basic_socket (5 of 5 overloads)]
+[section:overload5 basic_socket::basic_socket (5 of 6 overloads)]
 
 
 Move-construct a [link asio.reference.basic_socket `basic_socket`] from another. 
@@ -25036,6 +25407,44 @@
 [endsect]
 
 
+
+[section:overload6 basic_socket::basic_socket (6 of 6 overloads)]
+
+
+Move-construct a [link asio.reference.basic_socket `basic_socket`] from a socket of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.SocketService SocketService1]``>
+  basic_socket(
+      basic_socket< Protocol1, SocketService1 > && other,
+      typename enable_if< is_convertible< Protocol1, Protocol >::value >::type *  = 0);
+
+
+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 moved-from object is in the same state as if constructed using the `basic_socket(io_service&) constructor`. 
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 [section:bind basic_socket::bind]
@@ -25203,9 +25612,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket.hpp]
+['Header: ][^asio/basic_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -25246,9 +25655,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket.hpp]
+['Header: ][^asio/basic_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -25632,9 +26041,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket.hpp]
+['Header: ][^asio/basic_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -25686,9 +26095,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket.hpp]
+['Header: ][^asio/basic_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -25740,9 +26149,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket.hpp]
+['Header: ][^asio/basic_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -25761,9 +26170,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket.hpp]
+['Header: ][^asio/basic_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -26055,9 +26464,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket.hpp]
+['Header: ][^asio/basic_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -26254,9 +26663,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket.hpp]
+['Header: ][^asio/basic_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -26309,9 +26718,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket.hpp]
+['Header: ][^asio/basic_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -26696,7 +27105,9 @@
 
      Construct a basic_socket on an existing native socket. 
 
-     Move-construct a basic_socket from another. ]
+     Move-construct a basic_socket from another. 
+
+     Move-construct a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -26782,7 +27193,9 @@
   
   [
     [[link asio.reference.basic_socket.operator_eq_ [*operator=]]]
-    [Move-assign a basic_socket from another. ]
+    [Move-assign a basic_socket from another. 
+
+     Move-assign a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -26875,18 +27288,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket.hpp]
+['Header: ][^asio/basic_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -26959,9 +27372,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket.hpp]
+['Header: ][^asio/basic_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -27046,9 +27459,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket.hpp]
+['Header: ][^asio/basic_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -27409,9 +27822,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket.hpp]
+['Header: ][^asio/basic_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -27578,9 +27991,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket.hpp]
+['Header: ][^asio/basic_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -27701,13 +28114,34 @@
 
 [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 & ``[link asio.reference.basic_socket.operator_eq_.overload1 operator=]``(
+      basic_socket && other);
+  ``  [''''&raquo;''' [link asio.reference.basic_socket.operator_eq_.overload1 more...]]``
+
+
+Move-assign a [link asio.reference.basic_socket `basic_socket`] from a socket of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.SocketService SocketService1]``>
+  enable_if< is_convertible< Protocol1, Protocol >::value, basic_socket >::type & ``[link asio.reference.basic_socket.operator_eq_.overload2 operator=]``(
+      basic_socket< Protocol1, SocketService1 > && other);
+  ``  [''''&raquo;''' [link asio.reference.basic_socket.operator_eq_.overload2 more...]]``
+
+
+[section:overload1 basic_socket::operator= (1 of 2 overloads)]
+
+
+Move-assign a [link asio.reference.basic_socket `basic_socket`] from another. 
+
+
   basic_socket & operator=(
       basic_socket && other);
 
@@ -27736,6 +28170,45 @@
 
 
 
+[section:overload2 basic_socket::operator= (2 of 2 overloads)]
+
+
+Move-assign a [link asio.reference.basic_socket `basic_socket`] from a socket of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.SocketService SocketService1]``>
+  enable_if< is_convertible< Protocol1, Protocol >::value, basic_socket >::type & operator=(
+      basic_socket< Protocol1, SocketService1 > && 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 moved-from object is in the same state as if constructed using the `basic_socket(io_service&) constructor`. 
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:protocol_type basic_socket::protocol_type]
 
 [indexterm2 protocol_type..basic_socket] 
@@ -27748,9 +28221,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket.hpp]
+['Header: ][^asio/basic_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -27802,9 +28275,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket.hpp]
+['Header: ][^asio/basic_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -27856,9 +28329,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket.hpp]
+['Header: ][^asio/basic_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -28021,9 +28494,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket.hpp]
+['Header: ][^asio/basic_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -28075,9 +28548,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket.hpp]
+['Header: ][^asio/basic_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -28129,9 +28602,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket.hpp]
+['Header: ][^asio/basic_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -28177,9 +28650,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket.hpp]
+['Header: ][^asio/basic_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -28687,7 +29160,9 @@
 
      Construct a basic_socket_acceptor on an existing native acceptor. 
 
-     Move-construct a basic_socket_acceptor from another. ]
+     Move-construct a basic_socket_acceptor from another. 
+
+     Move-construct a basic_socket_acceptor from an acceptor of another protocol type. ]
   ]
   
   [
@@ -28766,7 +29241,9 @@
   
   [
     [[link asio.reference.basic_socket_acceptor.operator_eq_ [*operator=]]]
-    [Move-assign a basic_socket_acceptor from another. ]
+    [Move-assign a basic_socket_acceptor from another. 
+
+     Move-assign a basic_socket_acceptor from an acceptor of another protocol type. ]
   ]
   
   [
@@ -28844,9 +29321,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Example]
@@ -28867,9 +29344,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_acceptor.hpp]
+['Header: ][^asio/basic_socket_acceptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:accept basic_socket_acceptor::accept]
 
@@ -28878,16 +29355,20 @@
 
 
   template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
       typename ``[link asio.reference.SocketService SocketService]``>
   void ``[link asio.reference.basic_socket_acceptor.accept.overload1 accept]``(
-      basic_socket< protocol_type, SocketService > & peer);
+      basic_socket< Protocol1, SocketService > & peer,
+      typename enable_if< is_convertible< Protocol, Protocol1 >::value >::type *  = 0);
   ``  [''''&raquo;''' [link asio.reference.basic_socket_acceptor.accept.overload1 more...]]``
 
   template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
       typename ``[link asio.reference.SocketService SocketService]``>
   asio::error_code ``[link asio.reference.basic_socket_acceptor.accept.overload2 accept]``(
-      basic_socket< protocol_type, SocketService > & peer,
-      asio::error_code & ec);
+      basic_socket< Protocol1, SocketService > & peer,
+      asio::error_code & ec,
+      typename enable_if< is_convertible< Protocol, Protocol1 >::value >::type *  = 0);
   ``  [''''&raquo;''' [link asio.reference.basic_socket_acceptor.accept.overload2 more...]]``
 
 
@@ -28917,9 +29398,11 @@
 
 
   template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
       typename ``[link asio.reference.SocketService SocketService]``>
   void accept(
-      basic_socket< protocol_type, SocketService > & peer);
+      basic_socket< Protocol1, SocketService > & peer,
+      typename enable_if< is_convertible< Protocol, Protocol1 >::value >::type *  = 0);
 
 
 This function is used to accept a new connection from a peer into the given socket. The function call will block until a new connection has been accepted successfully or an error occurs.
@@ -28971,10 +29454,12 @@
 
 
   template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
       typename ``[link asio.reference.SocketService SocketService]``>
   asio::error_code accept(
-      basic_socket< protocol_type, SocketService > & peer,
-      asio::error_code & ec);
+      basic_socket< Protocol1, SocketService > & peer,
+      asio::error_code & ec,
+      typename enable_if< is_convertible< Protocol, Protocol1 >::value >::type *  = 0);
 
 
 This function is used to accept a new connection from a peer into the given socket. The function call will block until a new connection has been accepted successfully or an error occurs.
@@ -29190,17 +29675,19 @@
 
 
   template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
       typename ``[link asio.reference.SocketService SocketService]``,
       typename ``[link asio.reference.AcceptHandler AcceptHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_socket_acceptor.async_accept.overload1 async_accept]``(
-      basic_socket< protocol_type, SocketService > & peer,
-      AcceptHandler handler);
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_socket_acceptor.async_accept.overload1 async_accept]``(
+      basic_socket< Protocol1, SocketService > & peer,
+      AcceptHandler handler,
+      typename enable_if< is_convertible< Protocol, Protocol1 >::value >::type *  = 0);
   ``  [''''&raquo;''' [link asio.reference.basic_socket_acceptor.async_accept.overload1 more...]]``
 
   template<
       typename ``[link asio.reference.SocketService SocketService]``,
       typename ``[link asio.reference.AcceptHandler AcceptHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_socket_acceptor.async_accept.overload2 async_accept]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_socket_acceptor.async_accept.overload2 async_accept]``(
       basic_socket< protocol_type, SocketService > & peer,
       endpoint_type & peer_endpoint,
       AcceptHandler handler);
@@ -29214,11 +29701,13 @@
 
 
   template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
       typename ``[link asio.reference.SocketService SocketService]``,
       typename ``[link asio.reference.AcceptHandler AcceptHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_accept(
-      basic_socket< protocol_type, SocketService > & peer,
-      AcceptHandler handler);
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_accept(
+      basic_socket< Protocol1, SocketService > & peer,
+      AcceptHandler handler,
+      typename enable_if< is_convertible< Protocol, Protocol1 >::value >::type *  = 0);
 
 
 This function is used to asynchronously accept a new connection into a socket. The function call always returns immediately.
@@ -29280,7 +29769,7 @@
   template<
       typename ``[link asio.reference.SocketService SocketService]``,
       typename ``[link asio.reference.AcceptHandler AcceptHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_accept(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_accept(
       basic_socket< protocol_type, SocketService > & peer,
       endpoint_type & peer_endpoint,
       AcceptHandler handler);
@@ -29364,7 +29853,19 @@
   ``  [''''&raquo;''' [link asio.reference.basic_socket_acceptor.basic_socket_acceptor.overload5 more...]]``
 
 
-[section:overload1 basic_socket_acceptor::basic_socket_acceptor (1 of 5 overloads)]
+Move-construct a [link asio.reference.basic_socket_acceptor `basic_socket_acceptor`] from an acceptor of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.SocketAcceptorService SocketAcceptorService1]``>
+  ``[link asio.reference.basic_socket_acceptor.basic_socket_acceptor.overload6 basic_socket_acceptor]``(
+      basic_socket_acceptor< Protocol1, SocketAcceptorService1 > && other,
+      typename enable_if< is_convertible< Protocol1, Protocol >::value >::type *  = 0);
+  ``  [''''&raquo;''' [link asio.reference.basic_socket_acceptor.basic_socket_acceptor.overload6 more...]]``
+
+
+[section:overload1 basic_socket_acceptor::basic_socket_acceptor (1 of 6 overloads)]
 
 
 Construct an acceptor without opening it. 
@@ -29393,7 +29894,7 @@
 
 
 
-[section:overload2 basic_socket_acceptor::basic_socket_acceptor (2 of 5 overloads)]
+[section:overload2 basic_socket_acceptor::basic_socket_acceptor (2 of 6 overloads)]
 
 
 Construct an open acceptor. 
@@ -29435,7 +29936,7 @@
 
 
 
-[section:overload3 basic_socket_acceptor::basic_socket_acceptor (3 of 5 overloads)]
+[section:overload3 basic_socket_acceptor::basic_socket_acceptor (3 of 6 overloads)]
 
 
 Construct an acceptor opened on the given endpoint. 
@@ -29495,7 +29996,7 @@
 
 
 
-[section:overload4 basic_socket_acceptor::basic_socket_acceptor (4 of 5 overloads)]
+[section:overload4 basic_socket_acceptor::basic_socket_acceptor (4 of 6 overloads)]
 
 
 Construct a [link asio.reference.basic_socket_acceptor `basic_socket_acceptor`] on an existing native acceptor. 
@@ -29540,7 +30041,7 @@
 
 
 
-[section:overload5 basic_socket_acceptor::basic_socket_acceptor (5 of 5 overloads)]
+[section:overload5 basic_socket_acceptor::basic_socket_acceptor (5 of 6 overloads)]
 
 
 Move-construct a [link asio.reference.basic_socket_acceptor `basic_socket_acceptor`] from another. 
@@ -29573,6 +30074,44 @@
 [endsect]
 
 
+
+[section:overload6 basic_socket_acceptor::basic_socket_acceptor (6 of 6 overloads)]
+
+
+Move-construct a [link asio.reference.basic_socket_acceptor `basic_socket_acceptor`] from an acceptor of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.SocketAcceptorService SocketAcceptorService1]``>
+  basic_socket_acceptor(
+      basic_socket_acceptor< Protocol1, SocketAcceptorService1 > && other,
+      typename enable_if< is_convertible< Protocol1, Protocol >::value >::type *  = 0);
+
+
+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 moved-from object is in the same state as if constructed using the `basic_socket(io_service&) constructor`. 
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 [section:bind basic_socket_acceptor::bind]
@@ -29629,8 +30168,9 @@
 
 
    asio::ip::tcp::acceptor acceptor(io_service);
-   acceptor.open(asio::ip::tcp::v4());
-   acceptor.bind(asio::ip::tcp::endpoint(12345));
+   asio::ip::tcp::endpoint endpoint(asio::ip::tcp::v4(), 12345);
+   acceptor.open(endpoint.protocol());
+   acceptor.bind(endpoint);
 
 
 
@@ -29673,9 +30213,10 @@
 
 
    asio::ip::tcp::acceptor acceptor(io_service);
-   acceptor.open(asio::ip::tcp::v4());
+   asio::ip::tcp::endpoint endpoint(asio::ip::tcp::v4(), 12345);
+   acceptor.open(endpoint.protocol());
    asio::error_code ec;
-   acceptor.bind(asio::ip::tcp::endpoint(12345), ec);
+   acceptor.bind(endpoint, ec);
    if (ec)
    {
      // An error occurred.
@@ -29738,9 +30279,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_acceptor.hpp]
+['Header: ][^asio/basic_socket_acceptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -29781,9 +30322,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_acceptor.hpp]
+['Header: ][^asio/basic_socket_acceptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -30000,9 +30541,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_acceptor.hpp]
+['Header: ][^asio/basic_socket_acceptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -30054,9 +30595,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_acceptor.hpp]
+['Header: ][^asio/basic_socket_acceptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -30108,9 +30649,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_acceptor.hpp]
+['Header: ][^asio/basic_socket_acceptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -30129,9 +30670,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_acceptor.hpp]
+['Header: ][^asio/basic_socket_acceptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -30423,9 +30964,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_acceptor.hpp]
+['Header: ][^asio/basic_socket_acceptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -30620,9 +31161,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_acceptor.hpp]
+['Header: ][^asio/basic_socket_acceptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -30675,9 +31216,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_acceptor.hpp]
+['Header: ][^asio/basic_socket_acceptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -30966,9 +31507,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_acceptor.hpp]
+['Header: ][^asio/basic_socket_acceptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -31053,9 +31594,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_acceptor.hpp]
+['Header: ][^asio/basic_socket_acceptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -31197,9 +31738,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_acceptor.hpp]
+['Header: ][^asio/basic_socket_acceptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -31366,9 +31907,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_acceptor.hpp]
+['Header: ][^asio/basic_socket_acceptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -31489,13 +32030,34 @@
 
 [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 & ``[link asio.reference.basic_socket_acceptor.operator_eq_.overload1 operator=]``(
+      basic_socket_acceptor && other);
+  ``  [''''&raquo;''' [link asio.reference.basic_socket_acceptor.operator_eq_.overload1 more...]]``
+
+
+Move-assign a [link asio.reference.basic_socket_acceptor `basic_socket_acceptor`] from an acceptor of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.SocketAcceptorService SocketAcceptorService1]``>
+  enable_if< is_convertible< Protocol1, Protocol >::value, basic_socket_acceptor >::type & ``[link asio.reference.basic_socket_acceptor.operator_eq_.overload2 operator=]``(
+      basic_socket_acceptor< Protocol1, SocketAcceptorService1 > && other);
+  ``  [''''&raquo;''' [link asio.reference.basic_socket_acceptor.operator_eq_.overload2 more...]]``
+
+
+[section:overload1 basic_socket_acceptor::operator= (1 of 2 overloads)]
+
+
+Move-assign a [link asio.reference.basic_socket_acceptor `basic_socket_acceptor`] from another. 
+
+
   basic_socket_acceptor & operator=(
       basic_socket_acceptor && other);
 
@@ -31524,6 +32086,45 @@
 
 
 
+[section:overload2 basic_socket_acceptor::operator= (2 of 2 overloads)]
+
+
+Move-assign a [link asio.reference.basic_socket_acceptor `basic_socket_acceptor`] from an acceptor of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.SocketAcceptorService SocketAcceptorService1]``>
+  enable_if< is_convertible< Protocol1, Protocol >::value, basic_socket_acceptor >::type & operator=(
+      basic_socket_acceptor< Protocol1, SocketAcceptorService1 > && 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 moved-from object is in the same state as if constructed using the `basic_socket(io_service&) constructor`. 
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:protocol_type basic_socket_acceptor::protocol_type]
 
 [indexterm2 protocol_type..basic_socket_acceptor] 
@@ -31536,9 +32137,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_acceptor.hpp]
+['Header: ][^asio/basic_socket_acceptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -31590,9 +32191,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_acceptor.hpp]
+['Header: ][^asio/basic_socket_acceptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -31644,9 +32245,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_acceptor.hpp]
+['Header: ][^asio/basic_socket_acceptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -31698,9 +32299,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_acceptor.hpp]
+['Header: ][^asio/basic_socket_acceptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -31752,9 +32353,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_acceptor.hpp]
+['Header: ][^asio/basic_socket_acceptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -31806,9 +32407,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_acceptor.hpp]
+['Header: ][^asio/basic_socket_acceptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -31854,9 +32455,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_acceptor.hpp]
+['Header: ][^asio/basic_socket_acceptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -32126,9 +32727,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_iostream.hpp]
+['Header: ][^asio/basic_socket_iostream.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:basic_socket_iostream basic_socket_iostream::basic_socket_iostream]
 
@@ -32242,9 +32843,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_iostream.hpp]
+['Header: ][^asio/basic_socket_iostream.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -32263,9 +32864,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_iostream.hpp]
+['Header: ][^asio/basic_socket_iostream.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -32471,9 +33072,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_iostream.hpp]
+['Header: ][^asio/basic_socket_iostream.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -32933,9 +33534,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:assign basic_socket_streambuf::assign]
 
@@ -33007,7 +33608,7 @@
 
   template<
       typename ``[link asio.reference.ConnectHandler ConnectHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_connect(
       const endpoint_type & peer_endpoint,
       ConnectHandler handler);
 
@@ -33424,9 +34025,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -33467,9 +34068,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -33871,9 +34472,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -33925,9 +34526,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -33946,9 +34547,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -34000,9 +34601,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -34021,9 +34622,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -34476,9 +35077,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -34627,9 +35228,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -34698,9 +35299,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -34753,9 +35354,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -35155,7 +35756,9 @@
 
      Construct a basic_socket on an existing native socket. 
 
-     Move-construct a basic_socket from another. ]
+     Move-construct a basic_socket from another. 
+
+     Move-construct a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -35241,7 +35844,9 @@
   
   [
     [[link asio.reference.basic_socket.operator_eq_ [*operator=]]]
-    [Move-assign a basic_socket from another. ]
+    [Move-assign a basic_socket from another. 
+
+     Move-assign a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -35334,18 +35939,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -35418,9 +36023,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -35514,9 +36119,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -35889,9 +36494,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -36067,9 +36672,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -36225,9 +36830,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -36300,9 +36905,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -36354,9 +36959,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -36525,9 +37130,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -36579,9 +37184,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -36633,9 +37238,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -36681,9 +37286,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -37023,9 +37628,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -37041,9 +37646,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_socket_streambuf.hpp]
+['Header: ][^asio/basic_socket_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -37305,7 +37910,9 @@
 
      Construct a basic_stream_socket on an existing native socket. 
 
-     Move-construct a basic_stream_socket from another. ]
+     Move-construct a basic_stream_socket from another. 
+
+     Move-construct a basic_stream_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -37391,7 +37998,9 @@
   
   [
     [[link asio.reference.basic_stream_socket.operator_eq_ [*operator=]]]
-    [Move-assign a basic_stream_socket from another. ]
+    [Move-assign a basic_stream_socket from another. 
+
+     Move-assign a basic_stream_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -37501,18 +38110,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_stream_socket.hpp]
+['Header: ][^asio/basic_stream_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:assign basic_stream_socket::assign]
 
@@ -37584,7 +38193,7 @@
 
   template<
       typename ``[link asio.reference.ConnectHandler ConnectHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_connect(
       const endpoint_type & peer_endpoint,
       ConnectHandler handler);
 
@@ -37650,7 +38259,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_some(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_read_some(
       const MutableBufferSequence & buffers,
       ReadHandler handler);
 
@@ -37706,7 +38315,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_stream_socket.async_receive.overload1 async_receive]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_stream_socket.async_receive.overload1 async_receive]``(
       const MutableBufferSequence & buffers,
       ReadHandler handler);
   ``  [''''&raquo;''' [link asio.reference.basic_stream_socket.async_receive.overload1 more...]]``
@@ -37714,7 +38323,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_stream_socket.async_receive.overload2 async_receive]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_stream_socket.async_receive.overload2 async_receive]``(
       const MutableBufferSequence & buffers,
       socket_base::message_flags flags,
       ReadHandler handler);
@@ -37730,7 +38339,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_receive(
       const MutableBufferSequence & buffers,
       ReadHandler handler);
 
@@ -37787,7 +38396,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_receive(
       const MutableBufferSequence & buffers,
       socket_base::message_flags flags,
       ReadHandler handler);
@@ -37848,7 +38457,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_stream_socket.async_send.overload1 async_send]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_stream_socket.async_send.overload1 async_send]``(
       const ConstBufferSequence & buffers,
       WriteHandler handler);
   ``  [''''&raquo;''' [link asio.reference.basic_stream_socket.async_send.overload1 more...]]``
@@ -37856,7 +38465,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.basic_stream_socket.async_send.overload2 async_send]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.basic_stream_socket.async_send.overload2 async_send]``(
       const ConstBufferSequence & buffers,
       socket_base::message_flags flags,
       WriteHandler handler);
@@ -37872,7 +38481,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_send(
       const ConstBufferSequence & buffers,
       WriteHandler handler);
 
@@ -37929,7 +38538,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_send(
       const ConstBufferSequence & buffers,
       socket_base::message_flags flags,
       WriteHandler handler);
@@ -37991,7 +38600,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_some(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_write_some(
       const ConstBufferSequence & buffers,
       WriteHandler handler);
 
@@ -38261,7 +38870,19 @@
   ``  [''''&raquo;''' [link asio.reference.basic_stream_socket.basic_stream_socket.overload5 more...]]``
 
 
-[section:overload1 basic_stream_socket::basic_stream_socket (1 of 5 overloads)]
+Move-construct a [link asio.reference.basic_stream_socket `basic_stream_socket`] from a socket of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.StreamSocketService StreamSocketService1]``>
+  ``[link asio.reference.basic_stream_socket.basic_stream_socket.overload6 basic_stream_socket]``(
+      basic_stream_socket< Protocol1, StreamSocketService1 > && other,
+      typename enable_if< is_convertible< Protocol1, Protocol >::value >::type *  = 0);
+  ``  [''''&raquo;''' [link asio.reference.basic_stream_socket.basic_stream_socket.overload6 more...]]``
+
+
+[section:overload1 basic_stream_socket::basic_stream_socket (1 of 6 overloads)]
 
 
 Construct a [link asio.reference.basic_stream_socket `basic_stream_socket`] without opening it. 
@@ -38290,7 +38911,7 @@
 
 
 
-[section:overload2 basic_stream_socket::basic_stream_socket (2 of 5 overloads)]
+[section:overload2 basic_stream_socket::basic_stream_socket (2 of 6 overloads)]
 
 
 Construct and open a [link asio.reference.basic_stream_socket `basic_stream_socket`]. 
@@ -38332,7 +38953,7 @@
 
 
 
-[section:overload3 basic_stream_socket::basic_stream_socket (3 of 5 overloads)]
+[section:overload3 basic_stream_socket::basic_stream_socket (3 of 6 overloads)]
 
 
 Construct a [link asio.reference.basic_stream_socket `basic_stream_socket`], opening it and binding it to the given local endpoint. 
@@ -38374,7 +38995,7 @@
 
 
 
-[section:overload4 basic_stream_socket::basic_stream_socket (4 of 5 overloads)]
+[section:overload4 basic_stream_socket::basic_stream_socket (4 of 6 overloads)]
 
 
 Construct a [link asio.reference.basic_stream_socket `basic_stream_socket`] on an existing native socket. 
@@ -38419,7 +39040,7 @@
 
 
 
-[section:overload5 basic_stream_socket::basic_stream_socket (5 of 5 overloads)]
+[section:overload5 basic_stream_socket::basic_stream_socket (5 of 6 overloads)]
 
 
 Move-construct a [link asio.reference.basic_stream_socket `basic_stream_socket`] from another. 
@@ -38452,6 +39073,44 @@
 [endsect]
 
 
+
+[section:overload6 basic_stream_socket::basic_stream_socket (6 of 6 overloads)]
+
+
+Move-construct a [link asio.reference.basic_stream_socket `basic_stream_socket`] from a socket of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.StreamSocketService StreamSocketService1]``>
+  basic_stream_socket(
+      basic_stream_socket< Protocol1, StreamSocketService1 > && other,
+      typename enable_if< is_convertible< Protocol1, Protocol >::value >::type *  = 0);
+
+
+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 moved-from object is in the same state as if constructed using the `basic_stream_socket(io_service&) constructor`. 
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 [section:bind basic_stream_socket::bind]
@@ -38625,9 +39284,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_stream_socket.hpp]
+['Header: ][^asio/basic_stream_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -38668,9 +39327,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_stream_socket.hpp]
+['Header: ][^asio/basic_stream_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -39072,9 +39731,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_stream_socket.hpp]
+['Header: ][^asio/basic_stream_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -39126,9 +39785,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_stream_socket.hpp]
+['Header: ][^asio/basic_stream_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -39180,9 +39839,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_stream_socket.hpp]
+['Header: ][^asio/basic_stream_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -39201,9 +39860,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_stream_socket.hpp]
+['Header: ][^asio/basic_stream_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -39497,9 +40156,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_stream_socket.hpp]
+['Header: ][^asio/basic_stream_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -39701,9 +40360,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_stream_socket.hpp]
+['Header: ][^asio/basic_stream_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -39756,9 +40415,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_stream_socket.hpp]
+['Header: ][^asio/basic_stream_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -40158,7 +40817,9 @@
 
      Construct a basic_socket on an existing native socket. 
 
-     Move-construct a basic_socket from another. ]
+     Move-construct a basic_socket from another. 
+
+     Move-construct a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -40244,7 +40905,9 @@
   
   [
     [[link asio.reference.basic_socket.operator_eq_ [*operator=]]]
-    [Move-assign a basic_socket from another. ]
+    [Move-assign a basic_socket from another. 
+
+     Move-assign a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -40337,18 +41000,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_stream_socket.hpp]
+['Header: ][^asio/basic_stream_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -40421,9 +41084,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_stream_socket.hpp]
+['Header: ][^asio/basic_stream_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -40514,9 +41177,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_stream_socket.hpp]
+['Header: ][^asio/basic_stream_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -40886,9 +41549,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_stream_socket.hpp]
+['Header: ][^asio/basic_stream_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -41064,9 +41727,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_stream_socket.hpp]
+['Header: ][^asio/basic_stream_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -41193,13 +41856,34 @@
 
 [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 & ``[link asio.reference.basic_stream_socket.operator_eq_.overload1 operator=]``(
+      basic_stream_socket && other);
+  ``  [''''&raquo;''' [link asio.reference.basic_stream_socket.operator_eq_.overload1 more...]]``
+
+
+Move-assign a [link asio.reference.basic_stream_socket `basic_stream_socket`] from a socket of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.StreamSocketService StreamSocketService1]``>
+  enable_if< is_convertible< Protocol1, Protocol >::value, basic_stream_socket >::type & ``[link asio.reference.basic_stream_socket.operator_eq_.overload2 operator=]``(
+      basic_stream_socket< Protocol1, StreamSocketService1 > && other);
+  ``  [''''&raquo;''' [link asio.reference.basic_stream_socket.operator_eq_.overload2 more...]]``
+
+
+[section:overload1 basic_stream_socket::operator= (1 of 2 overloads)]
+
+
+Move-assign a [link asio.reference.basic_stream_socket `basic_stream_socket`] from another. 
+
+
   basic_stream_socket & operator=(
       basic_stream_socket && other);
 
@@ -41228,6 +41912,45 @@
 
 
 
+[section:overload2 basic_stream_socket::operator= (2 of 2 overloads)]
+
+
+Move-assign a [link asio.reference.basic_stream_socket `basic_stream_socket`] from a socket of another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
+      typename ``[link asio.reference.StreamSocketService StreamSocketService1]``>
+  enable_if< is_convertible< Protocol1, Protocol >::value, basic_stream_socket >::type & operator=(
+      basic_stream_socket< Protocol1, StreamSocketService1 > && 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 moved-from object is in the same state as if constructed using the `basic_stream_socket(io_service&) constructor`. 
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:protocol_type basic_stream_socket::protocol_type]
 
 [indexterm2 protocol_type..basic_stream_socket] 
@@ -41240,9 +41963,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_stream_socket.hpp]
+['Header: ][^asio/basic_stream_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -41625,9 +42348,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_stream_socket.hpp]
+['Header: ][^asio/basic_stream_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -41679,9 +42402,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_stream_socket.hpp]
+['Header: ][^asio/basic_stream_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -41850,9 +42573,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_stream_socket.hpp]
+['Header: ][^asio/basic_stream_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -42105,9 +42828,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_stream_socket.hpp]
+['Header: ][^asio/basic_stream_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -42159,9 +42882,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_stream_socket.hpp]
+['Header: ][^asio/basic_stream_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -42207,9 +42930,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_stream_socket.hpp]
+['Header: ][^asio/basic_stream_socket.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -42793,9 +43516,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_streambuf.hpp]
+['Header: ][^asio/basic_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:basic_streambuf basic_streambuf::basic_streambuf]
@@ -42859,9 +43582,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_streambuf.hpp]
+['Header: ][^asio/basic_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -42956,9 +43679,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_streambuf.hpp]
+['Header: ][^asio/basic_streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -43237,7 +43960,7 @@
 
 A waitable timer is always in one of two states: "expired" or "not expired". If the `wait()` or `async_wait()` function is called on an expired timer, the wait operation will complete immediately.
 
-Most applications will use the asio::waitable\_timer typedef.
+Most applications will use one of the [link asio.reference.steady_timer `steady_timer`], [link asio.reference.system_timer `system_timer`] or [link asio.reference.high_resolution_timer `high_resolution_timer`] typedefs.
 
 
 [heading Remarks]
@@ -43247,20 +43970,20 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Examples]
   
-Performing a blocking wait: 
+Performing a blocking wait (C++11): 
 
    // Construct a timer without setting an expiry time.
-   asio::waitable_timer timer(io_service);
+   asio::steady_timer timer(io_service);
 
    // Set an expiry time relative to now.
-   timer.expires_from_now(boost::posix_time::seconds(5));
+   timer.expires_from_now(std::chrono::seconds(5));
 
    // Wait for the timer to expire.
    timer.wait();
@@ -43269,7 +43992,7 @@
 
 
 
-Performing an asynchronous wait: 
+Performing an asynchronous wait (C++11): 
 
    void handler(const asio::error_code& error)
    {
@@ -43282,8 +44005,8 @@
    ...
 
    // Construct a timer with an absolute expiry time.
-   asio::waitable_timer timer(io_service,
-       boost::posix_time::time_from_string("2005-12-07 23:59:59.000"));
+   asio::steady_timer timer(io_service,
+       std::chrono::steady_clock::now() + std::chrono::seconds(60));
 
    // Start an asynchronous wait.
    timer.async_wait(handler);
@@ -43292,7 +44015,7 @@
 
 
 
-[heading Changing an active waitable_timer's expiry time]
+[heading Changing an active waitable timer's expiry time]
   
 
 
@@ -43334,9 +44057,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_waitable_timer.hpp]
+['Header: ][^asio/basic_waitable_timer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:async_wait basic_waitable_timer::async_wait]
@@ -43347,7 +44070,7 @@
 
   template<
       typename ``[link asio.reference.WaitHandler WaitHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_wait(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_wait(
       WaitHandler handler);
 
 
@@ -43735,9 +44458,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_waitable_timer.hpp]
+['Header: ][^asio/basic_waitable_timer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -43756,9 +44479,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_waitable_timer.hpp]
+['Header: ][^asio/basic_waitable_timer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -44205,9 +44928,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_waitable_timer.hpp]
+['Header: ][^asio/basic_waitable_timer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -44253,9 +44976,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_waitable_timer.hpp]
+['Header: ][^asio/basic_waitable_timer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -44274,9 +44997,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_waitable_timer.hpp]
+['Header: ][^asio/basic_waitable_timer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -44295,9 +45018,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/basic_waitable_timer.hpp]
+['Header: ][^asio/basic_waitable_timer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -44381,6 +45104,8 @@
 [section:basic_yield_context basic_yield_context]
 
 
+Context object the represents the currently executing coroutine. 
+
 
   template<
       typename ``[link asio.reference.Handler Handler]``>
@@ -44393,26 +45118,45 @@
 
   [
     [[link asio.reference.basic_yield_context.basic_yield_context [*basic_yield_context]]]
-    []
+    [Construct a yield context to represent the specified coroutine. ]
   ]
   
   [
     [[link asio.reference.basic_yield_context.operator_lb__rb_ [*operator\[\]]]]
-    []
+    [Return a yield context that sets the specified error_code. ]
   ]
   
 ]
 
+The [link asio.reference.basic_yield_context `basic_yield_context`] class is used to represent the currently executing stackful coroutine. A [link asio.reference.basic_yield_context `basic_yield_context`] may be passed as a handler to an asynchronous operation. For example:
+
+
+
+   template <typename Handler>
+   void my_coroutine(basic_yield_context<Handler> yield)
+   {
+     ...
+     std::size_t n = my_socket.async_read_some(buffer, yield);
+     ...
+   } 
+
+
+
+
+The initiating function (async\_read\_some in the above example) suspends the current coroutine. The coroutine is resumed when the asynchronous operation completes, and the result of the operation is returned. 
+
 [heading Requirements]
 
-[*Header: ][^asio/spawn.hpp]
+['Header: ][^asio/spawn.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:basic_yield_context basic_yield_context::basic_yield_context]
 
 [indexterm2 basic_yield_context..basic_yield_context] 
+Construct a yield context to represent the specified coroutine. 
+
 
   basic_yield_context(
       const detail::weak_ptr< boost::coroutines::coroutine< void()> > & coro,
@@ -44420,6 +45164,8 @@
       Handler & handler);
 
 
+Most applications do not need to use this constructor. Instead, the `spawn()` function passes a yield context as an argument to the coroutine function. 
+
 
 [endsect]
 
@@ -44428,11 +45174,32 @@
 [section:operator_lb__rb_ basic_yield_context::operator\[\]]
 
 [indexterm2 operator\[\]..basic_yield_context] 
+Return a yield context that sets the specified [link asio.reference.error_code `error_code`]. 
+
 
   basic_yield_context operator[](
       asio::error_code & ec);
 
 
+By default, when a yield context is used with an asynchronous operation, a non-success [link asio.reference.error_code `error_code`] is converted to [link asio.reference.system_error `system_error`] and thrown. This operator may be used to specify an [link asio.reference.error_code `error_code`] object that should instead be set with the asynchronous operation's result. For example:
+
+
+
+   template <typename Handler>
+   void my_coroutine(basic_yield_context<Handler> yield)
+   {
+     ...
+     std::size_t n = my_socket.async_read_some(buffer, yield[ec]);
+     if (ec)
+     {
+       // An error occurred.
+     }
+     ...
+   } 
+
+
+
+
 
 [endsect]
 
@@ -44673,7 +45440,7 @@
 
 
 
-In all three cases above, the buffers created are exactly 128 bytes long. Note that a vector is [*never] automatically resized when creating or using a buffer. The buffer size is determined using the vector's `size()` member function, and not its capacity.
+In all three cases above, the buffers created are exactly 128 bytes long. Note that a vector is ['never] automatically resized when creating or using a buffer. The buffer size is determined using the vector's `size()` member function, and not its capacity.
 
 
 [heading Accessing Buffer Contents]
@@ -44815,9 +45582,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffer.hpp]
+['Header: ][^asio/buffer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:overload1 buffer (1 of 28 overloads)]
@@ -45754,9 +46521,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffer.hpp]
+['Header: ][^asio/buffer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:overload1 buffer_cast (1 of 2 overloads)]
@@ -46018,9 +46785,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffer.hpp]
+['Header: ][^asio/buffer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:overload1 buffer_copy (1 of 30 overloads)]
@@ -47554,9 +48321,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffer.hpp]
+['Header: ][^asio/buffer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:overload1 buffer_size (1 of 5 overloads)]
@@ -47768,18 +48535,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/buffered_read_stream.hpp]
+['Header: ][^asio/buffered_read_stream.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:async_fill buffered_read_stream::async_fill]
@@ -48115,9 +48882,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffered_read_stream.hpp]
+['Header: ][^asio/buffered_read_stream.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -48150,9 +48917,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffered_read_stream.hpp]
+['Header: ][^asio/buffered_read_stream.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -48471,18 +49238,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/buffered_stream.hpp]
+['Header: ][^asio/buffered_stream.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:async_fill buffered_stream::async_fill]
@@ -48871,9 +49638,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffered_stream.hpp]
+['Header: ][^asio/buffered_stream.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -48906,9 +49673,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffered_stream.hpp]
+['Header: ][^asio/buffered_stream.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -49226,18 +49993,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/buffered_write_stream.hpp]
+['Header: ][^asio/buffered_write_stream.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:async_flush buffered_write_stream::async_flush]
@@ -49573,9 +50340,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffered_write_stream.hpp]
+['Header: ][^asio/buffered_write_stream.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -49608,9 +50375,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffered_write_stream.hpp]
+['Header: ][^asio/buffered_write_stream.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -49814,9 +50581,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffers_iterator.hpp]
+['Header: ][^asio/buffers_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -49837,9 +50604,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffers_iterator.hpp]
+['Header: ][^asio/buffers_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -50006,9 +50773,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffers_iterator.hpp]
+['Header: ][^asio/buffers_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:begin buffers_iterator::begin]
@@ -50052,9 +50819,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffers_iterator.hpp]
+['Header: ][^asio/buffers_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -50088,9 +50855,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffers_iterator.hpp]
+['Header: ][^asio/buffers_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -50124,9 +50891,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffers_iterator.hpp]
+['Header: ][^asio/buffers_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -50162,9 +50929,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffers_iterator.hpp]
+['Header: ][^asio/buffers_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -50184,9 +50951,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffers_iterator.hpp]
+['Header: ][^asio/buffers_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -50287,9 +51054,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffers_iterator.hpp]
+['Header: ][^asio/buffers_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -50309,9 +51076,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffers_iterator.hpp]
+['Header: ][^asio/buffers_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -50410,9 +51177,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffers_iterator.hpp]
+['Header: ][^asio/buffers_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -50432,9 +51199,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffers_iterator.hpp]
+['Header: ][^asio/buffers_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -50454,9 +51221,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffers_iterator.hpp]
+['Header: ][^asio/buffers_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -50476,9 +51243,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffers_iterator.hpp]
+['Header: ][^asio/buffers_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -50498,9 +51265,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffers_iterator.hpp]
+['Header: ][^asio/buffers_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -50536,9 +51303,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffers_iterator.hpp]
+['Header: ][^asio/buffers_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -50559,9 +51326,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffers_iterator.hpp]
+['Header: ][^asio/buffers_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -50580,9 +51347,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffers_iterator.hpp]
+['Header: ][^asio/buffers_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -50687,9 +51454,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/connect.hpp]
+['Header: ][^asio/connect.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:overload1 connect (1 of 8 overloads)]
@@ -51406,9 +52173,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffer.hpp]
+['Header: ][^asio/buffer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:const_buffer const_buffer::const_buffer]
 
@@ -51602,9 +52369,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffer.hpp]
+['Header: ][^asio/buffer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:begin const_buffers_1::begin]
@@ -51685,9 +52452,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffer.hpp]
+['Header: ][^asio/buffer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -51822,9 +52589,382 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffer.hpp]
+['Header: ][^asio/buffer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:coroutine coroutine]
+
+
+Provides support for implementing stackless coroutines. 
+
+
+  class coroutine
+
+
+[heading Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.coroutine.coroutine [*coroutine]]]
+    [Constructs a coroutine in its initial state. ]
+  ]
+  
+  [
+    [[link asio.reference.coroutine.is_child [*is_child]]]
+    [Returns true if the coroutine is the child of a fork. ]
+  ]
+  
+  [
+    [[link asio.reference.coroutine.is_complete [*is_complete]]]
+    [Returns true if the coroutine has reached its terminal state. ]
+  ]
+  
+  [
+    [[link asio.reference.coroutine.is_parent [*is_parent]]]
+    [Returns true if the coroutine is the parent of a fork. ]
+  ]
+  
+]
+
+The `coroutine` class may be used to implement stackless coroutines. The class itself is used to store the current state of the coroutine.
+
+Coroutines are copy-constructible and assignable, and the space overhead is a single int. They can be used as a base class:
+
+
+
+   class session : coroutine
+   {
+     ...
+   }; 
+
+
+
+
+or as a data member:
+
+
+
+   class session
+   {
+     ...
+     coroutine coro_;
+   }; 
+
+
+
+
+or even bound in as a function argument using lambdas or `bind()`. The important thing is that as the application maintains a copy of the object for as long as the coroutine must be kept alive.
+
+
+[heading Pseudo-keywords]
+  
+
+
+A coroutine is used in conjunction with certain "pseudo-keywords", which are implemented as macros. These macros are defined by a header file:
+
+
+
+   #include <asio/yield.hpp>
+
+
+
+
+and may conversely be undefined as follows:
+
+
+
+   #include <asio/unyield.hpp>
+
+
+
+
+[*reenter]
+
+The `reenter` macro is used to define the body of a coroutine. It takes a single argument: a pointer or reference to a coroutine object. For example, if the base class is a coroutine object you may write:
+
+
+
+   reenter (this)
+   {
+     ... coroutine body ...
+   } 
+
+
+
+
+and if a data member or other variable you can write:
+
+
+
+   reenter (coro_)
+   {
+     ... coroutine body ...
+   } 
+
+
+
+
+When `reenter` is executed at runtime, control jumps to the location of the last `yield` or `fork`.
+
+The coroutine body may also be a single statement, such as:
+
+
+
+   reenter (this) for (;;)
+   {
+     ...
+   } 
+
+
+
+
+[*Limitation:] The `reenter` macro is implemented using a switch. This means that you must take care when using local variables within the coroutine body. The local variable is not allowed in a position where reentering the coroutine could bypass the variable definition.
+
+[*yield ['statement]]
+
+This form of the `yield` keyword is often used with asynchronous operations:
+
+
+
+   yield socket_->async_read_some(buffer(*buffer_), *this); 
+
+
+
+
+This divides into four logical steps:
+
+
+* `yield` saves the current state of the coroutine. 
+
+* The statement initiates the asynchronous operation. 
+
+* The resume point is defined immediately following the statement. 
+
+* Control is transferred to the end of the coroutine body.
+
+When the asynchronous operation completes, the function object is invoked and `reenter` causes control to transfer to the resume point. It is important to remember to carry the coroutine state forward with the asynchronous operation. In the above snippet, the current class is a function object object with a coroutine object as base class or data member.
+
+The statement may also be a compound statement, and this permits us to define local variables with limited scope:
+
+
+
+   yield
+   {
+     mutable_buffers_1 b = buffer(*buffer_);
+     socket_->async_read_some(b, *this);
+   } 
+
+
+
+
+[*yield return ['expression] ;]
+
+This form of `yield` is often used in generators or coroutine-based parsers. For example, the function object:
+
+
+
+   struct interleave : coroutine
+   {
+     istream& is1;
+     istream& is2;
+     char operator()(char c)
+     {
+       reenter (this) for (;;)
+       {
+         yield return is1.get();
+         yield return is2.get();
+       }
+     }
+   }; 
+
+
+
+
+defines a trivial coroutine that interleaves the characters from two input streams.
+
+This type of `yield` divides into three logical steps:
+
+
+* `yield` saves the current state of the coroutine. 
+
+* The resume point is defined immediately following the semicolon. 
+
+* The value of the expression is returned from the function.
+
+[*yield ;]
+
+This form of `yield` is equivalent to the following steps:
+
+
+* `yield` saves the current state of the coroutine. 
+
+* The resume point is defined immediately following the semicolon. 
+
+* Control is transferred to the end of the coroutine body.
+
+This form might be applied when coroutines are used for cooperative threading and scheduling is explicitly managed. For example:
+
+
+
+   struct task : coroutine
+   {
+     ...
+     void operator()()
+     {
+       reenter (this)
+       {
+         while (... not finished ...)
+         {
+           ... do something ...
+           yield;
+           ... do some more ...
+           yield;
+         }
+       }
+     }
+     ...
+   };
+   ...
+   task t1, t2;
+   for (;;)
+   {
+     t1();
+     t2();
+   } 
+
+
+
+
+[*yield break ;]
+
+The final form of `yield` is used to explicitly terminate the coroutine. This form is comprised of two steps:
+
+
+* `yield` sets the coroutine state to indicate termination. 
+
+* Control is transferred to the end of the coroutine body.
+
+Once terminated, calls to `is_complete()` return true and the coroutine cannot be reentered.
+
+Note that a coroutine may also be implicitly terminated if the coroutine body is exited without a yield, e.g. by return, throw or by running to the end of the body.
+
+[*fork ['statement]]
+
+The `fork` pseudo-keyword is used when "forking" a coroutine, i.e. splitting it into two (or more) copies. One use of `fork` is in a server, where a new coroutine is created to handle each client connection:
+
+
+
+   reenter (this)
+   {
+     do
+     {
+       socket_.reset(new tcp::socket(io_service_));
+       yield acceptor->async_accept(*socket_, *this);
+       fork server(*this)();
+     } while (is_parent());
+     ... client-specific handling follows ...
+   } 
+
+
+
+
+The logical steps involved in a `fork` are:
+
+
+* `fork` saves the current state of the coroutine. 
+
+* The statement creates a copy of the coroutine and either executes it immediately or schedules it for later execution. 
+
+* The resume point is defined immediately following the semicolon. 
+
+* For the "parent", control immediately continues from the next line.
+
+The functions `is_parent()` and `is_child()` can be used to differentiate between parent and child. You would use these functions to alter subsequent control flow.
+
+Note that `fork` doesn't do the actual forking by itself. It is the application's responsibility to create a clone of the coroutine and call it. The clone can be called immediately, as above, or scheduled for delayed execution using something like `io_service::post()`.
+
+
+[heading Alternate macro names]
+  
+
+
+If preferred, an application can use macro names that follow a more typical naming convention, rather than the pseudo-keywords. These are:
+
+
+* `ASIO_CORO_REENTER` instead of `reenter` 
+
+* `ASIO_CORO_YIELD` instead of `yield` 
+
+* `ASIO_CORO_FORK` instead of `fork` 
+
+
+
+[heading Requirements]
+
+['Header: ][^asio/coroutine.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[section:coroutine coroutine::coroutine]
+
+[indexterm2 coroutine..coroutine] 
+Constructs a coroutine in its initial state. 
+
+
+  coroutine();
+
+
+
+[endsect]
+
+
+
+[section:is_child coroutine::is_child]
+
+[indexterm2 is_child..coroutine] 
+Returns true if the coroutine is the child of a fork. 
+
+
+  bool is_child() const;
+
+
+
+[endsect]
+
+
+
+[section:is_complete coroutine::is_complete]
+
+[indexterm2 is_complete..coroutine] 
+Returns true if the coroutine has reached its terminal state. 
+
+
+  bool is_complete() const;
+
+
+
+[endsect]
+
+
+
+[section:is_parent coroutine::is_parent]
+
+[indexterm2 is_parent..coroutine] 
+Returns true if the coroutine is the parent of a fork. 
+
+
+  bool is_parent() const;
+
 
 
 [endsect]
@@ -51956,6 +53096,11 @@
   ]
   
   [
+    [[link asio.reference.datagram_socket_service.converting_move_construct [*converting_move_construct]]]
+    [Move-construct a new datagram socket implementation from another protocol type. ]
+  ]
+  
+  [
     [[link asio.reference.datagram_socket_service.datagram_socket_service [*datagram_socket_service]]]
     [Construct a new datagram socket service for the specified io_service. ]
   ]
@@ -52079,9 +53224,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/datagram_socket_service.hpp]
+['Header: ][^asio/datagram_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:assign datagram_socket_service::assign]
@@ -52110,7 +53255,7 @@
 
   template<
       typename ``[link asio.reference.ConnectHandler ConnectHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_connect(
       implementation_type & impl,
       const endpoint_type & peer_endpoint,
       ConnectHandler handler);
@@ -52130,7 +53275,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_receive(
       implementation_type & impl,
       const MutableBufferSequence & buffers,
       socket_base::message_flags flags,
@@ -52151,7 +53296,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive_from(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_receive_from(
       implementation_type & impl,
       const MutableBufferSequence & buffers,
       endpoint_type & sender_endpoint,
@@ -52173,7 +53318,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_send(
       implementation_type & impl,
       const ConstBufferSequence & buffers,
       socket_base::message_flags flags,
@@ -52194,7 +53339,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send_to(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_send_to(
       implementation_type & impl,
       const ConstBufferSequence & buffers,
       const endpoint_type & destination,
@@ -52318,6 +53463,25 @@
 
 
 
+[section:converting_move_construct datagram_socket_service::converting_move_construct]
+
+[indexterm2 converting_move_construct..datagram_socket_service] 
+Move-construct a new datagram socket implementation from another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``>
+  void converting_move_construct(
+      implementation_type & impl,
+      typename datagram_socket_service< Protocol1 >::implementation_type & other_impl,
+      typename enable_if< is_convertible< Protocol1, Protocol >::value >::type *  = 0);
+
+
+
+[endsect]
+
+
+
 [section:datagram_socket_service datagram_socket_service::datagram_socket_service]
 
 [indexterm2 datagram_socket_service..datagram_socket_service] 
@@ -52360,9 +53524,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/datagram_socket_service.hpp]
+['Header: ][^asio/datagram_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -52431,9 +53595,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/datagram_socket_service.hpp]
+['Header: ][^asio/datagram_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -52565,9 +53729,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/datagram_socket_service.hpp]
+['Header: ][^asio/datagram_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -52640,9 +53804,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/datagram_socket_service.hpp]
+['Header: ][^asio/datagram_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -52730,9 +53894,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/datagram_socket_service.hpp]
+['Header: ][^asio/datagram_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -53021,9 +54185,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Examples]
@@ -53109,9 +54273,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/deadline_timer.hpp]
+['Header: ][^asio/deadline_timer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -53237,9 +54401,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/deadline_timer_service.hpp]
+['Header: ][^asio/deadline_timer_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:async_wait deadline_timer_service::async_wait]
@@ -53248,7 +54412,7 @@
 
   template<
       typename ``[link asio.reference.WaitHandler WaitHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_wait(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_wait(
       implementation_type & impl,
       WaitHandler handler);
 
@@ -53347,9 +54511,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/deadline_timer_service.hpp]
+['Header: ][^asio/deadline_timer_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -53507,9 +54671,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/deadline_timer_service.hpp]
+['Header: ][^asio/deadline_timer_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -53528,9 +54692,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/deadline_timer_service.hpp]
+['Header: ][^asio/deadline_timer_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -53549,9 +54713,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/deadline_timer_service.hpp]
+['Header: ][^asio/deadline_timer_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -53584,9 +54748,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/error.hpp]
+['Header: ][^asio/error.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -53620,9 +54784,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/error.hpp]
+['Header: ][^asio/error.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -53842,9 +55006,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/error.hpp]
+['Header: ][^asio/error.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -53860,9 +55024,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/error.hpp]
+['Header: ][^asio/error.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -53878,9 +55042,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/error.hpp]
+['Header: ][^asio/error.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -53896,9 +55060,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/error.hpp]
+['Header: ][^asio/error.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -53914,9 +55078,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/error.hpp]
+['Header: ][^asio/ssl/error.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
 
 
 [endsect]
@@ -53932,9 +55096,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/error.hpp]
+['Header: ][^asio/error.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -53966,9 +55130,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/error.hpp]
+['Header: ][^asio/error.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:overload1 error::make_error_code (1 of 5 overloads)]
@@ -54047,9 +55211,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/error.hpp]
+['Header: ][^asio/error.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -54095,9 +55259,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/error.hpp]
+['Header: ][^asio/error.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -54113,9 +55277,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/error.hpp]
+['Header: ][^asio/error.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -54161,9 +55325,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/error.hpp]
+['Header: ][^asio/error.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -54179,9 +55343,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/error.hpp]
+['Header: ][^asio/ssl/error.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
 
 
 [endsect]
@@ -54197,9 +55361,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/error.hpp]
+['Header: ][^asio/ssl/error.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
 
 
 [endsect]
@@ -54215,9 +55379,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/error.hpp]
+['Header: ][^asio/error.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -54266,9 +55430,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/error_code.hpp]
+['Header: ][^asio/error_code.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:message error_category::message]
@@ -54438,9 +55602,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/error_code.hpp]
+['Header: ][^asio/error_code.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:category error_code::category]
@@ -54589,9 +55753,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/error_code.hpp]
+['Header: ][^asio/error_code.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -54611,9 +55775,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/error_code.hpp]
+['Header: ][^asio/error_code.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -54643,9 +55807,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/error_code.hpp]
+['Header: ][^asio/error_code.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -54677,9 +55841,3993 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/error_code.hpp]
+['Header: ][^asio/error_code.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+[section:generic__basic_endpoint generic::basic_endpoint]
+
+
+Describes an endpoint for any socket type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol]``>
+  class basic_endpoint
+
+
+[heading Types]
+[table
+  [[Name][Description]]
+
+  [
+
+    [[link asio.reference.generic__basic_endpoint.data_type [*data_type]]]
+    [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.generic__basic_endpoint.protocol_type [*protocol_type]]]
+    [The protocol type associated with the endpoint. ]
+  
+  ]
+
+]
+
+[heading Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.generic__basic_endpoint.basic_endpoint [*basic_endpoint]]]
+    [Default constructor. 
+
+     Construct an endpoint from the specified socket address. 
+
+     Construct an endpoint from the specific endpoint type. 
+
+     Copy constructor. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.capacity [*capacity]]]
+    [Get the capacity of the endpoint in the native type. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.data [*data]]]
+    [Get the underlying endpoint in the native type. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_eq_ [*operator=]]]
+    [Assign from another endpoint. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.protocol [*protocol]]]
+    [The protocol associated with the endpoint. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.resize [*resize]]]
+    [Set the underlying size of the endpoint in the native type. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.size [*size]]]
+    [Get the underlying size of the endpoint in the native type. ]
+  ]
+  
+]
+
+[heading Friends]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_not__eq_ [*operator!=]]]
+    [Compare two endpoints for inequality. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_lt_ [*operator<]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_lt__eq_ [*operator<=]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_eq__eq_ [*operator==]]]
+    [Compare two endpoints for equality. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_gt_ [*operator>]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_gt__eq_ [*operator>=]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+]
+
+The [link asio.reference.generic__basic_endpoint `generic::basic_endpoint`] class template describes an endpoint that may be associated with any socket type.
+
+
+[heading Remarks]
+      
+The socket types sockaddr type must be able to fit into a `sockaddr_storage` structure.
+
+
+[heading Thread Safety]
+  
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Unsafe.
+
+
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/basic_endpoint.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+[section:basic_endpoint generic::basic_endpoint::basic_endpoint]
+
+[indexterm2 basic_endpoint..generic::basic_endpoint] 
+Default constructor. 
+
+
+  ``[link asio.reference.generic__basic_endpoint.basic_endpoint.overload1 basic_endpoint]``();
+  ``  [''''&raquo;''' [link asio.reference.generic__basic_endpoint.basic_endpoint.overload1 more...]]``
+
+
+Construct an endpoint from the specified socket address. 
+
+
+  ``[link asio.reference.generic__basic_endpoint.basic_endpoint.overload2 basic_endpoint]``(
+      const void * socket_address,
+      std::size_t socket_address_size,
+      int socket_protocol = 0);
+  ``  [''''&raquo;''' [link asio.reference.generic__basic_endpoint.basic_endpoint.overload2 more...]]``
+
+
+Construct an endpoint from the specific endpoint type. 
+
+
+  template<
+      typename ``[link asio.reference.Endpoint Endpoint]``>
+  ``[link asio.reference.generic__basic_endpoint.basic_endpoint.overload3 basic_endpoint]``(
+      const Endpoint & endpoint);
+  ``  [''''&raquo;''' [link asio.reference.generic__basic_endpoint.basic_endpoint.overload3 more...]]``
+
+
+Copy constructor. 
+
+
+  ``[link asio.reference.generic__basic_endpoint.basic_endpoint.overload4 basic_endpoint]``(
+      const basic_endpoint & other);
+  ``  [''''&raquo;''' [link asio.reference.generic__basic_endpoint.basic_endpoint.overload4 more...]]``
+
+
+[section:overload1 generic::basic_endpoint::basic_endpoint (1 of 4 overloads)]
+
+
+Default constructor. 
+
+
+  basic_endpoint();
+
+
+
+[endsect]
+
+
+
+[section:overload2 generic::basic_endpoint::basic_endpoint (2 of 4 overloads)]
+
+
+Construct an endpoint from the specified socket address. 
+
+
+  basic_endpoint(
+      const void * socket_address,
+      std::size_t socket_address_size,
+      int socket_protocol = 0);
+
+
+
+[endsect]
+
+
+
+[section:overload3 generic::basic_endpoint::basic_endpoint (3 of 4 overloads)]
+
+
+Construct an endpoint from the specific endpoint type. 
+
+
+  template<
+      typename ``[link asio.reference.Endpoint Endpoint]``>
+  basic_endpoint(
+      const Endpoint & endpoint);
+
+
+
+[endsect]
+
+
+
+[section:overload4 generic::basic_endpoint::basic_endpoint (4 of 4 overloads)]
+
+
+Copy constructor. 
+
+
+  basic_endpoint(
+      const basic_endpoint & other);
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:capacity generic::basic_endpoint::capacity]
+
+[indexterm2 capacity..generic::basic_endpoint] 
+Get the capacity of the endpoint in the native type. 
+
+
+  std::size_t capacity() const;
+
+
+
+[endsect]
+
+
+[section:data generic::basic_endpoint::data]
+
+[indexterm2 data..generic::basic_endpoint] 
+Get the underlying endpoint in the native type. 
+
+
+  data_type * ``[link asio.reference.generic__basic_endpoint.data.overload1 data]``();
+  ``  [''''&raquo;''' [link asio.reference.generic__basic_endpoint.data.overload1 more...]]``
+
+  const data_type * ``[link asio.reference.generic__basic_endpoint.data.overload2 data]``() const;
+  ``  [''''&raquo;''' [link asio.reference.generic__basic_endpoint.data.overload2 more...]]``
+
+
+[section:overload1 generic::basic_endpoint::data (1 of 2 overloads)]
+
+
+Get the underlying endpoint in the native type. 
+
+
+  data_type * data();
+
+
+
+[endsect]
+
+
+
+[section:overload2 generic::basic_endpoint::data (2 of 2 overloads)]
+
+
+Get the underlying endpoint in the native type. 
+
+
+  const data_type * data() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:data_type generic::basic_endpoint::data_type]
+
+[indexterm2 data_type..generic::basic_endpoint] 
+The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. 
+
+
+  typedef implementation_defined data_type;
+
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/basic_endpoint.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_not__eq_ generic::basic_endpoint::operator!=]
+
+[indexterm2 operator!=..generic::basic_endpoint] 
+Compare two endpoints for inequality. 
+
+
+  friend bool operator!=(
+      const basic_endpoint< Protocol > & e1,
+      const basic_endpoint< Protocol > & e2);
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/basic_endpoint.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_lt_ generic::basic_endpoint::operator<]
+
+[indexterm2 operator<..generic::basic_endpoint] 
+Compare endpoints for ordering. 
+
+
+  friend bool operator<(
+      const basic_endpoint< Protocol > & e1,
+      const basic_endpoint< Protocol > & e2);
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/basic_endpoint.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_lt__eq_ generic::basic_endpoint::operator<=]
+
+[indexterm2 operator<=..generic::basic_endpoint] 
+Compare endpoints for ordering. 
+
+
+  friend bool operator<=(
+      const basic_endpoint< Protocol > & e1,
+      const basic_endpoint< Protocol > & e2);
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/basic_endpoint.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_eq_ generic::basic_endpoint::operator=]
+
+[indexterm2 operator=..generic::basic_endpoint] 
+Assign from another endpoint. 
+
+
+  basic_endpoint & operator=(
+      const basic_endpoint & other);
+
+
+
+[endsect]
+
+
+
+[section:operator_eq__eq_ generic::basic_endpoint::operator==]
+
+[indexterm2 operator==..generic::basic_endpoint] 
+Compare two endpoints for equality. 
+
+
+  friend bool operator==(
+      const basic_endpoint< Protocol > & e1,
+      const basic_endpoint< Protocol > & e2);
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/basic_endpoint.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_gt_ generic::basic_endpoint::operator>]
+
+[indexterm2 operator>..generic::basic_endpoint] 
+Compare endpoints for ordering. 
+
+
+  friend bool operator>(
+      const basic_endpoint< Protocol > & e1,
+      const basic_endpoint< Protocol > & e2);
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/basic_endpoint.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_gt__eq_ generic::basic_endpoint::operator>=]
+
+[indexterm2 operator>=..generic::basic_endpoint] 
+Compare endpoints for ordering. 
+
+
+  friend bool operator>=(
+      const basic_endpoint< Protocol > & e1,
+      const basic_endpoint< Protocol > & e2);
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/basic_endpoint.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:protocol generic::basic_endpoint::protocol]
+
+[indexterm2 protocol..generic::basic_endpoint] 
+The protocol associated with the endpoint. 
+
+
+  protocol_type protocol() const;
+
+
+
+[endsect]
+
+
+
+[section:protocol_type generic::basic_endpoint::protocol_type]
+
+[indexterm2 protocol_type..generic::basic_endpoint] 
+The protocol type associated with the endpoint. 
+
+
+  typedef Protocol protocol_type;
+
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/basic_endpoint.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:resize generic::basic_endpoint::resize]
+
+[indexterm2 resize..generic::basic_endpoint] 
+Set the underlying size of the endpoint in the native type. 
+
+
+  void resize(
+      std::size_t new_size);
+
+
+
+[endsect]
+
+
+
+[section:size generic::basic_endpoint::size]
+
+[indexterm2 size..generic::basic_endpoint] 
+Get the underlying size of the endpoint in the native type. 
+
+
+  std::size_t size() const;
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:generic__datagram_protocol generic::datagram_protocol]
+
+
+Encapsulates the flags needed for a generic datagram-oriented socket. 
+
+
+  class datagram_protocol
+
+
+[heading Types]
+[table
+  [[Name][Description]]
+
+  [
+
+    [[link asio.reference.generic__datagram_protocol.endpoint [*endpoint]]]
+    [The type of an endpoint. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.generic__datagram_protocol.socket [*socket]]]
+    [The generic socket type. ]
+  
+  ]
+
+]
+
+[heading Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.generic__datagram_protocol.datagram_protocol [*datagram_protocol]]]
+    [Construct a protocol object for a specific address family and protocol. 
+
+     Construct a generic protocol object from a specific protocol. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__datagram_protocol.family [*family]]]
+    [Obtain an identifier for the protocol family. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__datagram_protocol.protocol [*protocol]]]
+    [Obtain an identifier for the protocol. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__datagram_protocol.type [*type]]]
+    [Obtain an identifier for the type of the protocol. ]
+  ]
+  
+]
+
+[heading Friends]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.generic__datagram_protocol.operator_not__eq_ [*operator!=]]]
+    [Compare two protocols for inequality. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__datagram_protocol.operator_eq__eq_ [*operator==]]]
+    [Compare two protocols for equality. ]
+  ]
+  
+]
+
+The [link asio.reference.generic__datagram_protocol `generic::datagram_protocol`] class contains flags necessary for datagram-oriented sockets of any address family and protocol.
+
+
+[heading Examples]
+  
+Constructing using a native address family and socket protocol: 
+
+   datagram_protocol p(AF_INET, IPPROTO_UDP); 
+
+
+Constructing from a specific protocol type: 
+
+   datagram_protocol p(asio::ip::udp::v4()); 
+
+
+
+
+
+[heading Thread Safety]
+  
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Safe.
+
+
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/datagram_protocol.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+[section:datagram_protocol generic::datagram_protocol::datagram_protocol]
+
+[indexterm2 datagram_protocol..generic::datagram_protocol] 
+Construct a protocol object for a specific address family and protocol. 
+
+
+  ``[link asio.reference.generic__datagram_protocol.datagram_protocol.overload1 datagram_protocol]``(
+      int address_family,
+      int socket_protocol);
+  ``  [''''&raquo;''' [link asio.reference.generic__datagram_protocol.datagram_protocol.overload1 more...]]``
+
+
+Construct a generic protocol object from a specific protocol. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol]``>
+  ``[link asio.reference.generic__datagram_protocol.datagram_protocol.overload2 datagram_protocol]``(
+      const Protocol & source_protocol);
+  ``  [''''&raquo;''' [link asio.reference.generic__datagram_protocol.datagram_protocol.overload2 more...]]``
+
+
+[section:overload1 generic::datagram_protocol::datagram_protocol (1 of 2 overloads)]
+
+
+Construct a protocol object for a specific address family and protocol. 
+
+
+  datagram_protocol(
+      int address_family,
+      int socket_protocol);
+
+
+
+[endsect]
+
+
+
+[section:overload2 generic::datagram_protocol::datagram_protocol (2 of 2 overloads)]
+
+
+Construct a generic protocol object from a specific protocol. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol]``>
+  datagram_protocol(
+      const Protocol & source_protocol);
+
+
+
+[heading Exceptions]
+    
+
+[variablelist
+  
+[[@c][bad\_cast Thrown if the source protocol is not datagram-oriented. ]]
+
+]
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:endpoint generic::datagram_protocol::endpoint]
+
+[indexterm2 endpoint..generic::datagram_protocol] 
+The type of an endpoint. 
+
+
+  typedef basic_endpoint< datagram_protocol > endpoint;
+
+
+[heading Types]
+[table
+  [[Name][Description]]
+
+  [
+
+    [[link asio.reference.generic__basic_endpoint.data_type [*data_type]]]
+    [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.generic__basic_endpoint.protocol_type [*protocol_type]]]
+    [The protocol type associated with the endpoint. ]
+  
+  ]
+
+]
+
+[heading Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.generic__basic_endpoint.basic_endpoint [*basic_endpoint]]]
+    [Default constructor. 
+
+     Construct an endpoint from the specified socket address. 
+
+     Construct an endpoint from the specific endpoint type. 
+
+     Copy constructor. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.capacity [*capacity]]]
+    [Get the capacity of the endpoint in the native type. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.data [*data]]]
+    [Get the underlying endpoint in the native type. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_eq_ [*operator=]]]
+    [Assign from another endpoint. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.protocol [*protocol]]]
+    [The protocol associated with the endpoint. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.resize [*resize]]]
+    [Set the underlying size of the endpoint in the native type. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.size [*size]]]
+    [Get the underlying size of the endpoint in the native type. ]
+  ]
+  
+]
+
+[heading Friends]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_not__eq_ [*operator!=]]]
+    [Compare two endpoints for inequality. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_lt_ [*operator<]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_lt__eq_ [*operator<=]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_eq__eq_ [*operator==]]]
+    [Compare two endpoints for equality. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_gt_ [*operator>]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_gt__eq_ [*operator>=]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+]
+
+The [link asio.reference.generic__basic_endpoint `generic::basic_endpoint`] class template describes an endpoint that may be associated with any socket type.
+
+
+[heading Remarks]
+      
+The socket types sockaddr type must be able to fit into a `sockaddr_storage` structure.
+
+
+[heading Thread Safety]
+  
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Unsafe.
+
+
+
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/datagram_protocol.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:family generic::datagram_protocol::family]
+
+[indexterm2 family..generic::datagram_protocol] 
+Obtain an identifier for the protocol family. 
+
+
+  int family() const;
+
+
+
+[endsect]
+
+
+
+[section:operator_not__eq_ generic::datagram_protocol::operator!=]
+
+[indexterm2 operator!=..generic::datagram_protocol] 
+Compare two protocols for inequality. 
+
+
+  friend bool operator!=(
+      const datagram_protocol & p1,
+      const datagram_protocol & p2);
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/datagram_protocol.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_eq__eq_ generic::datagram_protocol::operator==]
+
+[indexterm2 operator==..generic::datagram_protocol] 
+Compare two protocols for equality. 
+
+
+  friend bool operator==(
+      const datagram_protocol & p1,
+      const datagram_protocol & p2);
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/datagram_protocol.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:protocol generic::datagram_protocol::protocol]
+
+[indexterm2 protocol..generic::datagram_protocol] 
+Obtain an identifier for the protocol. 
+
+
+  int protocol() const;
+
+
+
+[endsect]
+
+
+
+[section:socket generic::datagram_protocol::socket]
+
+[indexterm2 socket..generic::datagram_protocol] 
+The generic socket type. 
+
+
+  typedef basic_datagram_socket< datagram_protocol > socket;
+
+
+[heading Types]
+[table
+  [[Name][Description]]
+
+  [
+
+    [[link asio.reference.basic_datagram_socket.broadcast [*broadcast]]]
+    [Socket option to permit sending of broadcast messages. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_datagram_socket.bytes_readable [*bytes_readable]]]
+    [IO control command to get the amount of data that can be read without blocking. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_datagram_socket.debug [*debug]]]
+    [Socket option to enable socket-level debugging. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_datagram_socket.do_not_route [*do_not_route]]]
+    [Socket option to prevent routing, use local interfaces only. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_datagram_socket.enable_connection_aborted [*enable_connection_aborted]]]
+    [Socket option to report aborted connections on accept. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_datagram_socket.endpoint_type [*endpoint_type]]]
+    [The endpoint type. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_datagram_socket.implementation_type [*implementation_type]]]
+    [The underlying implementation type of I/O object. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_datagram_socket.keep_alive [*keep_alive]]]
+    [Socket option to send keep-alives. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_datagram_socket.linger [*linger]]]
+    [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_datagram_socket.lowest_layer_type [*lowest_layer_type]]]
+    [A basic_socket is always the lowest layer. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_datagram_socket.message_flags [*message_flags]]]
+    [Bitmask type for flags that can be passed to send and receive operations. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_datagram_socket.native_handle_type [*native_handle_type]]]
+    [The native representation of a socket. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_datagram_socket.native_type [*native_type]]]
+    [(Deprecated: Use native_handle_type.) The native representation of a socket. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_datagram_socket.non_blocking_io [*non_blocking_io]]]
+    [(Deprecated: Use non_blocking().) IO control command to set the blocking mode of the socket. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_datagram_socket.protocol_type [*protocol_type]]]
+    [The protocol type. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_datagram_socket.receive_buffer_size [*receive_buffer_size]]]
+    [Socket option for the receive buffer size of a socket. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_datagram_socket.receive_low_watermark [*receive_low_watermark]]]
+    [Socket option for the receive low watermark. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_datagram_socket.reuse_address [*reuse_address]]]
+    [Socket option to allow the socket to be bound to an address that is already in use. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_datagram_socket.send_buffer_size [*send_buffer_size]]]
+    [Socket option for the send buffer size of a socket. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_datagram_socket.send_low_watermark [*send_low_watermark]]]
+    [Socket option for the send low watermark. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_datagram_socket.service_type [*service_type]]]
+    [The type of the service that will be used to provide I/O operations. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_datagram_socket.shutdown_type [*shutdown_type]]]
+    [Different ways a socket may be shutdown. ]
+  
+  ]
+
+]
+
+[heading Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_datagram_socket.assign [*assign]]]
+    [Assign an existing native socket to the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.async_connect [*async_connect]]]
+    [Start an asynchronous connect. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.async_receive [*async_receive]]]
+    [Start an asynchronous receive on a connected socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.async_receive_from [*async_receive_from]]]
+    [Start an asynchronous receive. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.async_send [*async_send]]]
+    [Start an asynchronous send on a connected socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.async_send_to [*async_send_to]]]
+    [Start an asynchronous send. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.at_mark [*at_mark]]]
+    [Determine whether the socket is at the out-of-band data mark. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.available [*available]]]
+    [Determine the number of bytes available for reading. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.basic_datagram_socket [*basic_datagram_socket]]]
+    [Construct a basic_datagram_socket without opening it. 
+
+     Construct and open a basic_datagram_socket. 
+
+     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. 
+
+     Move-construct a basic_datagram_socket from another. 
+
+     Move-construct a basic_datagram_socket from a socket of another protocol type. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.bind [*bind]]]
+    [Bind the socket to the given local endpoint. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.cancel [*cancel]]]
+    [Cancel all asynchronous operations associated with the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.close [*close]]]
+    [Close the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.connect [*connect]]]
+    [Connect the socket to the specified endpoint. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.get_io_service [*get_io_service]]]
+    [Get the io_service associated with the object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.get_option [*get_option]]]
+    [Get an option from the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.io_control [*io_control]]]
+    [Perform an IO control command on the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.is_open [*is_open]]]
+    [Determine whether the socket is open. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.local_endpoint [*local_endpoint]]]
+    [Get the local endpoint of the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.lowest_layer [*lowest_layer]]]
+    [Get a reference to the lowest layer. 
+
+     Get a const reference to the lowest layer. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.native [*native]]]
+    [(Deprecated: Use native_handle().) Get the native socket representation. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.native_handle [*native_handle]]]
+    [Get the native socket representation. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.native_non_blocking [*native_non_blocking]]]
+    [Gets the non-blocking mode of the native socket implementation. 
+
+     Sets the non-blocking mode of the native socket implementation. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.non_blocking [*non_blocking]]]
+    [Gets the non-blocking mode of the socket. 
+
+     Sets the non-blocking mode of the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.open [*open]]]
+    [Open the socket using the specified protocol. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.operator_eq_ [*operator=]]]
+    [Move-assign a basic_datagram_socket from another. 
+
+     Move-assign a basic_datagram_socket from a socket of another protocol type. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.receive [*receive]]]
+    [Receive some data on a connected socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.receive_from [*receive_from]]]
+    [Receive a datagram with the endpoint of the sender. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.remote_endpoint [*remote_endpoint]]]
+    [Get the remote endpoint of the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.send [*send]]]
+    [Send some data on a connected socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.send_to [*send_to]]]
+    [Send a datagram to the specified endpoint. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.set_option [*set_option]]]
+    [Set an option on the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_datagram_socket.shutdown [*shutdown]]]
+    [Disable sends or receives on the socket. ]
+  ]
+  
+]
+
+[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]]
+
+  [
+    [[link asio.reference.basic_datagram_socket.max_connections [*max_connections]]]
+    [The maximum length of the queue of pending incoming connections. ]
+  ]
+
+  [
+    [[link asio.reference.basic_datagram_socket.message_do_not_route [*message_do_not_route]]]
+    [Specify that the data should not be subject to routing. ]
+  ]
+
+  [
+    [[link asio.reference.basic_datagram_socket.message_end_of_record [*message_end_of_record]]]
+    [Specifies that the data marks the end of a record. ]
+  ]
+
+  [
+    [[link asio.reference.basic_datagram_socket.message_out_of_band [*message_out_of_band]]]
+    [Process out-of-band data. ]
+  ]
+
+  [
+    [[link asio.reference.basic_datagram_socket.message_peek [*message_peek]]]
+    [Peek at incoming data without removing it from the input queue. ]
+  ]
+
+]
+
+[heading Protected Data Members]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_datagram_socket.implementation [*implementation]]]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
+  ]
+
+  [
+    [[link asio.reference.basic_datagram_socket.service [*service]]]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
+  ]
+
+]
+
+The [link asio.reference.basic_datagram_socket `basic_datagram_socket`] class template provides asynchronous and blocking datagram-oriented socket functionality.
+
+
+[heading Thread Safety]
+  
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Unsafe. 
+
+
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/datagram_protocol.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:type generic::datagram_protocol::type]
+
+[indexterm2 type..generic::datagram_protocol] 
+Obtain an identifier for the type of the protocol. 
+
+
+  int type() const;
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:generic__raw_protocol generic::raw_protocol]
+
+
+Encapsulates the flags needed for a generic raw socket. 
+
+
+  class raw_protocol
+
+
+[heading Types]
+[table
+  [[Name][Description]]
+
+  [
+
+    [[link asio.reference.generic__raw_protocol.endpoint [*endpoint]]]
+    [The type of an endpoint. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.generic__raw_protocol.socket [*socket]]]
+    [The generic socket type. ]
+  
+  ]
+
+]
+
+[heading Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.generic__raw_protocol.family [*family]]]
+    [Obtain an identifier for the protocol family. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__raw_protocol.protocol [*protocol]]]
+    [Obtain an identifier for the protocol. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__raw_protocol.raw_protocol [*raw_protocol]]]
+    [Construct a protocol object for a specific address family and protocol. 
+
+     Construct a generic protocol object from a specific protocol. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__raw_protocol.type [*type]]]
+    [Obtain an identifier for the type of the protocol. ]
+  ]
+  
+]
+
+[heading Friends]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.generic__raw_protocol.operator_not__eq_ [*operator!=]]]
+    [Compare two protocols for inequality. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__raw_protocol.operator_eq__eq_ [*operator==]]]
+    [Compare two protocols for equality. ]
+  ]
+  
+]
+
+The [link asio.reference.generic__raw_protocol `generic::raw_protocol`] class contains flags necessary for raw sockets of any address family and protocol.
+
+
+[heading Examples]
+  
+Constructing using a native address family and socket protocol: 
+
+   raw_protocol p(AF_INET, IPPROTO_ICMP); 
+
+
+Constructing from a specific protocol type: 
+
+   raw_protocol p(asio::ip::icmp::v4()); 
+
+
+
+
+
+[heading Thread Safety]
+  
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Safe.
+
+
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/raw_protocol.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[section:endpoint generic::raw_protocol::endpoint]
+
+[indexterm2 endpoint..generic::raw_protocol] 
+The type of an endpoint. 
+
+
+  typedef basic_endpoint< raw_protocol > endpoint;
+
+
+[heading Types]
+[table
+  [[Name][Description]]
+
+  [
+
+    [[link asio.reference.generic__basic_endpoint.data_type [*data_type]]]
+    [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.generic__basic_endpoint.protocol_type [*protocol_type]]]
+    [The protocol type associated with the endpoint. ]
+  
+  ]
+
+]
+
+[heading Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.generic__basic_endpoint.basic_endpoint [*basic_endpoint]]]
+    [Default constructor. 
+
+     Construct an endpoint from the specified socket address. 
+
+     Construct an endpoint from the specific endpoint type. 
+
+     Copy constructor. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.capacity [*capacity]]]
+    [Get the capacity of the endpoint in the native type. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.data [*data]]]
+    [Get the underlying endpoint in the native type. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_eq_ [*operator=]]]
+    [Assign from another endpoint. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.protocol [*protocol]]]
+    [The protocol associated with the endpoint. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.resize [*resize]]]
+    [Set the underlying size of the endpoint in the native type. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.size [*size]]]
+    [Get the underlying size of the endpoint in the native type. ]
+  ]
+  
+]
+
+[heading Friends]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_not__eq_ [*operator!=]]]
+    [Compare two endpoints for inequality. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_lt_ [*operator<]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_lt__eq_ [*operator<=]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_eq__eq_ [*operator==]]]
+    [Compare two endpoints for equality. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_gt_ [*operator>]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_gt__eq_ [*operator>=]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+]
+
+The [link asio.reference.generic__basic_endpoint `generic::basic_endpoint`] class template describes an endpoint that may be associated with any socket type.
+
+
+[heading Remarks]
+      
+The socket types sockaddr type must be able to fit into a `sockaddr_storage` structure.
+
+
+[heading Thread Safety]
+  
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Unsafe.
+
+
+
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/raw_protocol.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:family generic::raw_protocol::family]
+
+[indexterm2 family..generic::raw_protocol] 
+Obtain an identifier for the protocol family. 
+
+
+  int family() const;
+
+
+
+[endsect]
+
+
+
+[section:operator_not__eq_ generic::raw_protocol::operator!=]
+
+[indexterm2 operator!=..generic::raw_protocol] 
+Compare two protocols for inequality. 
+
+
+  friend bool operator!=(
+      const raw_protocol & p1,
+      const raw_protocol & p2);
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/raw_protocol.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_eq__eq_ generic::raw_protocol::operator==]
+
+[indexterm2 operator==..generic::raw_protocol] 
+Compare two protocols for equality. 
+
+
+  friend bool operator==(
+      const raw_protocol & p1,
+      const raw_protocol & p2);
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/raw_protocol.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:protocol generic::raw_protocol::protocol]
+
+[indexterm2 protocol..generic::raw_protocol] 
+Obtain an identifier for the protocol. 
+
+
+  int protocol() const;
+
+
+
+[endsect]
+
+
+[section:raw_protocol generic::raw_protocol::raw_protocol]
+
+[indexterm2 raw_protocol..generic::raw_protocol] 
+Construct a protocol object for a specific address family and protocol. 
+
+
+  ``[link asio.reference.generic__raw_protocol.raw_protocol.overload1 raw_protocol]``(
+      int address_family,
+      int socket_protocol);
+  ``  [''''&raquo;''' [link asio.reference.generic__raw_protocol.raw_protocol.overload1 more...]]``
+
+
+Construct a generic protocol object from a specific protocol. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol]``>
+  ``[link asio.reference.generic__raw_protocol.raw_protocol.overload2 raw_protocol]``(
+      const Protocol & source_protocol);
+  ``  [''''&raquo;''' [link asio.reference.generic__raw_protocol.raw_protocol.overload2 more...]]``
+
+
+[section:overload1 generic::raw_protocol::raw_protocol (1 of 2 overloads)]
+
+
+Construct a protocol object for a specific address family and protocol. 
+
+
+  raw_protocol(
+      int address_family,
+      int socket_protocol);
+
+
+
+[endsect]
+
+
+
+[section:overload2 generic::raw_protocol::raw_protocol (2 of 2 overloads)]
+
+
+Construct a generic protocol object from a specific protocol. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol]``>
+  raw_protocol(
+      const Protocol & source_protocol);
+
+
+
+[heading Exceptions]
+    
+
+[variablelist
+  
+[[@c][bad\_cast Thrown if the source protocol is not raw-oriented. ]]
+
+]
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:socket generic::raw_protocol::socket]
+
+[indexterm2 socket..generic::raw_protocol] 
+The generic socket type. 
+
+
+  typedef basic_raw_socket< raw_protocol > socket;
+
+
+[heading Types]
+[table
+  [[Name][Description]]
+
+  [
+
+    [[link asio.reference.basic_raw_socket.broadcast [*broadcast]]]
+    [Socket option to permit sending of broadcast messages. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_raw_socket.bytes_readable [*bytes_readable]]]
+    [IO control command to get the amount of data that can be read without blocking. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_raw_socket.debug [*debug]]]
+    [Socket option to enable socket-level debugging. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_raw_socket.do_not_route [*do_not_route]]]
+    [Socket option to prevent routing, use local interfaces only. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_raw_socket.enable_connection_aborted [*enable_connection_aborted]]]
+    [Socket option to report aborted connections on accept. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_raw_socket.endpoint_type [*endpoint_type]]]
+    [The endpoint type. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_raw_socket.implementation_type [*implementation_type]]]
+    [The underlying implementation type of I/O object. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_raw_socket.keep_alive [*keep_alive]]]
+    [Socket option to send keep-alives. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_raw_socket.linger [*linger]]]
+    [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_raw_socket.lowest_layer_type [*lowest_layer_type]]]
+    [A basic_socket is always the lowest layer. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_raw_socket.message_flags [*message_flags]]]
+    [Bitmask type for flags that can be passed to send and receive operations. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_raw_socket.native_handle_type [*native_handle_type]]]
+    [The native representation of a socket. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_raw_socket.native_type [*native_type]]]
+    [(Deprecated: Use native_handle_type.) The native representation of a socket. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_raw_socket.non_blocking_io [*non_blocking_io]]]
+    [(Deprecated: Use non_blocking().) IO control command to set the blocking mode of the socket. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_raw_socket.protocol_type [*protocol_type]]]
+    [The protocol type. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_raw_socket.receive_buffer_size [*receive_buffer_size]]]
+    [Socket option for the receive buffer size of a socket. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_raw_socket.receive_low_watermark [*receive_low_watermark]]]
+    [Socket option for the receive low watermark. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_raw_socket.reuse_address [*reuse_address]]]
+    [Socket option to allow the socket to be bound to an address that is already in use. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_raw_socket.send_buffer_size [*send_buffer_size]]]
+    [Socket option for the send buffer size of a socket. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_raw_socket.send_low_watermark [*send_low_watermark]]]
+    [Socket option for the send low watermark. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_raw_socket.service_type [*service_type]]]
+    [The type of the service that will be used to provide I/O operations. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_raw_socket.shutdown_type [*shutdown_type]]]
+    [Different ways a socket may be shutdown. ]
+  
+  ]
+
+]
+
+[heading Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_raw_socket.assign [*assign]]]
+    [Assign an existing native socket to the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.async_connect [*async_connect]]]
+    [Start an asynchronous connect. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.async_receive [*async_receive]]]
+    [Start an asynchronous receive on a connected socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.async_receive_from [*async_receive_from]]]
+    [Start an asynchronous receive. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.async_send [*async_send]]]
+    [Start an asynchronous send on a connected socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.async_send_to [*async_send_to]]]
+    [Start an asynchronous send. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.at_mark [*at_mark]]]
+    [Determine whether the socket is at the out-of-band data mark. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.available [*available]]]
+    [Determine the number of bytes available for reading. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.basic_raw_socket [*basic_raw_socket]]]
+    [Construct a basic_raw_socket without opening it. 
+
+     Construct and open a basic_raw_socket. 
+
+     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. 
+
+     Move-construct a basic_raw_socket from another. 
+
+     Move-construct a basic_raw_socket from a socket of another protocol type. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.bind [*bind]]]
+    [Bind the socket to the given local endpoint. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.cancel [*cancel]]]
+    [Cancel all asynchronous operations associated with the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.close [*close]]]
+    [Close the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.connect [*connect]]]
+    [Connect the socket to the specified endpoint. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.get_io_service [*get_io_service]]]
+    [Get the io_service associated with the object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.get_option [*get_option]]]
+    [Get an option from the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.io_control [*io_control]]]
+    [Perform an IO control command on the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.is_open [*is_open]]]
+    [Determine whether the socket is open. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.local_endpoint [*local_endpoint]]]
+    [Get the local endpoint of the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.lowest_layer [*lowest_layer]]]
+    [Get a reference to the lowest layer. 
+
+     Get a const reference to the lowest layer. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.native [*native]]]
+    [(Deprecated: Use native_handle().) Get the native socket representation. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.native_handle [*native_handle]]]
+    [Get the native socket representation. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.native_non_blocking [*native_non_blocking]]]
+    [Gets the non-blocking mode of the native socket implementation. 
+
+     Sets the non-blocking mode of the native socket implementation. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.non_blocking [*non_blocking]]]
+    [Gets the non-blocking mode of the socket. 
+
+     Sets the non-blocking mode of the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.open [*open]]]
+    [Open the socket using the specified protocol. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.operator_eq_ [*operator=]]]
+    [Move-assign a basic_raw_socket from another. 
+
+     Move-assign a basic_raw_socket from a socket of another protocol type. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.receive [*receive]]]
+    [Receive some data on a connected socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.receive_from [*receive_from]]]
+    [Receive raw data with the endpoint of the sender. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.remote_endpoint [*remote_endpoint]]]
+    [Get the remote endpoint of the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.send [*send]]]
+    [Send some data on a connected socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.send_to [*send_to]]]
+    [Send raw data to the specified endpoint. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.set_option [*set_option]]]
+    [Set an option on the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_raw_socket.shutdown [*shutdown]]]
+    [Disable sends or receives on the socket. ]
+  ]
+  
+]
+
+[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]]
+
+  [
+    [[link asio.reference.basic_raw_socket.max_connections [*max_connections]]]
+    [The maximum length of the queue of pending incoming connections. ]
+  ]
+
+  [
+    [[link asio.reference.basic_raw_socket.message_do_not_route [*message_do_not_route]]]
+    [Specify that the data should not be subject to routing. ]
+  ]
+
+  [
+    [[link asio.reference.basic_raw_socket.message_end_of_record [*message_end_of_record]]]
+    [Specifies that the data marks the end of a record. ]
+  ]
+
+  [
+    [[link asio.reference.basic_raw_socket.message_out_of_band [*message_out_of_band]]]
+    [Process out-of-band data. ]
+  ]
+
+  [
+    [[link asio.reference.basic_raw_socket.message_peek [*message_peek]]]
+    [Peek at incoming data without removing it from the input queue. ]
+  ]
+
+]
+
+[heading Protected Data Members]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_raw_socket.implementation [*implementation]]]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
+  ]
+
+  [
+    [[link asio.reference.basic_raw_socket.service [*service]]]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
+  ]
+
+]
+
+The [link asio.reference.basic_raw_socket `basic_raw_socket`] class template provides asynchronous and blocking raw-oriented socket functionality.
+
+
+[heading Thread Safety]
+  
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Unsafe. 
+
+
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/raw_protocol.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:type generic::raw_protocol::type]
+
+[indexterm2 type..generic::raw_protocol] 
+Obtain an identifier for the type of the protocol. 
+
+
+  int type() const;
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:generic__seq_packet_protocol generic::seq_packet_protocol]
+
+
+Encapsulates the flags needed for a generic sequenced packet socket. 
+
+
+  class seq_packet_protocol
+
+
+[heading Types]
+[table
+  [[Name][Description]]
+
+  [
+
+    [[link asio.reference.generic__seq_packet_protocol.endpoint [*endpoint]]]
+    [The type of an endpoint. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.generic__seq_packet_protocol.socket [*socket]]]
+    [The generic socket type. ]
+  
+  ]
+
+]
+
+[heading Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.generic__seq_packet_protocol.family [*family]]]
+    [Obtain an identifier for the protocol family. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__seq_packet_protocol.protocol [*protocol]]]
+    [Obtain an identifier for the protocol. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__seq_packet_protocol.seq_packet_protocol [*seq_packet_protocol]]]
+    [Construct a protocol object for a specific address family and protocol. 
+
+     Construct a generic protocol object from a specific protocol. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__seq_packet_protocol.type [*type]]]
+    [Obtain an identifier for the type of the protocol. ]
+  ]
+  
+]
+
+[heading Friends]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.generic__seq_packet_protocol.operator_not__eq_ [*operator!=]]]
+    [Compare two protocols for inequality. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__seq_packet_protocol.operator_eq__eq_ [*operator==]]]
+    [Compare two protocols for equality. ]
+  ]
+  
+]
+
+The [link asio.reference.generic__seq_packet_protocol `generic::seq_packet_protocol`] class contains flags necessary for seq\_packet-oriented sockets of any address family and protocol.
+
+
+[heading Examples]
+  
+Constructing using a native address family and socket protocol: 
+
+   seq_packet_protocol p(AF_INET, IPPROTO_SCTP); 
+
+
+
+
+
+[heading Thread Safety]
+  
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Safe.
+
+
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/seq_packet_protocol.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[section:endpoint generic::seq_packet_protocol::endpoint]
+
+[indexterm2 endpoint..generic::seq_packet_protocol] 
+The type of an endpoint. 
+
+
+  typedef basic_endpoint< seq_packet_protocol > endpoint;
+
+
+[heading Types]
+[table
+  [[Name][Description]]
+
+  [
+
+    [[link asio.reference.generic__basic_endpoint.data_type [*data_type]]]
+    [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.generic__basic_endpoint.protocol_type [*protocol_type]]]
+    [The protocol type associated with the endpoint. ]
+  
+  ]
+
+]
+
+[heading Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.generic__basic_endpoint.basic_endpoint [*basic_endpoint]]]
+    [Default constructor. 
+
+     Construct an endpoint from the specified socket address. 
+
+     Construct an endpoint from the specific endpoint type. 
+
+     Copy constructor. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.capacity [*capacity]]]
+    [Get the capacity of the endpoint in the native type. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.data [*data]]]
+    [Get the underlying endpoint in the native type. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_eq_ [*operator=]]]
+    [Assign from another endpoint. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.protocol [*protocol]]]
+    [The protocol associated with the endpoint. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.resize [*resize]]]
+    [Set the underlying size of the endpoint in the native type. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.size [*size]]]
+    [Get the underlying size of the endpoint in the native type. ]
+  ]
+  
+]
+
+[heading Friends]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_not__eq_ [*operator!=]]]
+    [Compare two endpoints for inequality. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_lt_ [*operator<]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_lt__eq_ [*operator<=]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_eq__eq_ [*operator==]]]
+    [Compare two endpoints for equality. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_gt_ [*operator>]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_gt__eq_ [*operator>=]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+]
+
+The [link asio.reference.generic__basic_endpoint `generic::basic_endpoint`] class template describes an endpoint that may be associated with any socket type.
+
+
+[heading Remarks]
+      
+The socket types sockaddr type must be able to fit into a `sockaddr_storage` structure.
+
+
+[heading Thread Safety]
+  
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Unsafe.
+
+
+
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/seq_packet_protocol.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:family generic::seq_packet_protocol::family]
+
+[indexterm2 family..generic::seq_packet_protocol] 
+Obtain an identifier for the protocol family. 
+
+
+  int family() const;
+
+
+
+[endsect]
+
+
+
+[section:operator_not__eq_ generic::seq_packet_protocol::operator!=]
+
+[indexterm2 operator!=..generic::seq_packet_protocol] 
+Compare two protocols for inequality. 
+
+
+  friend bool operator!=(
+      const seq_packet_protocol & p1,
+      const seq_packet_protocol & p2);
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/seq_packet_protocol.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_eq__eq_ generic::seq_packet_protocol::operator==]
+
+[indexterm2 operator==..generic::seq_packet_protocol] 
+Compare two protocols for equality. 
+
+
+  friend bool operator==(
+      const seq_packet_protocol & p1,
+      const seq_packet_protocol & p2);
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/seq_packet_protocol.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:protocol generic::seq_packet_protocol::protocol]
+
+[indexterm2 protocol..generic::seq_packet_protocol] 
+Obtain an identifier for the protocol. 
+
+
+  int protocol() const;
+
+
+
+[endsect]
+
+
+[section:seq_packet_protocol generic::seq_packet_protocol::seq_packet_protocol]
+
+[indexterm2 seq_packet_protocol..generic::seq_packet_protocol] 
+Construct a protocol object for a specific address family and protocol. 
+
+
+  ``[link asio.reference.generic__seq_packet_protocol.seq_packet_protocol.overload1 seq_packet_protocol]``(
+      int address_family,
+      int socket_protocol);
+  ``  [''''&raquo;''' [link asio.reference.generic__seq_packet_protocol.seq_packet_protocol.overload1 more...]]``
+
+
+Construct a generic protocol object from a specific protocol. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol]``>
+  ``[link asio.reference.generic__seq_packet_protocol.seq_packet_protocol.overload2 seq_packet_protocol]``(
+      const Protocol & source_protocol);
+  ``  [''''&raquo;''' [link asio.reference.generic__seq_packet_protocol.seq_packet_protocol.overload2 more...]]``
+
+
+[section:overload1 generic::seq_packet_protocol::seq_packet_protocol (1 of 2 overloads)]
+
+
+Construct a protocol object for a specific address family and protocol. 
+
+
+  seq_packet_protocol(
+      int address_family,
+      int socket_protocol);
+
+
+
+[endsect]
+
+
+
+[section:overload2 generic::seq_packet_protocol::seq_packet_protocol (2 of 2 overloads)]
+
+
+Construct a generic protocol object from a specific protocol. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol]``>
+  seq_packet_protocol(
+      const Protocol & source_protocol);
+
+
+
+[heading Exceptions]
+    
+
+[variablelist
+  
+[[@c][bad\_cast Thrown if the source protocol is not based around sequenced packets. ]]
+
+]
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:socket generic::seq_packet_protocol::socket]
+
+[indexterm2 socket..generic::seq_packet_protocol] 
+The generic socket type. 
+
+
+  typedef basic_seq_packet_socket< seq_packet_protocol > socket;
+
+
+[heading Types]
+[table
+  [[Name][Description]]
+
+  [
+
+    [[link asio.reference.basic_seq_packet_socket.broadcast [*broadcast]]]
+    [Socket option to permit sending of broadcast messages. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_seq_packet_socket.bytes_readable [*bytes_readable]]]
+    [IO control command to get the amount of data that can be read without blocking. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_seq_packet_socket.debug [*debug]]]
+    [Socket option to enable socket-level debugging. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_seq_packet_socket.do_not_route [*do_not_route]]]
+    [Socket option to prevent routing, use local interfaces only. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_seq_packet_socket.enable_connection_aborted [*enable_connection_aborted]]]
+    [Socket option to report aborted connections on accept. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_seq_packet_socket.endpoint_type [*endpoint_type]]]
+    [The endpoint type. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_seq_packet_socket.implementation_type [*implementation_type]]]
+    [The underlying implementation type of I/O object. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_seq_packet_socket.keep_alive [*keep_alive]]]
+    [Socket option to send keep-alives. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_seq_packet_socket.linger [*linger]]]
+    [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_seq_packet_socket.lowest_layer_type [*lowest_layer_type]]]
+    [A basic_socket is always the lowest layer. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_seq_packet_socket.message_flags [*message_flags]]]
+    [Bitmask type for flags that can be passed to send and receive operations. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_seq_packet_socket.native_handle_type [*native_handle_type]]]
+    [The native representation of a socket. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_seq_packet_socket.native_type [*native_type]]]
+    [(Deprecated: Use native_handle_type.) The native representation of a socket. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_seq_packet_socket.non_blocking_io [*non_blocking_io]]]
+    [(Deprecated: Use non_blocking().) IO control command to set the blocking mode of the socket. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_seq_packet_socket.protocol_type [*protocol_type]]]
+    [The protocol type. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_seq_packet_socket.receive_buffer_size [*receive_buffer_size]]]
+    [Socket option for the receive buffer size of a socket. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_seq_packet_socket.receive_low_watermark [*receive_low_watermark]]]
+    [Socket option for the receive low watermark. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_seq_packet_socket.reuse_address [*reuse_address]]]
+    [Socket option to allow the socket to be bound to an address that is already in use. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_seq_packet_socket.send_buffer_size [*send_buffer_size]]]
+    [Socket option for the send buffer size of a socket. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_seq_packet_socket.send_low_watermark [*send_low_watermark]]]
+    [Socket option for the send low watermark. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_seq_packet_socket.service_type [*service_type]]]
+    [The type of the service that will be used to provide I/O operations. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_seq_packet_socket.shutdown_type [*shutdown_type]]]
+    [Different ways a socket may be shutdown. ]
+  
+  ]
+
+]
+
+[heading Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_seq_packet_socket.assign [*assign]]]
+    [Assign an existing native socket to the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.async_connect [*async_connect]]]
+    [Start an asynchronous connect. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.async_receive [*async_receive]]]
+    [Start an asynchronous receive. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.async_send [*async_send]]]
+    [Start an asynchronous send. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.at_mark [*at_mark]]]
+    [Determine whether the socket is at the out-of-band data mark. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.available [*available]]]
+    [Determine the number of bytes available for reading. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.basic_seq_packet_socket [*basic_seq_packet_socket]]]
+    [Construct a basic_seq_packet_socket without opening it. 
+
+     Construct and open a basic_seq_packet_socket. 
+
+     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. 
+
+     Move-construct a basic_seq_packet_socket from another. 
+
+     Move-construct a basic_seq_packet_socket from a socket of another protocol type. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.bind [*bind]]]
+    [Bind the socket to the given local endpoint. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.cancel [*cancel]]]
+    [Cancel all asynchronous operations associated with the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.close [*close]]]
+    [Close the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.connect [*connect]]]
+    [Connect the socket to the specified endpoint. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.get_io_service [*get_io_service]]]
+    [Get the io_service associated with the object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.get_option [*get_option]]]
+    [Get an option from the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.io_control [*io_control]]]
+    [Perform an IO control command on the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.is_open [*is_open]]]
+    [Determine whether the socket is open. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.local_endpoint [*local_endpoint]]]
+    [Get the local endpoint of the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.lowest_layer [*lowest_layer]]]
+    [Get a reference to the lowest layer. 
+
+     Get a const reference to the lowest layer. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.native [*native]]]
+    [(Deprecated: Use native_handle().) Get the native socket representation. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.native_handle [*native_handle]]]
+    [Get the native socket representation. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.native_non_blocking [*native_non_blocking]]]
+    [Gets the non-blocking mode of the native socket implementation. 
+
+     Sets the non-blocking mode of the native socket implementation. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.non_blocking [*non_blocking]]]
+    [Gets the non-blocking mode of the socket. 
+
+     Sets the non-blocking mode of the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.open [*open]]]
+    [Open the socket using the specified protocol. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.operator_eq_ [*operator=]]]
+    [Move-assign a basic_seq_packet_socket from another. 
+
+     Move-assign a basic_seq_packet_socket from a socket of another protocol type. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.receive [*receive]]]
+    [Receive some data on the socket. 
+
+     Receive some data on a connected socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.remote_endpoint [*remote_endpoint]]]
+    [Get the remote endpoint of the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.send [*send]]]
+    [Send some data on the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.set_option [*set_option]]]
+    [Set an option on the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_seq_packet_socket.shutdown [*shutdown]]]
+    [Disable sends or receives on the socket. ]
+  ]
+  
+]
+
+[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]]
+
+  [
+    [[link asio.reference.basic_seq_packet_socket.max_connections [*max_connections]]]
+    [The maximum length of the queue of pending incoming connections. ]
+  ]
+
+  [
+    [[link asio.reference.basic_seq_packet_socket.message_do_not_route [*message_do_not_route]]]
+    [Specify that the data should not be subject to routing. ]
+  ]
+
+  [
+    [[link asio.reference.basic_seq_packet_socket.message_end_of_record [*message_end_of_record]]]
+    [Specifies that the data marks the end of a record. ]
+  ]
+
+  [
+    [[link asio.reference.basic_seq_packet_socket.message_out_of_band [*message_out_of_band]]]
+    [Process out-of-band data. ]
+  ]
+
+  [
+    [[link asio.reference.basic_seq_packet_socket.message_peek [*message_peek]]]
+    [Peek at incoming data without removing it from the input queue. ]
+  ]
+
+]
+
+[heading Protected Data Members]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_seq_packet_socket.implementation [*implementation]]]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
+  ]
+
+  [
+    [[link asio.reference.basic_seq_packet_socket.service [*service]]]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
+  ]
+
+]
+
+The [link asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] class template provides asynchronous and blocking sequenced packet socket functionality.
+
+
+[heading Thread Safety]
+  
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Unsafe. 
+
+
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/seq_packet_protocol.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:type generic::seq_packet_protocol::type]
+
+[indexterm2 type..generic::seq_packet_protocol] 
+Obtain an identifier for the type of the protocol. 
+
+
+  int type() const;
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:generic__stream_protocol generic::stream_protocol]
+
+
+Encapsulates the flags needed for a generic stream-oriented socket. 
+
+
+  class stream_protocol
+
+
+[heading Types]
+[table
+  [[Name][Description]]
+
+  [
+
+    [[link asio.reference.generic__stream_protocol.endpoint [*endpoint]]]
+    [The type of an endpoint. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.generic__stream_protocol.iostream [*iostream]]]
+    [The generic socket iostream type. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.generic__stream_protocol.socket [*socket]]]
+    [The generic socket type. ]
+  
+  ]
+
+]
+
+[heading Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.generic__stream_protocol.family [*family]]]
+    [Obtain an identifier for the protocol family. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__stream_protocol.protocol [*protocol]]]
+    [Obtain an identifier for the protocol. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__stream_protocol.stream_protocol [*stream_protocol]]]
+    [Construct a protocol object for a specific address family and protocol. 
+
+     Construct a generic protocol object from a specific protocol. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__stream_protocol.type [*type]]]
+    [Obtain an identifier for the type of the protocol. ]
+  ]
+  
+]
+
+[heading Friends]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.generic__stream_protocol.operator_not__eq_ [*operator!=]]]
+    [Compare two protocols for inequality. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__stream_protocol.operator_eq__eq_ [*operator==]]]
+    [Compare two protocols for equality. ]
+  ]
+  
+]
+
+The [link asio.reference.generic__stream_protocol `generic::stream_protocol`] class contains flags necessary for stream-oriented sockets of any address family and protocol.
+
+
+[heading Examples]
+  
+Constructing using a native address family and socket protocol: 
+
+   stream_protocol p(AF_INET, IPPROTO_TCP); 
+
+
+Constructing from a specific protocol type: 
+
+   stream_protocol p(asio::ip::tcp::v4()); 
+
+
+
+
+
+[heading Thread Safety]
+  
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Safe.
+
+
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/stream_protocol.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[section:endpoint generic::stream_protocol::endpoint]
+
+[indexterm2 endpoint..generic::stream_protocol] 
+The type of an endpoint. 
+
+
+  typedef basic_endpoint< stream_protocol > endpoint;
+
+
+[heading Types]
+[table
+  [[Name][Description]]
+
+  [
+
+    [[link asio.reference.generic__basic_endpoint.data_type [*data_type]]]
+    [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.generic__basic_endpoint.protocol_type [*protocol_type]]]
+    [The protocol type associated with the endpoint. ]
+  
+  ]
+
+]
+
+[heading Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.generic__basic_endpoint.basic_endpoint [*basic_endpoint]]]
+    [Default constructor. 
+
+     Construct an endpoint from the specified socket address. 
+
+     Construct an endpoint from the specific endpoint type. 
+
+     Copy constructor. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.capacity [*capacity]]]
+    [Get the capacity of the endpoint in the native type. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.data [*data]]]
+    [Get the underlying endpoint in the native type. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_eq_ [*operator=]]]
+    [Assign from another endpoint. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.protocol [*protocol]]]
+    [The protocol associated with the endpoint. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.resize [*resize]]]
+    [Set the underlying size of the endpoint in the native type. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.size [*size]]]
+    [Get the underlying size of the endpoint in the native type. ]
+  ]
+  
+]
+
+[heading Friends]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_not__eq_ [*operator!=]]]
+    [Compare two endpoints for inequality. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_lt_ [*operator<]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_lt__eq_ [*operator<=]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_eq__eq_ [*operator==]]]
+    [Compare two endpoints for equality. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_gt_ [*operator>]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+  [
+    [[link asio.reference.generic__basic_endpoint.operator_gt__eq_ [*operator>=]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+]
+
+The [link asio.reference.generic__basic_endpoint `generic::basic_endpoint`] class template describes an endpoint that may be associated with any socket type.
+
+
+[heading Remarks]
+      
+The socket types sockaddr type must be able to fit into a `sockaddr_storage` structure.
+
+
+[heading Thread Safety]
+  
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Unsafe.
+
+
+
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/stream_protocol.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:family generic::stream_protocol::family]
+
+[indexterm2 family..generic::stream_protocol] 
+Obtain an identifier for the protocol family. 
+
+
+  int family() const;
+
+
+
+[endsect]
+
+
+
+[section:iostream generic::stream_protocol::iostream]
+
+[indexterm2 iostream..generic::stream_protocol] 
+The generic socket iostream type. 
+
+
+  typedef basic_socket_iostream< stream_protocol > iostream;
+
+
+[heading Types]
+[table
+  [[Name][Description]]
+
+  [
+
+    [[link asio.reference.basic_socket_iostream.duration_type [*duration_type]]]
+    [The duration type. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_socket_iostream.endpoint_type [*endpoint_type]]]
+    [The endpoint type. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_socket_iostream.time_type [*time_type]]]
+    [The time type. ]
+  
+  ]
+
+]
+
+[heading Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_socket_iostream.basic_socket_iostream [*basic_socket_iostream]]]
+    [Construct a basic_socket_iostream without establishing a connection. 
+
+     Establish a connection to an endpoint corresponding to a resolver query. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_socket_iostream.close [*close]]]
+    [Close the connection. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_socket_iostream.connect [*connect]]]
+    [Establish a connection to an endpoint corresponding to a resolver query. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_socket_iostream.error [*error]]]
+    [Get the last error associated with the stream. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_socket_iostream.expires_at [*expires_at]]]
+    [Get the stream's expiry time as an absolute time. 
+
+     Set the stream's expiry time as an absolute time. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_socket_iostream.expires_from_now [*expires_from_now]]]
+    [Get the timer's expiry time relative to now. 
+
+     Set the stream's expiry time relative to now. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_socket_iostream.rdbuf [*rdbuf]]]
+    [Return a pointer to the underlying streambuf. ]
+  ]
+  
+]
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/stream_protocol.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_not__eq_ generic::stream_protocol::operator!=]
+
+[indexterm2 operator!=..generic::stream_protocol] 
+Compare two protocols for inequality. 
+
+
+  friend bool operator!=(
+      const stream_protocol & p1,
+      const stream_protocol & p2);
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/stream_protocol.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_eq__eq_ generic::stream_protocol::operator==]
+
+[indexterm2 operator==..generic::stream_protocol] 
+Compare two protocols for equality. 
+
+
+  friend bool operator==(
+      const stream_protocol & p1,
+      const stream_protocol & p2);
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/stream_protocol.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+
+[section:protocol generic::stream_protocol::protocol]
+
+[indexterm2 protocol..generic::stream_protocol] 
+Obtain an identifier for the protocol. 
+
+
+  int protocol() const;
+
+
+
+[endsect]
+
+
+
+[section:socket generic::stream_protocol::socket]
+
+[indexterm2 socket..generic::stream_protocol] 
+The generic socket type. 
+
+
+  typedef basic_stream_socket< stream_protocol > socket;
+
+
+[heading Types]
+[table
+  [[Name][Description]]
+
+  [
+
+    [[link asio.reference.basic_stream_socket.broadcast [*broadcast]]]
+    [Socket option to permit sending of broadcast messages. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_stream_socket.bytes_readable [*bytes_readable]]]
+    [IO control command to get the amount of data that can be read without blocking. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_stream_socket.debug [*debug]]]
+    [Socket option to enable socket-level debugging. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_stream_socket.do_not_route [*do_not_route]]]
+    [Socket option to prevent routing, use local interfaces only. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_stream_socket.enable_connection_aborted [*enable_connection_aborted]]]
+    [Socket option to report aborted connections on accept. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_stream_socket.endpoint_type [*endpoint_type]]]
+    [The endpoint type. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_stream_socket.implementation_type [*implementation_type]]]
+    [The underlying implementation type of I/O object. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_stream_socket.keep_alive [*keep_alive]]]
+    [Socket option to send keep-alives. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_stream_socket.linger [*linger]]]
+    [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_stream_socket.lowest_layer_type [*lowest_layer_type]]]
+    [A basic_socket is always the lowest layer. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_stream_socket.message_flags [*message_flags]]]
+    [Bitmask type for flags that can be passed to send and receive operations. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_stream_socket.native_handle_type [*native_handle_type]]]
+    [The native representation of a socket. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_stream_socket.native_type [*native_type]]]
+    [(Deprecated: Use native_handle_type.) The native representation of a socket. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_stream_socket.non_blocking_io [*non_blocking_io]]]
+    [(Deprecated: Use non_blocking().) IO control command to set the blocking mode of the socket. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_stream_socket.protocol_type [*protocol_type]]]
+    [The protocol type. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_stream_socket.receive_buffer_size [*receive_buffer_size]]]
+    [Socket option for the receive buffer size of a socket. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_stream_socket.receive_low_watermark [*receive_low_watermark]]]
+    [Socket option for the receive low watermark. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_stream_socket.reuse_address [*reuse_address]]]
+    [Socket option to allow the socket to be bound to an address that is already in use. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_stream_socket.send_buffer_size [*send_buffer_size]]]
+    [Socket option for the send buffer size of a socket. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_stream_socket.send_low_watermark [*send_low_watermark]]]
+    [Socket option for the send low watermark. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_stream_socket.service_type [*service_type]]]
+    [The type of the service that will be used to provide I/O operations. ]
+  
+  ]
+
+  [
+
+    [[link asio.reference.basic_stream_socket.shutdown_type [*shutdown_type]]]
+    [Different ways a socket may be shutdown. ]
+  
+  ]
+
+]
+
+[heading Member Functions]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_stream_socket.assign [*assign]]]
+    [Assign an existing native socket to the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.async_connect [*async_connect]]]
+    [Start an asynchronous connect. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.async_read_some [*async_read_some]]]
+    [Start an asynchronous read. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.async_receive [*async_receive]]]
+    [Start an asynchronous receive. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.async_send [*async_send]]]
+    [Start an asynchronous send. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.async_write_some [*async_write_some]]]
+    [Start an asynchronous write. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.at_mark [*at_mark]]]
+    [Determine whether the socket is at the out-of-band data mark. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.available [*available]]]
+    [Determine the number of bytes available for reading. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.basic_stream_socket [*basic_stream_socket]]]
+    [Construct a basic_stream_socket without opening it. 
+
+     Construct and open a basic_stream_socket. 
+
+     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. 
+
+     Move-construct a basic_stream_socket from another. 
+
+     Move-construct a basic_stream_socket from a socket of another protocol type. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.bind [*bind]]]
+    [Bind the socket to the given local endpoint. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.cancel [*cancel]]]
+    [Cancel all asynchronous operations associated with the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.close [*close]]]
+    [Close the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.connect [*connect]]]
+    [Connect the socket to the specified endpoint. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.get_io_service [*get_io_service]]]
+    [Get the io_service associated with the object. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.get_option [*get_option]]]
+    [Get an option from the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.io_control [*io_control]]]
+    [Perform an IO control command on the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.is_open [*is_open]]]
+    [Determine whether the socket is open. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.local_endpoint [*local_endpoint]]]
+    [Get the local endpoint of the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.lowest_layer [*lowest_layer]]]
+    [Get a reference to the lowest layer. 
+
+     Get a const reference to the lowest layer. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.native [*native]]]
+    [(Deprecated: Use native_handle().) Get the native socket representation. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.native_handle [*native_handle]]]
+    [Get the native socket representation. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.native_non_blocking [*native_non_blocking]]]
+    [Gets the non-blocking mode of the native socket implementation. 
+
+     Sets the non-blocking mode of the native socket implementation. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.non_blocking [*non_blocking]]]
+    [Gets the non-blocking mode of the socket. 
+
+     Sets the non-blocking mode of the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.open [*open]]]
+    [Open the socket using the specified protocol. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.operator_eq_ [*operator=]]]
+    [Move-assign a basic_stream_socket from another. 
+
+     Move-assign a basic_stream_socket from a socket of another protocol type. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.read_some [*read_some]]]
+    [Read some data from the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.receive [*receive]]]
+    [Receive some data on the socket. 
+
+     Receive some data on a connected socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.remote_endpoint [*remote_endpoint]]]
+    [Get the remote endpoint of the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.send [*send]]]
+    [Send some data on the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.set_option [*set_option]]]
+    [Set an option on the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.shutdown [*shutdown]]]
+    [Disable sends or receives on the socket. ]
+  ]
+  
+  [
+    [[link asio.reference.basic_stream_socket.write_some [*write_some]]]
+    [Write some data to the socket. ]
+  ]
+  
+]
+
+[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]]
+
+  [
+    [[link asio.reference.basic_stream_socket.max_connections [*max_connections]]]
+    [The maximum length of the queue of pending incoming connections. ]
+  ]
+
+  [
+    [[link asio.reference.basic_stream_socket.message_do_not_route [*message_do_not_route]]]
+    [Specify that the data should not be subject to routing. ]
+  ]
+
+  [
+    [[link asio.reference.basic_stream_socket.message_end_of_record [*message_end_of_record]]]
+    [Specifies that the data marks the end of a record. ]
+  ]
+
+  [
+    [[link asio.reference.basic_stream_socket.message_out_of_band [*message_out_of_band]]]
+    [Process out-of-band data. ]
+  ]
+
+  [
+    [[link asio.reference.basic_stream_socket.message_peek [*message_peek]]]
+    [Peek at incoming data without removing it from the input queue. ]
+  ]
+
+]
+
+[heading Protected Data Members]
+[table
+  [[Name][Description]]
+
+  [
+    [[link asio.reference.basic_stream_socket.implementation [*implementation]]]
+    [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
+  ]
+
+  [
+    [[link asio.reference.basic_stream_socket.service [*service]]]
+    [(Deprecated: Use get_service().) The service associated with the I/O object. ]
+  ]
+
+]
+
+The [link asio.reference.basic_stream_socket `basic_stream_socket`] class template provides asynchronous and blocking stream-oriented socket functionality.
+
+
+[heading Thread Safety]
+  
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Unsafe.
+
+
+
+
+
+[heading Requirements]
+
+['Header: ][^asio/generic/stream_protocol.hpp]
+
+['Convenience header: ][^asio.hpp]
+
+
+[endsect]
+
+
+[section:stream_protocol generic::stream_protocol::stream_protocol]
+
+[indexterm2 stream_protocol..generic::stream_protocol] 
+Construct a protocol object for a specific address family and protocol. 
+
+
+  ``[link asio.reference.generic__stream_protocol.stream_protocol.overload1 stream_protocol]``(
+      int address_family,
+      int socket_protocol);
+  ``  [''''&raquo;''' [link asio.reference.generic__stream_protocol.stream_protocol.overload1 more...]]``
+
+
+Construct a generic protocol object from a specific protocol. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol]``>
+  ``[link asio.reference.generic__stream_protocol.stream_protocol.overload2 stream_protocol]``(
+      const Protocol & source_protocol);
+  ``  [''''&raquo;''' [link asio.reference.generic__stream_protocol.stream_protocol.overload2 more...]]``
+
+
+[section:overload1 generic::stream_protocol::stream_protocol (1 of 2 overloads)]
+
+
+Construct a protocol object for a specific address family and protocol. 
+
+
+  stream_protocol(
+      int address_family,
+      int socket_protocol);
+
+
+
+[endsect]
+
+
+
+[section:overload2 generic::stream_protocol::stream_protocol (2 of 2 overloads)]
+
+
+Construct a generic protocol object from a specific protocol. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol]``>
+  stream_protocol(
+      const Protocol & source_protocol);
+
+
+
+[heading Exceptions]
+    
+
+[variablelist
+  
+[[@c][bad\_cast Thrown if the source protocol is not stream-oriented. ]]
+
+]
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:type generic::stream_protocol::type]
+
+[indexterm2 type..generic::stream_protocol] 
+Obtain an identifier for the type of the protocol. 
+
+
+  int type() const;
+
+
+
+[endsect]
+
 
 
 [endsect]
@@ -54692,7 +59840,7 @@
 
   template<
       typename ``[link asio.reference.Handler Handler]``,
-      typename ``[link asio.reference.Signature Signature]``>
+      typename Signature>
   struct handler_type
 
 
@@ -54715,9 +59863,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/handler_type.hpp]
+['Header: ][^asio/handler_type.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:type handler_type::type]
@@ -54732,9 +59880,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/handler_type.hpp]
+['Header: ][^asio/handler_type.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -54743,281 +59891,6 @@
 
 [endsect]
 
-[section:handler_type_lt__Handler_&,_Signature__gt_ handler_type< Handler &, Signature >]
-
-
-
-  template<
-      typename ``[link asio.reference.Handler Handler]``,
-      typename ``[link asio.reference.Signature Signature]``>
-  struct handler_type< Handler &, Signature > :
-    public handler_type< Handler, Signature >
-
-
-[heading Requirements]
-
-[*Header: ][^asio/handler_type.hpp]
-
-[*Convenience header: ][^asio.hpp]
-
-
-[endsect]
-
-[section:handler_type_lt__ReturnType_lp__rp_,_Signature__gt_ handler_type< ReturnType(), Signature >]
-
-
-
-  template<
-      typename ``[link asio.reference.ReturnType ReturnType]``,
-      typename ``[link asio.reference.Signature Signature]``>
-  struct handler_type< ReturnType(), Signature > :
-    public handler_type< ReturnType(*)(), Signature >
-
-
-[heading Requirements]
-
-[*Header: ][^asio/handler_type.hpp]
-
-[*Convenience header: ][^asio.hpp]
-
-
-[endsect]
-
-[section:handler_type_lt__ReturnType_lp_Arg1_rp_,_Signature__gt_ handler_type< ReturnType(Arg1), Signature >]
-
-
-
-  template<
-      typename ``[link asio.reference.ReturnType ReturnType]``,
-      typename ``[link asio.reference.Arg1 Arg1]``,
-      typename ``[link asio.reference.Signature Signature]``>
-  struct handler_type< ReturnType(Arg1), Signature > :
-    public handler_type< ReturnType(*)(Arg1), Signature >
-
-
-[heading Requirements]
-
-[*Header: ][^asio/handler_type.hpp]
-
-[*Convenience header: ][^asio.hpp]
-
-
-[endsect]
-
-[section:handler_type_lt__ReturnType_lp_Arg1,_Arg2_rp_,_Signature__gt_ handler_type< ReturnType(Arg1, Arg2), Signature >]
-
-
-
-  template<
-      typename ``[link asio.reference.ReturnType ReturnType]``,
-      typename ``[link asio.reference.Arg1 Arg1]``,
-      typename ``[link asio.reference.Arg2 Arg2]``,
-      typename ``[link asio.reference.Signature Signature]``>
-  struct handler_type< ReturnType(Arg1, Arg2), Signature > :
-    public handler_type< ReturnType(*)(Arg1, Arg2), Signature >
-
-
-[heading Requirements]
-
-[*Header: ][^asio/handler_type.hpp]
-
-[*Convenience header: ][^asio.hpp]
-
-
-[endsect]
-
-[section:handler_type_lt__ReturnType_lp_Arg1,_Arg2,_Arg3_rp_,_Signature__gt_ handler_type< ReturnType(Arg1, Arg2, Arg3), Signature >]
-
-
-
-  template<
-      typename ``[link asio.reference.ReturnType ReturnType]``,
-      typename ``[link asio.reference.Arg1 Arg1]``,
-      typename ``[link asio.reference.Arg2 Arg2]``,
-      typename ``[link asio.reference.Arg3 Arg3]``,
-      typename ``[link asio.reference.Signature Signature]``>
-  struct handler_type< ReturnType(Arg1, Arg2, Arg3), Signature > :
-    public handler_type< ReturnType(*)(Arg1, Arg2, Arg3), Signature >
-
-
-[heading Requirements]
-
-[*Header: ][^asio/handler_type.hpp]
-
-[*Convenience header: ][^asio.hpp]
-
-
-[endsect]
-
-[section:handler_type_lt__ReturnType_lp_Arg1,_Arg2,_Arg3,_Arg4_rp_,_Signature__gt_ handler_type< ReturnType(Arg1, Arg2, Arg3, Arg4), Signature >]
-
-
-
-  template<
-      typename ``[link asio.reference.ReturnType ReturnType]``,
-      typename ``[link asio.reference.Arg1 Arg1]``,
-      typename ``[link asio.reference.Arg2 Arg2]``,
-      typename ``[link asio.reference.Arg3 Arg3]``,
-      typename ``[link asio.reference.Arg4 Arg4]``,
-      typename ``[link asio.reference.Signature Signature]``>
-  struct handler_type< ReturnType(Arg1, Arg2, Arg3, Arg4), Signature > :
-    public handler_type< ReturnType(*)(Arg1, Arg2, Arg3, Arg4), Signature >
-
-
-[heading Requirements]
-
-[*Header: ][^asio/handler_type.hpp]
-
-[*Convenience header: ][^asio.hpp]
-
-
-[endsect]
-
-[section:handler_type_lt__ReturnType_lp_Arg1,_Arg2,_Arg3,_Arg4,_Arg5_rp_,_Signature__gt_ handler_type< ReturnType(Arg1, Arg2, Arg3, Arg4, Arg5), Signature >]
-
-
-
-  template<
-      typename ``[link asio.reference.ReturnType ReturnType]``,
-      typename ``[link asio.reference.Arg1 Arg1]``,
-      typename ``[link asio.reference.Arg2 Arg2]``,
-      typename ``[link asio.reference.Arg3 Arg3]``,
-      typename ``[link asio.reference.Arg4 Arg4]``,
-      typename ``[link asio.reference.Arg5 Arg5]``,
-      typename ``[link asio.reference.Signature Signature]``>
-  struct handler_type< ReturnType(Arg1, Arg2, Arg3, Arg4, Arg5), Signature > :
-    public handler_type< ReturnType(*)(Arg1, Arg2, Arg3, Arg4, Arg5), Signature >
-
-
-[heading Requirements]
-
-[*Header: ][^asio/handler_type.hpp]
-
-[*Convenience header: ][^asio.hpp]
-
-
-[endsect]
-
-[section:handler_type_lt__const_Handler_&,_Signature__gt_ handler_type< const Handler &, Signature >]
-
-
-
-  template<
-      typename ``[link asio.reference.Handler Handler]``,
-      typename ``[link asio.reference.Signature Signature]``>
-  struct handler_type< const Handler &, Signature > :
-    public handler_type< Handler, Signature >
-
-
-[heading Requirements]
-
-[*Header: ][^asio/handler_type.hpp]
-
-[*Convenience header: ][^asio.hpp]
-
-
-[endsect]
-
-[section:handler_type_lt__const_Handler,_Signature__gt_ handler_type< const Handler, Signature >]
-
-
-
-  template<
-      typename ``[link asio.reference.Handler Handler]``,
-      typename ``[link asio.reference.Signature Signature]``>
-  struct handler_type< const Handler, Signature > :
-    public handler_type< Handler, Signature >
-
-
-[heading Requirements]
-
-[*Header: ][^asio/handler_type.hpp]
-
-[*Convenience header: ][^asio.hpp]
-
-
-[endsect]
-
-[section:handler_type_lt__const_volatile_Handler_&,_Signature__gt_ handler_type< const volatile Handler &, Signature >]
-
-
-
-  template<
-      typename ``[link asio.reference.Handler Handler]``,
-      typename ``[link asio.reference.Signature Signature]``>
-  struct handler_type< const volatile Handler &, Signature > :
-    public handler_type< Handler, Signature >
-
-
-[heading Requirements]
-
-[*Header: ][^asio/handler_type.hpp]
-
-[*Convenience header: ][^asio.hpp]
-
-
-[endsect]
-
-[section:handler_type_lt__const_volatile_Handler,_Signature__gt_ handler_type< const volatile Handler, Signature >]
-
-
-
-  template<
-      typename ``[link asio.reference.Handler Handler]``,
-      typename ``[link asio.reference.Signature Signature]``>
-  struct handler_type< const volatile Handler, Signature > :
-    public handler_type< Handler, Signature >
-
-
-[heading Requirements]
-
-[*Header: ][^asio/handler_type.hpp]
-
-[*Convenience header: ][^asio.hpp]
-
-
-[endsect]
-
-[section:handler_type_lt__volatile_Handler_&,_Signature__gt_ handler_type< volatile Handler &, Signature >]
-
-
-
-  template<
-      typename ``[link asio.reference.Handler Handler]``,
-      typename ``[link asio.reference.Signature Signature]``>
-  struct handler_type< volatile Handler &, Signature > :
-    public handler_type< Handler, Signature >
-
-
-[heading Requirements]
-
-[*Header: ][^asio/handler_type.hpp]
-
-[*Convenience header: ][^asio.hpp]
-
-
-[endsect]
-
-[section:handler_type_lt__volatile_Handler,_Signature__gt_ handler_type< volatile Handler, Signature >]
-
-
-
-  template<
-      typename ``[link asio.reference.Handler Handler]``,
-      typename ``[link asio.reference.Signature Signature]``>
-  struct handler_type< volatile Handler, Signature > :
-    public handler_type< Handler, Signature >
-
-
-[heading Requirements]
-
-[*Header: ][^asio/handler_type.hpp]
-
-[*Convenience header: ][^asio.hpp]
-
-
-[endsect]
-
 
 [section:has_service has_service]
 
@@ -55050,9 +59923,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/io_service.hpp]
+['Header: ][^asio/io_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -55206,7 +60079,7 @@
 
 A waitable timer is always in one of two states: "expired" or "not expired". If the `wait()` or `async_wait()` function is called on an expired timer, the wait operation will complete immediately.
 
-Most applications will use the asio::waitable\_timer typedef.
+Most applications will use one of the [link asio.reference.steady_timer `steady_timer`], [link asio.reference.system_timer `system_timer`] or [link asio.reference.high_resolution_timer `high_resolution_timer`] typedefs.
 
 
 [heading Remarks]
@@ -55216,20 +60089,20 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Examples]
   
-Performing a blocking wait: 
+Performing a blocking wait (C++11): 
 
    // Construct a timer without setting an expiry time.
-   asio::waitable_timer timer(io_service);
+   asio::steady_timer timer(io_service);
 
    // Set an expiry time relative to now.
-   timer.expires_from_now(boost::posix_time::seconds(5));
+   timer.expires_from_now(std::chrono::seconds(5));
 
    // Wait for the timer to expire.
    timer.wait();
@@ -55238,7 +60111,7 @@
 
 
 
-Performing an asynchronous wait: 
+Performing an asynchronous wait (C++11): 
 
    void handler(const asio::error_code& error)
    {
@@ -55251,8 +60124,8 @@
    ...
 
    // Construct a timer with an absolute expiry time.
-   asio::waitable_timer timer(io_service,
-       boost::posix_time::time_from_string("2005-12-07 23:59:59.000"));
+   asio::steady_timer timer(io_service,
+       std::chrono::steady_clock::now() + std::chrono::seconds(60));
 
    // Start an asynchronous wait.
    timer.async_wait(handler);
@@ -55261,7 +60134,7 @@
 
 
 
-[heading Changing an active waitable_timer's expiry time]
+[heading Changing an active waitable timer's expiry time]
   
 
 
@@ -55311,9 +60184,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/high_resolution_timer.hpp]
+['Header: ][^asio/high_resolution_timer.hpp]
 
-[*Convenience header: ]None
+['Convenience header: ]None
 
 
 [endsect]
@@ -55341,9 +60214,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/io_service.hpp]
+['Header: ][^asio/io_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:invalid_service_owner invalid_service_owner::invalid_service_owner]
@@ -55519,9 +60392,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*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.
+['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.
 
 
 
@@ -55538,7 +60411,7 @@
 
 If an exception is thrown from a handler, the exception is allowed to propagate through the throwing thread's invocation of `run()`, `run_one()`, `poll()` or `poll_one()`. No other threads that are calling any of these functions are affected. It is then the responsibility of the application to catch the exception.
 
-After the exception has been caught, the `run()`, `run_one()`, `poll()` or `poll_one()` call may be restarted [*without] the need for an intervening call to `reset()`. This allows the thread to rejoin the [link asio.reference.io_service `io_service`] object's thread pool without impacting any other threads in the pool.
+After the exception has been caught, the `run()`, `run_one()`, `poll()` or `poll_one()` call may be restarted ['without] the need for an intervening call to `reset()`. This allows the thread to rejoin the [link asio.reference.io_service `io_service`] object's thread pool without impacting any other threads in the pool.
 
 For example:
 
@@ -55614,9 +60487,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/io_service.hpp]
+['Header: ][^asio/io_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:add_service io_service::add_service]
@@ -55666,9 +60539,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/io_service.hpp]
+['Header: ][^asio/io_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -55683,7 +60556,7 @@
 
   template<
       typename ``[link asio.reference.CompletionHandler CompletionHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` dispatch(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` dispatch(
       CompletionHandler handler);
 
 
@@ -55794,9 +60667,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/io_service.hpp]
+['Header: ][^asio/io_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -56099,7 +60972,7 @@
 
   template<
       typename ``[link asio.reference.CompletionHandler CompletionHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` post(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` post(
       CompletionHandler handler);
 
 
@@ -56403,9 +61276,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/io_service.hpp]
+['Header: ][^asio/io_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -56535,9 +61408,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/io_service.hpp]
+['Header: ][^asio/io_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:id io_service::id::id]
@@ -56611,9 +61484,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/io_service.hpp]
+['Header: ][^asio/io_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:get_io_service io_service::service::get_io_service]
@@ -56803,18 +61676,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Safe.
+['Shared] ['objects:] Safe.
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/strand.hpp]
+['Header: ][^asio/strand.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:dispatch io_service::strand::dispatch]
@@ -56825,7 +61698,7 @@
 
   template<
       typename ``[link asio.reference.CompletionHandler CompletionHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` dispatch(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` dispatch(
       CompletionHandler handler);
 
 
@@ -56887,7 +61760,7 @@
 
   template<
       typename ``[link asio.reference.CompletionHandler CompletionHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` post(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` post(
       CompletionHandler handler);
 
 
@@ -57084,9 +61957,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/io_service.hpp]
+['Header: ][^asio/io_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:get_io_service io_service::work::get_io_service]
@@ -57307,17 +62180,17 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address.hpp]
+['Header: ][^asio/ip/address.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:address ip::address::address]
 
@@ -57585,9 +62458,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address.hpp]
+['Header: ][^asio/ip/address.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -57607,9 +62480,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address.hpp]
+['Header: ][^asio/ip/address.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -57669,9 +62542,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address.hpp]
+['Header: ][^asio/ip/address.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -57764,9 +62637,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address.hpp]
+['Header: ][^asio/ip/address.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -57786,9 +62659,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address.hpp]
+['Header: ][^asio/ip/address.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -57808,9 +62681,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address.hpp]
+['Header: ][^asio/ip/address.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -58059,17 +62932,17 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address_v4.hpp]
+['Header: ][^asio/ip/address_v4.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:address_v4 ip::address_v4::address_v4]
 
@@ -58249,9 +63122,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address_v4.hpp]
+['Header: ][^asio/ip/address_v4.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -58472,9 +63345,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address_v4.hpp]
+['Header: ][^asio/ip/address_v4.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -58494,9 +63367,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address_v4.hpp]
+['Header: ][^asio/ip/address_v4.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -58556,9 +63429,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address_v4.hpp]
+['Header: ][^asio/ip/address_v4.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -58593,9 +63466,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address_v4.hpp]
+['Header: ][^asio/ip/address_v4.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -58615,9 +63488,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address_v4.hpp]
+['Header: ][^asio/ip/address_v4.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -58637,9 +63510,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address_v4.hpp]
+['Header: ][^asio/ip/address_v4.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -58919,17 +63792,17 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address_v6.hpp]
+['Header: ][^asio/ip/address_v6.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:address_v6 ip::address_v6::address_v6]
 
@@ -59038,9 +63911,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address_v6.hpp]
+['Header: ][^asio/ip/address_v6.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -59330,9 +64203,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address_v6.hpp]
+['Header: ][^asio/ip/address_v6.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -59352,9 +64225,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address_v6.hpp]
+['Header: ][^asio/ip/address_v6.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -59414,9 +64287,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address_v6.hpp]
+['Header: ][^asio/ip/address_v6.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -59451,9 +64324,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address_v6.hpp]
+['Header: ][^asio/ip/address_v6.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -59473,9 +64346,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address_v6.hpp]
+['Header: ][^asio/ip/address_v6.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -59495,9 +64368,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/address_v6.hpp]
+['Header: ][^asio/ip/address_v6.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -59800,18 +64673,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_endpoint.hpp]
+['Header: ][^asio/ip/basic_endpoint.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:address ip::basic_endpoint::address]
 
@@ -60045,9 +64918,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_endpoint.hpp]
+['Header: ][^asio/ip/basic_endpoint.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -60067,9 +64940,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_endpoint.hpp]
+['Header: ][^asio/ip/basic_endpoint.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -60089,9 +64962,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_endpoint.hpp]
+['Header: ][^asio/ip/basic_endpoint.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -60148,9 +65021,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_endpoint.hpp]
+['Header: ][^asio/ip/basic_endpoint.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -60185,9 +65058,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_endpoint.hpp]
+['Header: ][^asio/ip/basic_endpoint.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -60207,9 +65080,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_endpoint.hpp]
+['Header: ][^asio/ip/basic_endpoint.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -60229,9 +65102,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_endpoint.hpp]
+['Header: ][^asio/ip/basic_endpoint.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -60312,9 +65185,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_endpoint.hpp]
+['Header: ][^asio/ip/basic_endpoint.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -60485,17 +65358,17 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_resolver.hpp]
+['Header: ][^asio/ip/basic_resolver.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:async_resolve ip::basic_resolver::async_resolve]
 
@@ -60505,7 +65378,7 @@
 
   template<
       typename ``[link asio.reference.ResolveHandler ResolveHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.ip__basic_resolver.async_resolve.overload1 async_resolve]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.ip__basic_resolver.async_resolve.overload1 async_resolve]``(
       const query & q,
       ResolveHandler handler);
   ``  [''''&raquo;''' [link asio.reference.ip__basic_resolver.async_resolve.overload1 more...]]``
@@ -60516,7 +65389,7 @@
 
   template<
       typename ``[link asio.reference.ResolveHandler ResolveHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.ip__basic_resolver.async_resolve.overload2 async_resolve]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.ip__basic_resolver.async_resolve.overload2 async_resolve]``(
       const endpoint_type & e,
       ResolveHandler handler);
   ``  [''''&raquo;''' [link asio.reference.ip__basic_resolver.async_resolve.overload2 more...]]``
@@ -60530,7 +65403,7 @@
 
   template<
       typename ``[link asio.reference.ResolveHandler ResolveHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_resolve(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_resolve(
       const query & q,
       ResolveHandler handler);
 
@@ -60578,7 +65451,7 @@
 
   template<
       typename ``[link asio.reference.ResolveHandler ResolveHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_resolve(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_resolve(
       const endpoint_type & e,
       ResolveHandler handler);
 
@@ -60677,9 +65550,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_resolver.hpp]
+['Header: ][^asio/ip/basic_resolver.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -60840,9 +65713,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_resolver.hpp]
+['Header: ][^asio/ip/basic_resolver.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -60962,18 +65835,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_resolver.hpp]
+['Header: ][^asio/ip/basic_resolver.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -60992,9 +65865,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_resolver.hpp]
+['Header: ][^asio/ip/basic_resolver.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -61108,18 +65981,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_resolver.hpp]
+['Header: ][^asio/ip/basic_resolver.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -61377,9 +66250,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_resolver.hpp]
+['Header: ][^asio/ip/basic_resolver.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -61457,17 +66330,17 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_resolver_entry.hpp]
+['Header: ][^asio/ip/basic_resolver_entry.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:basic_resolver_entry ip::basic_resolver_entry::basic_resolver_entry]
 
@@ -61548,9 +66421,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_resolver_entry.hpp]
+['Header: ][^asio/ip/basic_resolver_entry.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -61597,9 +66470,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_resolver_entry.hpp]
+['Header: ][^asio/ip/basic_resolver_entry.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -61737,17 +66610,17 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_resolver_iterator.hpp]
+['Header: ][^asio/ip/basic_resolver_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:basic_resolver_iterator ip::basic_resolver_iterator::basic_resolver_iterator]
@@ -61834,9 +66707,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_resolver_iterator.hpp]
+['Header: ][^asio/ip/basic_resolver_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -61855,9 +66728,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_resolver_iterator.hpp]
+['Header: ][^asio/ip/basic_resolver_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -61891,9 +66764,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_resolver_iterator.hpp]
+['Header: ][^asio/ip/basic_resolver_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -61975,9 +66848,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_resolver_iterator.hpp]
+['Header: ][^asio/ip/basic_resolver_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -61996,9 +66869,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_resolver_iterator.hpp]
+['Header: ][^asio/ip/basic_resolver_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -62072,18 +66945,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_resolver_iterator.hpp]
+['Header: ][^asio/ip/basic_resolver_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -62157,18 +67030,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_resolver_iterator.hpp]
+['Header: ][^asio/ip/basic_resolver_iterator.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -62287,17 +67160,17 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_resolver_query.hpp]
+['Header: ][^asio/ip/basic_resolver_query.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:address_configured ip::basic_resolver_query::address_configured]
@@ -62570,9 +67443,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_resolver_query.hpp]
+['Header: ][^asio/ip/basic_resolver_query.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -62670,9 +67543,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/basic_resolver_query.hpp]
+['Header: ][^asio/ip/basic_resolver_query.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -62727,9 +67600,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/host_name.hpp]
+['Header: ][^asio/ip/host_name.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:overload1 ip::host_name (1 of 2 overloads)]
@@ -62850,18 +67723,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Safe.
+['Shared] ['objects:] Safe.
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/icmp.hpp]
+['Header: ][^asio/ip/icmp.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:endpoint ip::icmp::endpoint]
@@ -63006,9 +67879,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -63016,9 +67889,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/icmp.hpp]
+['Header: ][^asio/ip/icmp.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -63052,9 +67925,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/icmp.hpp]
+['Header: ][^asio/ip/icmp.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -63074,9 +67947,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/icmp.hpp]
+['Header: ][^asio/ip/icmp.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -63226,18 +68099,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/icmp.hpp]
+['Header: ][^asio/ip/icmp.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -63467,7 +68340,9 @@
 
      Construct a basic_raw_socket on an existing native socket. 
 
-     Move-construct a basic_raw_socket from another. ]
+     Move-construct a basic_raw_socket from another. 
+
+     Move-construct a basic_raw_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -63553,7 +68428,9 @@
   
   [
     [[link asio.reference.basic_raw_socket.operator_eq_ [*operator=]]]
-    [Move-assign a basic_raw_socket from another. ]
+    [Move-assign a basic_raw_socket from another. 
+
+     Move-assign a basic_raw_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -63661,18 +68538,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/icmp.hpp]
+['Header: ][^asio/ip/icmp.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -63766,9 +68643,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/multicast.hpp]
+['Header: ][^asio/ip/multicast.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -63817,9 +68694,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/multicast.hpp]
+['Header: ][^asio/ip/multicast.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -63858,9 +68735,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/multicast.hpp]
+['Header: ][^asio/ip/multicast.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -63899,9 +68776,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/multicast.hpp]
+['Header: ][^asio/ip/multicast.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -63940,9 +68817,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/multicast.hpp]
+['Header: ][^asio/ip/multicast.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -64024,9 +68901,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/resolver_query_base.hpp]
+['Header: ][^asio/ip/resolver_query_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:address_configured ip::resolver_query_base::address_configured]
@@ -64083,9 +68960,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/resolver_query_base.hpp]
+['Header: ][^asio/ip/resolver_query_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -64275,9 +69152,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/resolver_service.hpp]
+['Header: ][^asio/ip/resolver_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:async_resolve ip::resolver_service::async_resolve]
 
@@ -64287,7 +69164,7 @@
 
   template<
       typename ``[link asio.reference.ResolveHandler ResolveHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.ip__resolver_service.async_resolve.overload1 async_resolve]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.ip__resolver_service.async_resolve.overload1 async_resolve]``(
       implementation_type & impl,
       const query_type & query,
       ResolveHandler handler);
@@ -64299,7 +69176,7 @@
 
   template<
       typename ``[link asio.reference.ResolveHandler ResolveHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link asio.reference.ip__resolver_service.async_resolve.overload2 async_resolve]``(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.ip__resolver_service.async_resolve.overload2 async_resolve]``(
       implementation_type & impl,
       const endpoint_type & endpoint,
       ResolveHandler handler);
@@ -64314,7 +69191,7 @@
 
   template<
       typename ``[link asio.reference.ResolveHandler ResolveHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_resolve(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_resolve(
       implementation_type & impl,
       const query_type & query,
       ResolveHandler handler);
@@ -64333,7 +69210,7 @@
 
   template<
       typename ``[link asio.reference.ResolveHandler ResolveHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_resolve(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_resolve(
       implementation_type & impl,
       const endpoint_type & endpoint,
       ResolveHandler handler);
@@ -64403,9 +69280,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/resolver_service.hpp]
+['Header: ][^asio/ip/resolver_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -64455,9 +69332,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/resolver_service.hpp]
+['Header: ][^asio/ip/resolver_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -64577,18 +69454,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/resolver_service.hpp]
+['Header: ][^asio/ip/resolver_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -64607,9 +69484,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/resolver_service.hpp]
+['Header: ][^asio/ip/resolver_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -64723,18 +69600,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/resolver_service.hpp]
+['Header: ][^asio/ip/resolver_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -64925,18 +69802,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Safe.
+['Shared] ['objects:] Safe.
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/tcp.hpp]
+['Header: ][^asio/ip/tcp.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:acceptor ip::tcp::acceptor]
@@ -65132,7 +70009,9 @@
 
      Construct a basic_socket_acceptor on an existing native acceptor. 
 
-     Move-construct a basic_socket_acceptor from another. ]
+     Move-construct a basic_socket_acceptor from another. 
+
+     Move-construct a basic_socket_acceptor from an acceptor of another protocol type. ]
   ]
   
   [
@@ -65211,7 +70090,9 @@
   
   [
     [[link asio.reference.basic_socket_acceptor.operator_eq_ [*operator=]]]
-    [Move-assign a basic_socket_acceptor from another. ]
+    [Move-assign a basic_socket_acceptor from another. 
+
+     Move-assign a basic_socket_acceptor from an acceptor of another protocol type. ]
   ]
   
   [
@@ -65289,9 +70170,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Example]
@@ -65313,9 +70194,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/tcp.hpp]
+['Header: ][^asio/ip/tcp.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -65464,9 +70345,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -65474,9 +70355,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/tcp.hpp]
+['Header: ][^asio/ip/tcp.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -65583,9 +70464,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/tcp.hpp]
+['Header: ][^asio/ip/tcp.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -65634,9 +70515,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/tcp.hpp]
+['Header: ][^asio/ip/tcp.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -65656,9 +70537,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/tcp.hpp]
+['Header: ][^asio/ip/tcp.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -65678,9 +70559,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/tcp.hpp]
+['Header: ][^asio/ip/tcp.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -65830,18 +70711,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/tcp.hpp]
+['Header: ][^asio/ip/tcp.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -66071,7 +70952,9 @@
 
      Construct a basic_stream_socket on an existing native socket. 
 
-     Move-construct a basic_stream_socket from another. ]
+     Move-construct a basic_stream_socket from another. 
+
+     Move-construct a basic_stream_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -66157,7 +71040,9 @@
   
   [
     [[link asio.reference.basic_stream_socket.operator_eq_ [*operator=]]]
-    [Move-assign a basic_stream_socket from another. ]
+    [Move-assign a basic_stream_socket from another. 
+
+     Move-assign a basic_stream_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -66267,9 +71152,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -66277,9 +71162,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/tcp.hpp]
+['Header: ][^asio/ip/tcp.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -66418,18 +71303,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Safe.
+['Shared] ['objects:] Safe.
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/udp.hpp]
+['Header: ][^asio/ip/udp.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:endpoint ip::udp::endpoint]
@@ -66574,9 +71459,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -66584,9 +71469,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/udp.hpp]
+['Header: ][^asio/ip/udp.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -66620,9 +71505,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/udp.hpp]
+['Header: ][^asio/ip/udp.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -66642,9 +71527,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/udp.hpp]
+['Header: ][^asio/ip/udp.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -66794,18 +71679,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/udp.hpp]
+['Header: ][^asio/ip/udp.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -67035,7 +71920,9 @@
 
      Construct a basic_datagram_socket on an existing native socket. 
 
-     Move-construct a basic_datagram_socket from another. ]
+     Move-construct a basic_datagram_socket from another. 
+
+     Move-construct a basic_datagram_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -67121,7 +72008,9 @@
   
   [
     [[link asio.reference.basic_datagram_socket.operator_eq_ [*operator=]]]
-    [Move-assign a basic_datagram_socket from another. ]
+    [Move-assign a basic_datagram_socket from another. 
+
+     Move-assign a basic_datagram_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -67229,18 +72118,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/udp.hpp]
+['Header: ][^asio/ip/udp.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -67334,9 +72223,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/unicast.hpp]
+['Header: ][^asio/ip/unicast.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -67385,9 +72274,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ip/v6_only.hpp]
+['Header: ][^asio/ip/v6_only.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -67417,9 +72306,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/read_until.hpp]
+['Header: ][^asio/read_until.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:value is_match_condition::value]
@@ -67462,9 +72351,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/is_read_buffered.hpp]
+['Header: ][^asio/is_read_buffered.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:value is_read_buffered::value]
@@ -67507,9 +72396,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/is_write_buffered.hpp]
+['Header: ][^asio/is_write_buffered.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:value is_write_buffered::value]
@@ -67663,18 +72552,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/local/basic_endpoint.hpp]
+['Header: ][^asio/local/basic_endpoint.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:basic_endpoint local::basic_endpoint::basic_endpoint]
 
@@ -67835,9 +72724,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/local/basic_endpoint.hpp]
+['Header: ][^asio/local/basic_endpoint.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -67857,9 +72746,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/local/basic_endpoint.hpp]
+['Header: ][^asio/local/basic_endpoint.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -67879,9 +72768,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/local/basic_endpoint.hpp]
+['Header: ][^asio/local/basic_endpoint.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -67938,9 +72827,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/local/basic_endpoint.hpp]
+['Header: ][^asio/local/basic_endpoint.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -67975,9 +72864,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/local/basic_endpoint.hpp]
+['Header: ][^asio/local/basic_endpoint.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -67997,9 +72886,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/local/basic_endpoint.hpp]
+['Header: ][^asio/local/basic_endpoint.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -68019,9 +72908,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/local/basic_endpoint.hpp]
+['Header: ][^asio/local/basic_endpoint.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -68121,9 +73010,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/local/basic_endpoint.hpp]
+['Header: ][^asio/local/basic_endpoint.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -68188,9 +73077,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/local/connect_pair.hpp]
+['Header: ][^asio/local/connect_pair.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:overload1 local::connect_pair (1 of 2 overloads)]
@@ -68290,18 +73179,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Safe.
+['Shared] ['objects:] Safe.
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/local/datagram_protocol.hpp]
+['Header: ][^asio/local/datagram_protocol.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:endpoint local::datagram_protocol::endpoint]
@@ -68437,9 +73326,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -68447,9 +73336,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/local/datagram_protocol.hpp]
+['Header: ][^asio/local/datagram_protocol.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -68707,7 +73596,9 @@
 
      Construct a basic_datagram_socket on an existing native socket. 
 
-     Move-construct a basic_datagram_socket from another. ]
+     Move-construct a basic_datagram_socket from another. 
+
+     Move-construct a basic_datagram_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -68793,7 +73684,9 @@
   
   [
     [[link asio.reference.basic_datagram_socket.operator_eq_ [*operator=]]]
-    [Move-assign a basic_datagram_socket from another. ]
+    [Move-assign a basic_datagram_socket from another. 
+
+     Move-assign a basic_datagram_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -68901,18 +73794,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/local/datagram_protocol.hpp]
+['Header: ][^asio/local/datagram_protocol.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -69004,18 +73897,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Safe.
+['Shared] ['objects:] Safe.
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/local/stream_protocol.hpp]
+['Header: ][^asio/local/stream_protocol.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:acceptor local::stream_protocol::acceptor]
@@ -69211,7 +74104,9 @@
 
      Construct a basic_socket_acceptor on an existing native acceptor. 
 
-     Move-construct a basic_socket_acceptor from another. ]
+     Move-construct a basic_socket_acceptor from another. 
+
+     Move-construct a basic_socket_acceptor from an acceptor of another protocol type. ]
   ]
   
   [
@@ -69290,7 +74185,9 @@
   
   [
     [[link asio.reference.basic_socket_acceptor.operator_eq_ [*operator=]]]
-    [Move-assign a basic_socket_acceptor from another. ]
+    [Move-assign a basic_socket_acceptor from another. 
+
+     Move-assign a basic_socket_acceptor from an acceptor of another protocol type. ]
   ]
   
   [
@@ -69368,9 +74265,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Example]
@@ -69392,9 +74289,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/local/stream_protocol.hpp]
+['Header: ][^asio/local/stream_protocol.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -69534,9 +74431,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -69544,9 +74441,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/local/stream_protocol.hpp]
+['Header: ][^asio/local/stream_protocol.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -69653,9 +74550,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/local/stream_protocol.hpp]
+['Header: ][^asio/local/stream_protocol.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -69899,7 +74796,9 @@
 
      Construct a basic_stream_socket on an existing native socket. 
 
-     Move-construct a basic_stream_socket from another. ]
+     Move-construct a basic_stream_socket from another. 
+
+     Move-construct a basic_stream_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -69985,7 +74884,9 @@
   
   [
     [[link asio.reference.basic_stream_socket.operator_eq_ [*operator=]]]
-    [Move-assign a basic_stream_socket from another. ]
+    [Move-assign a basic_stream_socket from another. 
+
+     Move-assign a basic_stream_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -70095,9 +74996,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -70105,9 +75006,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/local/stream_protocol.hpp]
+['Header: ][^asio/local/stream_protocol.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -70185,9 +75086,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffer.hpp]
+['Header: ][^asio/buffer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:mutable_buffer mutable_buffer::mutable_buffer]
 
@@ -70358,9 +75259,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffer.hpp]
+['Header: ][^asio/buffer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:begin mutable_buffers_1::begin]
@@ -70389,9 +75290,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffer.hpp]
+['Header: ][^asio/buffer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -70576,9 +75477,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffer.hpp]
+['Header: ][^asio/buffer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -70634,9 +75535,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffer.hpp]
+['Header: ][^asio/buffer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:begin null_buffers::begin]
@@ -70665,9 +75566,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffer.hpp]
+['Header: ][^asio/buffer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -70744,9 +75645,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/buffer.hpp]
+['Header: ][^asio/buffer.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -70772,9 +75673,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/error_code.hpp]
+['Header: ][^asio/error_code.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -70792,9 +75693,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/placeholders.hpp]
+['Header: ][^asio/placeholders.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -70812,9 +75713,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/placeholders.hpp]
+['Header: ][^asio/placeholders.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -70832,9 +75733,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/placeholders.hpp]
+['Header: ][^asio/placeholders.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -70852,9 +75753,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/placeholders.hpp]
+['Header: ][^asio/placeholders.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -71056,17 +75957,17 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/basic_descriptor.hpp]
+['Header: ][^asio/posix/basic_descriptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:assign posix::basic_descriptor::assign]
 
@@ -71285,9 +76186,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/basic_descriptor.hpp]
+['Header: ][^asio/posix/basic_descriptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -71592,9 +76493,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/basic_descriptor.hpp]
+['Header: ][^asio/posix/basic_descriptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -72002,18 +76903,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/basic_descriptor.hpp]
+['Header: ][^asio/posix/basic_descriptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -72064,9 +76965,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/basic_descriptor.hpp]
+['Header: ][^asio/posix/basic_descriptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -72208,9 +77109,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/basic_descriptor.hpp]
+['Header: ][^asio/posix/basic_descriptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -72377,9 +77278,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/basic_descriptor.hpp]
+['Header: ][^asio/posix/basic_descriptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -72477,9 +77378,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/basic_descriptor.hpp]
+['Header: ][^asio/posix/basic_descriptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -72712,18 +77613,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/basic_stream_descriptor.hpp]
+['Header: ][^asio/posix/basic_stream_descriptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:assign posix::basic_stream_descriptor::assign]
 
@@ -72789,7 +77690,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_some(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_read_some(
       const MutableBufferSequence & buffers,
       ReadHandler handler);
 
@@ -72846,7 +77747,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_some(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_write_some(
       const ConstBufferSequence & buffers,
       WriteHandler handler);
 
@@ -73062,9 +77963,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/basic_stream_descriptor.hpp]
+['Header: ][^asio/posix/basic_stream_descriptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -73381,9 +78282,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/basic_stream_descriptor.hpp]
+['Header: ][^asio/posix/basic_stream_descriptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -73805,18 +78706,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/basic_stream_descriptor.hpp]
+['Header: ][^asio/posix/basic_stream_descriptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -73873,9 +78774,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/basic_stream_descriptor.hpp]
+['Header: ][^asio/posix/basic_stream_descriptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -74026,9 +78927,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/basic_stream_descriptor.hpp]
+['Header: ][^asio/posix/basic_stream_descriptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -74204,9 +79105,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/basic_stream_descriptor.hpp]
+['Header: ][^asio/posix/basic_stream_descriptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -74433,9 +79334,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/basic_stream_descriptor.hpp]
+['Header: ][^asio/posix/basic_stream_descriptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -74612,9 +79513,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/descriptor_base.hpp]
+['Header: ][^asio/posix/descriptor_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:bytes_readable posix::descriptor_base::bytes_readable]
@@ -74648,9 +79549,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/descriptor_base.hpp]
+['Header: ][^asio/posix/descriptor_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -74687,9 +79588,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/descriptor_base.hpp]
+['Header: ][^asio/posix/descriptor_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -74920,9 +79821,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -74930,9 +79831,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/stream_descriptor.hpp]
+['Header: ][^asio/posix/stream_descriptor.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -75098,9 +79999,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/stream_descriptor_service.hpp]
+['Header: ][^asio/posix/stream_descriptor_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:assign posix::stream_descriptor_service::assign]
@@ -75129,7 +80030,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_some(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_read_some(
       implementation_type & impl,
       const MutableBufferSequence & buffers,
       ReadHandler handler);
@@ -75149,7 +80050,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_some(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_write_some(
       implementation_type & impl,
       const ConstBufferSequence & buffers,
       WriteHandler handler);
@@ -75265,9 +80166,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/stream_descriptor_service.hpp]
+['Header: ][^asio/posix/stream_descriptor_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -75383,9 +80284,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/stream_descriptor_service.hpp]
+['Header: ][^asio/posix/stream_descriptor_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -75458,9 +80359,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/posix/stream_descriptor_service.hpp]
+['Header: ][^asio/posix/stream_descriptor_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -75714,6 +80615,11 @@
   ]
   
   [
+    [[link asio.reference.raw_socket_service.converting_move_construct [*converting_move_construct]]]
+    [Move-construct a new raw socket implementation from another protocol type. ]
+  ]
+  
+  [
     [[link asio.reference.raw_socket_service.destroy [*destroy]]]
     [Destroy a raw socket implementation. ]
   ]
@@ -75837,9 +80743,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/raw_socket_service.hpp]
+['Header: ][^asio/raw_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:assign raw_socket_service::assign]
@@ -75868,7 +80774,7 @@
 
   template<
       typename ``[link asio.reference.ConnectHandler ConnectHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_connect(
       implementation_type & impl,
       const endpoint_type & peer_endpoint,
       ConnectHandler handler);
@@ -75888,7 +80794,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_receive(
       implementation_type & impl,
       const MutableBufferSequence & buffers,
       socket_base::message_flags flags,
@@ -75909,7 +80815,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive_from(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_receive_from(
       implementation_type & impl,
       const MutableBufferSequence & buffers,
       endpoint_type & sender_endpoint,
@@ -75931,7 +80837,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_send(
       implementation_type & impl,
       const ConstBufferSequence & buffers,
       socket_base::message_flags flags,
@@ -75952,7 +80858,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send_to(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_send_to(
       implementation_type & impl,
       const ConstBufferSequence & buffers,
       const endpoint_type & destination,
@@ -76076,6 +80982,25 @@
 
 
 
+[section:converting_move_construct raw_socket_service::converting_move_construct]
+
+[indexterm2 converting_move_construct..raw_socket_service] 
+Move-construct a new raw socket implementation from another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``>
+  void converting_move_construct(
+      implementation_type & impl,
+      typename raw_socket_service< Protocol1 >::implementation_type & other_impl,
+      typename enable_if< is_convertible< Protocol1, Protocol >::value >::type *  = 0);
+
+
+
+[endsect]
+
+
+
 [section:destroy raw_socket_service::destroy]
 
 [indexterm2 destroy..raw_socket_service] 
@@ -76103,9 +81028,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/raw_socket_service.hpp]
+['Header: ][^asio/raw_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -76174,9 +81099,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/raw_socket_service.hpp]
+['Header: ][^asio/raw_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -76308,9 +81233,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/raw_socket_service.hpp]
+['Header: ][^asio/raw_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -76383,9 +81308,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/raw_socket_service.hpp]
+['Header: ][^asio/raw_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -76473,9 +81398,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/raw_socket_service.hpp]
+['Header: ][^asio/raw_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -76717,9 +81642,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/read.hpp]
+['Header: ][^asio/read.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:overload1 read (1 of 8 overloads)]
@@ -77386,9 +82311,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/read_at.hpp]
+['Header: ][^asio/read_at.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:overload1 read_at (1 of 8 overloads)]
@@ -78064,9 +82989,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/read_until.hpp]
+['Header: ][^asio/read_until.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:overload1 read_until (1 of 8 overloads)]
@@ -78849,6 +83774,11 @@
   ]
   
   [
+    [[link asio.reference.seq_packet_socket_service.converting_move_construct [*converting_move_construct]]]
+    [Move-construct a new sequenced packet socket implementation from another protocol type. ]
+  ]
+  
+  [
     [[link asio.reference.seq_packet_socket_service.destroy [*destroy]]]
     [Destroy a sequenced packet socket implementation. ]
   ]
@@ -78962,9 +83892,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/seq_packet_socket_service.hpp]
+['Header: ][^asio/seq_packet_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:assign seq_packet_socket_service::assign]
@@ -78993,7 +83923,7 @@
 
   template<
       typename ``[link asio.reference.ConnectHandler ConnectHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_connect(
       implementation_type & impl,
       const endpoint_type & peer_endpoint,
       ConnectHandler handler);
@@ -79160,6 +84090,25 @@
 
 
 
+[section:converting_move_construct seq_packet_socket_service::converting_move_construct]
+
+[indexterm2 converting_move_construct..seq_packet_socket_service] 
+Move-construct a new sequenced packet socket implementation from another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``>
+  void converting_move_construct(
+      implementation_type & impl,
+      typename seq_packet_socket_service< Protocol1 >::implementation_type & other_impl,
+      typename enable_if< is_convertible< Protocol1, Protocol >::value >::type *  = 0);
+
+
+
+[endsect]
+
+
+
 [section:destroy seq_packet_socket_service::destroy]
 
 [indexterm2 destroy..seq_packet_socket_service] 
@@ -79187,9 +84136,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/seq_packet_socket_service.hpp]
+['Header: ][^asio/seq_packet_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -79258,9 +84207,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/seq_packet_socket_service.hpp]
+['Header: ][^asio/seq_packet_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -79392,9 +84341,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/seq_packet_socket_service.hpp]
+['Header: ][^asio/seq_packet_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -79467,9 +84416,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/seq_packet_socket_service.hpp]
+['Header: ][^asio/seq_packet_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -79559,9 +84508,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/seq_packet_socket_service.hpp]
+['Header: ][^asio/seq_packet_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -79870,18 +84819,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/serial_port.hpp]
+['Header: ][^asio/serial_port.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -79950,9 +84899,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/serial_port_base.hpp]
+['Header: ][^asio/serial_port_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:_serial_port_base serial_port_base::~serial_port_base]
@@ -80010,9 +84959,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/serial_port_base.hpp]
+['Header: ][^asio/serial_port_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:baud_rate serial_port_base::baud_rate::baud_rate]
@@ -80109,9 +85058,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/serial_port_base.hpp]
+['Header: ][^asio/serial_port_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:character_size serial_port_base::character_size::character_size]
@@ -80221,9 +85170,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/serial_port_base.hpp]
+['Header: ][^asio/serial_port_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:flow_control serial_port_base::flow_control::flow_control]
@@ -80369,9 +85318,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/serial_port_base.hpp]
+['Header: ][^asio/serial_port_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:load serial_port_base::parity::load]
@@ -80517,9 +85466,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/serial_port_base.hpp]
+['Header: ][^asio/serial_port_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:load serial_port_base::stop_bits::load]
@@ -80769,9 +85718,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/serial_port_service.hpp]
+['Header: ][^asio/serial_port_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:assign serial_port_service::assign]
@@ -80800,7 +85749,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_some(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_read_some(
       implementation_type & impl,
       const MutableBufferSequence & buffers,
       ReadHandler handler);
@@ -80820,7 +85769,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_some(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_write_some(
       implementation_type & impl,
       const ConstBufferSequence & buffers,
       WriteHandler handler);
@@ -80955,9 +85904,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/serial_port_service.hpp]
+['Header: ][^asio/serial_port_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -81054,9 +86003,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/serial_port_service.hpp]
+['Header: ][^asio/serial_port_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -81075,9 +86024,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/serial_port_service.hpp]
+['Header: ][^asio/serial_port_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -81213,9 +86162,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/io_service.hpp]
+['Header: ][^asio/io_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:service_already_exists service_already_exists::service_already_exists]
@@ -81348,9 +86297,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Example]
@@ -81406,9 +86355,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/signal_set.hpp]
+['Header: ][^asio/signal_set.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -81501,9 +86450,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/signal_set_service.hpp]
+['Header: ][^asio/signal_set_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:add signal_set_service::add]
@@ -81529,7 +86478,7 @@
 
   template<
       typename ``[link asio.reference.SignalHandler SignalHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_wait(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_wait(
       implementation_type & impl,
       SignalHandler handler);
 
@@ -81644,9 +86593,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/signal_set_service.hpp]
+['Header: ][^asio/signal_set_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -81780,6 +86729,11 @@
   ]
   
   [
+    [[link asio.reference.socket_acceptor_service.converting_move_construct [*converting_move_construct]]]
+    [Move-construct a new socket acceptor implementation from another protocol type. ]
+  ]
+  
+  [
     [[link asio.reference.socket_acceptor_service.destroy [*destroy]]]
     [Destroy a socket acceptor implementation. ]
   ]
@@ -81878,9 +86832,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/socket_acceptor_service.hpp]
+['Header: ][^asio/socket_acceptor_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:accept socket_acceptor_service::accept]
@@ -81890,12 +86844,14 @@
 
 
   template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
       typename ``[link asio.reference.SocketService SocketService]``>
   asio::error_code accept(
       implementation_type & impl,
-      basic_socket< protocol_type, SocketService > & peer,
+      basic_socket< Protocol1, SocketService > & peer,
       endpoint_type * peer_endpoint,
-      asio::error_code & ec);
+      asio::error_code & ec,
+      typename enable_if< is_convertible< Protocol, Protocol1 >::value >::type *  = 0);
 
 
 
@@ -81928,13 +86884,15 @@
 
 
   template<
+      typename ``[link asio.reference.Protocol Protocol1]``,
       typename ``[link asio.reference.SocketService SocketService]``,
       typename ``[link asio.reference.AcceptHandler AcceptHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_accept(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_accept(
       implementation_type & impl,
-      basic_socket< protocol_type, SocketService > & peer,
+      basic_socket< Protocol1, SocketService > & peer,
       endpoint_type * peer_endpoint,
-      AcceptHandler handler);
+      AcceptHandler handler,
+      typename enable_if< is_convertible< Protocol, Protocol1 >::value >::type *  = 0);
 
 
 
@@ -82006,6 +86964,25 @@
 
 
 
+[section:converting_move_construct socket_acceptor_service::converting_move_construct]
+
+[indexterm2 converting_move_construct..socket_acceptor_service] 
+Move-construct a new socket acceptor implementation from another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``>
+  void converting_move_construct(
+      implementation_type & impl,
+      typename socket_acceptor_service< Protocol1 >::implementation_type & other_impl,
+      typename enable_if< is_convertible< Protocol1, Protocol >::value >::type *  = 0);
+
+
+
+[endsect]
+
+
+
 [section:destroy socket_acceptor_service::destroy]
 
 [indexterm2 destroy..socket_acceptor_service] 
@@ -82033,9 +87010,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/socket_acceptor_service.hpp]
+['Header: ][^asio/socket_acceptor_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -82104,9 +87081,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/socket_acceptor_service.hpp]
+['Header: ][^asio/socket_acceptor_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -82255,9 +87232,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/socket_acceptor_service.hpp]
+['Header: ][^asio/socket_acceptor_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -82330,9 +87307,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/socket_acceptor_service.hpp]
+['Header: ][^asio/socket_acceptor_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -82422,9 +87399,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/socket_acceptor_service.hpp]
+['Header: ][^asio/socket_acceptor_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -82631,9 +87608,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/socket_base.hpp]
+['Header: ][^asio/socket_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:broadcast socket_base::broadcast]
@@ -82678,9 +87655,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/socket_base.hpp]
+['Header: ][^asio/socket_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -82718,9 +87695,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/socket_base.hpp]
+['Header: ][^asio/socket_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -82769,9 +87746,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/socket_base.hpp]
+['Header: ][^asio/socket_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -82820,9 +87797,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/socket_base.hpp]
+['Header: ][^asio/socket_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -82871,9 +87848,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/socket_base.hpp]
+['Header: ][^asio/socket_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -82922,9 +87899,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/socket_base.hpp]
+['Header: ][^asio/socket_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -82974,9 +87951,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/socket_base.hpp]
+['Header: ][^asio/socket_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -83037,9 +88014,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/socket_base.hpp]
+['Header: ][^asio/socket_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -83104,9 +88081,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/socket_base.hpp]
+['Header: ][^asio/socket_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -83155,9 +88132,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/socket_base.hpp]
+['Header: ][^asio/socket_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -83206,9 +88183,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/socket_base.hpp]
+['Header: ][^asio/socket_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -83257,9 +88234,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/socket_base.hpp]
+['Header: ][^asio/socket_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -83308,9 +88285,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/socket_base.hpp]
+['Header: ][^asio/socket_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -83359,9 +88336,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/socket_base.hpp]
+['Header: ][^asio/socket_base.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -83425,7 +88402,9 @@
 [section:spawn spawn]
 
 [indexterm1 spawn] 
-    
+Start a new stackful coroutine. 
+
+      
   template<
       typename ``[link asio.reference.Handler Handler]``,
       typename Function>
@@ -83460,16 +88439,50 @@
       const boost::coroutines::attributes & attributes = boost::coroutines::attributes());
   ``  [''''&raquo;''' [link asio.reference.spawn.overload4 more...]]``
 
+The `spawn()` function is a high-level wrapper over the Boost.Coroutine library. This function enables programs to implement asynchronous logic in a synchronous manner, as illustrated by the following example:
+
+
+
+   asio::spawn(my_strand, do_echo);
+
+   // ...
+
+   void do_echo(asio::yield_context yield)
+   {
+     try
+     {
+       char data[128];
+       for (;;)
+       {
+         std::size_t length =
+           my_socket.async_read_some(
+             asio::buffer(data), yield);
+
+         asio::async_write(my_socket,
+             asio::buffer(data, length), yield);
+       }
+     }
+     catch (std::exception& e)
+     {
+       // ...
+     }
+   } 
+
+
+
+
 [heading Requirements]
 
-[*Header: ][^asio/spawn.hpp]
+['Header: ][^asio/spawn.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:overload1 spawn (1 of 4 overloads)]
 
 
+Start a new stackful coroutine, calling the specified handler when it completes. 
+
 
   template<
       typename ``[link asio.reference.Handler Handler]``,
@@ -83480,6 +88493,32 @@
       const boost::coroutines::attributes & attributes = boost::coroutines::attributes());
 
 
+This function is used to launch a new coroutine.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[handler][A handler to be called when the coroutine exits. More importantly, the handler provides an execution context (via the the handler invocation hook) for the coroutine. The handler must have the signature: 
+``
+   void handler(); 
+``
+]]
+
+[[function][The coroutine function. The function must have the signature: 
+``
+   void function(basic_yield_context<Handler> yield); 
+``
+]]
+
+[[attributes][Boost.Coroutine attributes used to customise the coroutine. ]]
+
+]
+
+
+
 
 [endsect]
 
@@ -83488,6 +88527,8 @@
 [section:overload2 spawn (2 of 4 overloads)]
 
 
+Start a new stackful coroutine, inheriting the execution context of another. 
+
 
   template<
       typename ``[link asio.reference.Handler Handler]``,
@@ -83498,6 +88539,28 @@
       const boost::coroutines::attributes & attributes = boost::coroutines::attributes());
 
 
+This function is used to launch a new coroutine.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[ctx][Identifies the current coroutine as a parent of the new coroutine. This specifies that the new coroutine should inherit the execution context of the parent. For example, if the parent coroutine is executing in a particular strand, then the new coroutine will execute in the same strand.]]
+
+[[function][The coroutine function. The function must have the signature: 
+``
+   void function(basic_yield_context<Handler> yield); 
+``
+]]
+
+[[attributes][Boost.Coroutine attributes used to customise the coroutine. ]]
+
+]
+
+
+
 
 [endsect]
 
@@ -83506,6 +88569,8 @@
 [section:overload3 spawn (3 of 4 overloads)]
 
 
+Start a new stackful coroutine that executes in the contex of a strand. 
+
 
   template<
       typename Function>
@@ -83515,6 +88580,28 @@
       const boost::coroutines::attributes & attributes = boost::coroutines::attributes());
 
 
+This function is used to launch a new coroutine.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[strand][Identifies a strand. By starting multiple coroutines on the same strand, the implementation ensures that none of those coroutines can execute simultaneously.]]
+
+[[function][The coroutine function. The function must have the signature: 
+``
+   void function(yield_context yield); 
+``
+]]
+
+[[attributes][Boost.Coroutine attributes used to customise the coroutine. ]]
+
+]
+
+
+
 
 [endsect]
 
@@ -83523,6 +88610,8 @@
 [section:overload4 spawn (4 of 4 overloads)]
 
 
+Start a new stackful coroutine that executes on a given [link asio.reference.io_service `io_service`]. 
+
 
   template<
       typename Function>
@@ -83532,6 +88621,28 @@
       const boost::coroutines::attributes & attributes = boost::coroutines::attributes());
 
 
+This function is used to launch a new coroutine.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[io_service][Identifies the [link asio.reference.io_service `io_service`] that will run the coroutine. The new coroutine is implicitly given its own strand within this [link asio.reference.io_service `io_service`].]]
+
+[[function][The coroutine function. The function must have the signature: 
+``
+   void function(yield_context yield); 
+``
+]]
+
+[[attributes][Boost.Coroutine attributes used to customise the coroutine. ]]
+
+]
+
+
+
 
 [endsect]
 
@@ -83600,11 +88711,21 @@
   [[Name][Description]]
 
   [
+    [[link asio.reference.ssl__context.add_certificate_authority [*add_certificate_authority]]]
+    [Add certification authority for performing verification. ]
+  ]
+  
+  [
     [[link asio.reference.ssl__context.add_verify_path [*add_verify_path]]]
     [Add a directory containing certificate authority files to be used for performing verification. ]
   ]
   
   [
+    [[link asio.reference.ssl__context.clear_options [*clear_options]]]
+    [Clear options on the context. ]
+  ]
+  
+  [
     [[link asio.reference.ssl__context.context [*context]]]
     [Constructor. 
 
@@ -83654,11 +88775,26 @@
   ]
   
   [
+    [[link asio.reference.ssl__context.set_verify_depth [*set_verify_depth]]]
+    [Set the peer verification depth. ]
+  ]
+  
+  [
     [[link asio.reference.ssl__context.set_verify_mode [*set_verify_mode]]]
     [Set the peer verification mode. ]
   ]
   
   [
+    [[link asio.reference.ssl__context.use_certificate [*use_certificate]]]
+    [Use a certificate from a memory buffer. ]
+  ]
+  
+  [
+    [[link asio.reference.ssl__context.use_certificate_chain [*use_certificate_chain]]]
+    [Use a certificate chain from a memory buffer. ]
+  ]
+  
+  [
     [[link asio.reference.ssl__context.use_certificate_chain_file [*use_certificate_chain_file]]]
     [Use a certificate chain from a file. ]
   ]
@@ -83669,16 +88805,31 @@
   ]
   
   [
+    [[link asio.reference.ssl__context.use_private_key [*use_private_key]]]
+    [Use a private key from a memory buffer. ]
+  ]
+  
+  [
     [[link asio.reference.ssl__context.use_private_key_file [*use_private_key_file]]]
     [Use a private key from a file. ]
   ]
   
   [
+    [[link asio.reference.ssl__context.use_rsa_private_key [*use_rsa_private_key]]]
+    [Use an RSA private key from a memory buffer. ]
+  ]
+  
+  [
     [[link asio.reference.ssl__context.use_rsa_private_key_file [*use_rsa_private_key_file]]]
     [Use an RSA private key from a file. ]
   ]
   
   [
+    [[link asio.reference.ssl__context.use_tmp_dh [*use_tmp_dh]]]
+    [Use the specified memory buffer to obtain the temporary Diffie-Hellman parameters. ]
+  ]
+  
+  [
     [[link asio.reference.ssl__context.use_tmp_dh_file [*use_tmp_dh_file]]]
     [Use the specified file to obtain the temporary Diffie-Hellman parameters. ]
   ]
@@ -83700,6 +88851,11 @@
   ]
 
   [
+    [[link asio.reference.ssl__context.no_compression [*no_compression]]]
+    [Disable compression. Compression is disabled by default. ]
+  ]
+
+  [
     [[link asio.reference.ssl__context.no_sslv2 [*no_sslv2]]]
     [Disable SSL v2. ]
   ]
@@ -83723,9 +88879,107 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/context.hpp]
+['Header: ][^asio/ssl/context.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
+
+[section:add_certificate_authority ssl::context::add_certificate_authority]
+
+[indexterm2 add_certificate_authority..ssl::context] 
+Add certification authority for performing verification. 
+
+
+  void ``[link asio.reference.ssl__context.add_certificate_authority.overload1 add_certificate_authority]``(
+      const const_buffer & ca);
+  ``  [''''&raquo;''' [link asio.reference.ssl__context.add_certificate_authority.overload1 more...]]``
+
+  asio::error_code ``[link asio.reference.ssl__context.add_certificate_authority.overload2 add_certificate_authority]``(
+      const const_buffer & ca,
+      asio::error_code & ec);
+  ``  [''''&raquo;''' [link asio.reference.ssl__context.add_certificate_authority.overload2 more...]]``
+
+
+[section:overload1 ssl::context::add_certificate_authority (1 of 2 overloads)]
+
+
+Add certification authority for performing verification. 
+
+
+  void add_certificate_authority(
+      const const_buffer & ca);
+
+
+This function is used to add one trusted certification authority from a memory buffer.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[ca][The buffer containing the certification authority certificate. The certificate must use the PEM format.]]
+
+]
+
+
+[heading Exceptions]
+    
+
+[variablelist
+  
+[[asio::system_error][Thrown on failure.]]
+
+]
+
+
+[heading Remarks]
+      
+Calls `SSL_CTX_get_cert_store` and `X509_STORE_add_cert`. 
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 ssl::context::add_certificate_authority (2 of 2 overloads)]
+
+
+Add certification authority for performing verification. 
+
+
+  asio::error_code add_certificate_authority(
+      const const_buffer & ca,
+      asio::error_code & ec);
+
+
+This function is used to add one trusted certification authority from a memory buffer.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[ca][The buffer containing the certification authority certificate. The certificate must use the PEM format.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+
+[heading Remarks]
+      
+Calls `SSL_CTX_get_cert_store` and `X509_STORE_add_cert`. 
+
+
+
+
+[endsect]
+
+
+[endsect]
 
 [section:add_verify_path ssl::context::add_verify_path]
 
@@ -83825,6 +89079,104 @@
 
 [endsect]
 
+[section:clear_options ssl::context::clear_options]
+
+[indexterm2 clear_options..ssl::context] 
+Clear options on the context. 
+
+
+  void ``[link asio.reference.ssl__context.clear_options.overload1 clear_options]``(
+      options o);
+  ``  [''''&raquo;''' [link asio.reference.ssl__context.clear_options.overload1 more...]]``
+
+  asio::error_code ``[link asio.reference.ssl__context.clear_options.overload2 clear_options]``(
+      options o,
+      asio::error_code & ec);
+  ``  [''''&raquo;''' [link asio.reference.ssl__context.clear_options.overload2 more...]]``
+
+
+[section:overload1 ssl::context::clear_options (1 of 2 overloads)]
+
+
+Clear options on the context. 
+
+
+  void clear_options(
+      options o);
+
+
+This function may be used to configure the SSL options used by the context.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[o][A bitmask of options. The available option values are defined in the [link asio.reference.ssl__context_base `ssl::context_base`] class. The specified options, if currently enabled on the context, are cleared.]]
+
+]
+
+
+[heading Exceptions]
+    
+
+[variablelist
+  
+[[asio::system_error][Thrown on failure.]]
+
+]
+
+
+[heading Remarks]
+      
+Calls `SSL_CTX_clear_options`. 
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 ssl::context::clear_options (2 of 2 overloads)]
+
+
+Clear options on the context. 
+
+
+  asio::error_code clear_options(
+      options o,
+      asio::error_code & ec);
+
+
+This function may be used to configure the SSL options used by the context.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[o][A bitmask of options. The available option values are defined in the [link asio.reference.ssl__context_base `ssl::context_base`] class. The specified options, if currently enabled on the context, are cleared.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+
+[heading Remarks]
+      
+Calls `SSL_CTX_clear_options`. 
+
+
+
+
+[endsect]
+
+
+[endsect]
+
 [section:context ssl::context::context]
 
 [indexterm2 context..ssl::context] 
@@ -83999,9 +89351,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/context.hpp]
+['Header: ][^asio/ssl/context.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
 
 
 [endsect]
@@ -84126,6 +89478,12 @@
 [indexterm2 sslv23..ssl::context]
 [indexterm2 sslv23_client..ssl::context]
 [indexterm2 sslv23_server..ssl::context]
+[indexterm2 tlsv11..ssl::context]
+[indexterm2 tlsv11_client..ssl::context]
+[indexterm2 tlsv11_server..ssl::context]
+[indexterm2 tlsv12..ssl::context]
+[indexterm2 tlsv12_client..ssl::context]
+[indexterm2 tlsv12_server..ssl::context]
 
 [heading Values]
 [variablelist
@@ -84190,6 +89548,36 @@
     [SSL/TLS server. ]
   ]
 
+  [
+    [tlsv11]
+    [Generic TLS version 1.1. ]
+  ]
+
+  [
+    [tlsv11_client]
+    [TLS version 1.1 client. ]
+  ]
+
+  [
+    [tlsv11_server]
+    [TLS version 1.1 server. ]
+  ]
+
+  [
+    [tlsv12]
+    [Generic TLS version 1.2. ]
+  ]
+
+  [
+    [tlsv12_client]
+    [TLS version 1.2 client. ]
+  ]
+
+  [
+    [tlsv12_server]
+    [TLS version 1.2 server. ]
+  ]
+
 ]
 
 
@@ -84226,9 +89614,23 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/context.hpp]
+['Header: ][^asio/ssl/context.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
+
+
+[endsect]
+
+
+
+[section:no_compression ssl::context::no_compression]
+
+[indexterm2 no_compression..ssl::context] 
+Disable compression. Compression is disabled by default. 
+
+
+  static const long no_compression = implementation_defined;
+
 
 
 [endsect]
@@ -84328,9 +89730,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/context.hpp]
+['Header: ][^asio/ssl/context.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
 
 
 [endsect]
@@ -84788,6 +90190,104 @@
 
 [endsect]
 
+[section:set_verify_depth ssl::context::set_verify_depth]
+
+[indexterm2 set_verify_depth..ssl::context] 
+Set the peer verification depth. 
+
+
+  void ``[link asio.reference.ssl__context.set_verify_depth.overload1 set_verify_depth]``(
+      int depth);
+  ``  [''''&raquo;''' [link asio.reference.ssl__context.set_verify_depth.overload1 more...]]``
+
+  asio::error_code ``[link asio.reference.ssl__context.set_verify_depth.overload2 set_verify_depth]``(
+      int depth,
+      asio::error_code & ec);
+  ``  [''''&raquo;''' [link asio.reference.ssl__context.set_verify_depth.overload2 more...]]``
+
+
+[section:overload1 ssl::context::set_verify_depth (1 of 2 overloads)]
+
+
+Set the peer verification depth. 
+
+
+  void set_verify_depth(
+      int depth);
+
+
+This function may be used to configure the maximum verification depth allowed by the context.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[depth][Maximum depth for the certificate chain verification that shall be allowed.]]
+
+]
+
+
+[heading Exceptions]
+    
+
+[variablelist
+  
+[[asio::system_error][Thrown on failure.]]
+
+]
+
+
+[heading Remarks]
+      
+Calls `SSL_CTX_set_verify_depth`. 
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 ssl::context::set_verify_depth (2 of 2 overloads)]
+
+
+Set the peer verification depth. 
+
+
+  asio::error_code set_verify_depth(
+      int depth,
+      asio::error_code & ec);
+
+
+This function may be used to configure the maximum verification depth allowed by the context.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[depth][Maximum depth for the certificate chain verification that shall be allowed.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+
+[heading Remarks]
+      
+Calls `SSL_CTX_set_verify_depth`. 
+
+
+
+
+[endsect]
+
+
+[endsect]
+
 [section:set_verify_mode ssl::context::set_verify_mode]
 
 [indexterm2 set_verify_mode..ssl::context] 
@@ -84900,6 +90400,210 @@
 [endsect]
 
 
+[section:use_certificate ssl::context::use_certificate]
+
+[indexterm2 use_certificate..ssl::context] 
+Use a certificate from a memory buffer. 
+
+
+  void ``[link asio.reference.ssl__context.use_certificate.overload1 use_certificate]``(
+      const const_buffer & certificate,
+      file_format format);
+  ``  [''''&raquo;''' [link asio.reference.ssl__context.use_certificate.overload1 more...]]``
+
+  asio::error_code ``[link asio.reference.ssl__context.use_certificate.overload2 use_certificate]``(
+      const const_buffer & certificate,
+      file_format format,
+      asio::error_code & ec);
+  ``  [''''&raquo;''' [link asio.reference.ssl__context.use_certificate.overload2 more...]]``
+
+
+[section:overload1 ssl::context::use_certificate (1 of 2 overloads)]
+
+
+Use a certificate from a memory buffer. 
+
+
+  void use_certificate(
+      const const_buffer & certificate,
+      file_format format);
+
+
+This function is used to load a certificate into the context from a buffer.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[certificate][The buffer containing the certificate.]]
+
+[[format][The certificate format (ASN.1 or PEM).]]
+
+]
+
+
+[heading Exceptions]
+    
+
+[variablelist
+  
+[[asio::system_error][Thrown on failure.]]
+
+]
+
+
+[heading Remarks]
+      
+Calls `SSL_CTX_use_certificate` or SSL\_CTX\_use\_certificate\_ASN1. 
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 ssl::context::use_certificate (2 of 2 overloads)]
+
+
+Use a certificate from a memory buffer. 
+
+
+  asio::error_code use_certificate(
+      const const_buffer & certificate,
+      file_format format,
+      asio::error_code & ec);
+
+
+This function is used to load a certificate into the context from a buffer.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[certificate][The buffer containing the certificate.]]
+
+[[format][The certificate format (ASN.1 or PEM).]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+
+[heading Remarks]
+      
+Calls `SSL_CTX_use_certificate` or SSL\_CTX\_use\_certificate\_ASN1. 
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+[section:use_certificate_chain ssl::context::use_certificate_chain]
+
+[indexterm2 use_certificate_chain..ssl::context] 
+Use a certificate chain from a memory buffer. 
+
+
+  void ``[link asio.reference.ssl__context.use_certificate_chain.overload1 use_certificate_chain]``(
+      const const_buffer & chain);
+  ``  [''''&raquo;''' [link asio.reference.ssl__context.use_certificate_chain.overload1 more...]]``
+
+  asio::error_code ``[link asio.reference.ssl__context.use_certificate_chain.overload2 use_certificate_chain]``(
+      const const_buffer & chain,
+      asio::error_code & ec);
+  ``  [''''&raquo;''' [link asio.reference.ssl__context.use_certificate_chain.overload2 more...]]``
+
+
+[section:overload1 ssl::context::use_certificate_chain (1 of 2 overloads)]
+
+
+Use a certificate chain from a memory buffer. 
+
+
+  void use_certificate_chain(
+      const const_buffer & chain);
+
+
+This function is used to load a certificate chain into the context from a buffer.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[chain][The buffer containing the certificate chain. The certificate chain must use the PEM format.]]
+
+]
+
+
+[heading Exceptions]
+    
+
+[variablelist
+  
+[[asio::system_error][Thrown on failure.]]
+
+]
+
+
+[heading Remarks]
+      
+Calls `SSL_CTX_use_certificate` and SSL\_CTX\_add\_extra\_chain\_cert. 
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 ssl::context::use_certificate_chain (2 of 2 overloads)]
+
+
+Use a certificate chain from a memory buffer. 
+
+
+  asio::error_code use_certificate_chain(
+      const const_buffer & chain,
+      asio::error_code & ec);
+
+
+This function is used to load a certificate chain into the context from a buffer.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[chain][The buffer containing the certificate chain. The certificate chain must use the PEM format.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+
+[heading Remarks]
+      
+Calls `SSL_CTX_use_certificate` and SSL\_CTX\_add\_extra\_chain\_cert. 
+
+
+
+
+[endsect]
+
+
+[endsect]
+
 [section:use_certificate_chain_file ssl::context::use_certificate_chain_file]
 
 [indexterm2 use_certificate_chain_file..ssl::context] 
@@ -85104,6 +90808,112 @@
 
 [endsect]
 
+[section:use_private_key ssl::context::use_private_key]
+
+[indexterm2 use_private_key..ssl::context] 
+Use a private key from a memory buffer. 
+
+
+  void ``[link asio.reference.ssl__context.use_private_key.overload1 use_private_key]``(
+      const const_buffer & private_key,
+      file_format format);
+  ``  [''''&raquo;''' [link asio.reference.ssl__context.use_private_key.overload1 more...]]``
+
+  asio::error_code ``[link asio.reference.ssl__context.use_private_key.overload2 use_private_key]``(
+      const const_buffer & private_key,
+      file_format format,
+      asio::error_code & ec);
+  ``  [''''&raquo;''' [link asio.reference.ssl__context.use_private_key.overload2 more...]]``
+
+
+[section:overload1 ssl::context::use_private_key (1 of 2 overloads)]
+
+
+Use a private key from a memory buffer. 
+
+
+  void use_private_key(
+      const const_buffer & private_key,
+      file_format format);
+
+
+This function is used to load a private key into the context from a buffer.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[private_key][The buffer containing the private key.]]
+
+[[format][The private key format (ASN.1 or PEM).]]
+
+]
+
+
+[heading Exceptions]
+    
+
+[variablelist
+  
+[[asio::system_error][Thrown on failure.]]
+
+]
+
+
+[heading Remarks]
+      
+Calls `SSL_CTX_use_PrivateKey` or SSL\_CTX\_use\_PrivateKey\_ASN1. 
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 ssl::context::use_private_key (2 of 2 overloads)]
+
+
+Use a private key from a memory buffer. 
+
+
+  asio::error_code use_private_key(
+      const const_buffer & private_key,
+      file_format format,
+      asio::error_code & ec);
+
+
+This function is used to load a private key into the context from a buffer.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[private_key][The buffer containing the private key.]]
+
+[[format][The private key format (ASN.1 or PEM).]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+
+[heading Remarks]
+      
+Calls `SSL_CTX_use_PrivateKey` or SSL\_CTX\_use\_PrivateKey\_ASN1. 
+
+
+
+
+[endsect]
+
+
+[endsect]
+
 [section:use_private_key_file ssl::context::use_private_key_file]
 
 [indexterm2 use_private_key_file..ssl::context] 
@@ -85210,6 +91020,112 @@
 
 [endsect]
 
+[section:use_rsa_private_key ssl::context::use_rsa_private_key]
+
+[indexterm2 use_rsa_private_key..ssl::context] 
+Use an RSA private key from a memory buffer. 
+
+
+  void ``[link asio.reference.ssl__context.use_rsa_private_key.overload1 use_rsa_private_key]``(
+      const const_buffer & private_key,
+      file_format format);
+  ``  [''''&raquo;''' [link asio.reference.ssl__context.use_rsa_private_key.overload1 more...]]``
+
+  asio::error_code ``[link asio.reference.ssl__context.use_rsa_private_key.overload2 use_rsa_private_key]``(
+      const const_buffer & private_key,
+      file_format format,
+      asio::error_code & ec);
+  ``  [''''&raquo;''' [link asio.reference.ssl__context.use_rsa_private_key.overload2 more...]]``
+
+
+[section:overload1 ssl::context::use_rsa_private_key (1 of 2 overloads)]
+
+
+Use an RSA private key from a memory buffer. 
+
+
+  void use_rsa_private_key(
+      const const_buffer & private_key,
+      file_format format);
+
+
+This function is used to load an RSA private key into the context from a buffer.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[private_key][The buffer containing the RSA private key.]]
+
+[[format][The private key format (ASN.1 or PEM).]]
+
+]
+
+
+[heading Exceptions]
+    
+
+[variablelist
+  
+[[asio::system_error][Thrown on failure.]]
+
+]
+
+
+[heading Remarks]
+      
+Calls `SSL_CTX_use_RSAPrivateKey` or SSL\_CTX\_use\_RSAPrivateKey\_ASN1. 
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 ssl::context::use_rsa_private_key (2 of 2 overloads)]
+
+
+Use an RSA private key from a memory buffer. 
+
+
+  asio::error_code use_rsa_private_key(
+      const const_buffer & private_key,
+      file_format format,
+      asio::error_code & ec);
+
+
+This function is used to load an RSA private key into the context from a buffer.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[private_key][The buffer containing the RSA private key.]]
+
+[[format][The private key format (ASN.1 or PEM).]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+
+[heading Remarks]
+      
+Calls `SSL_CTX_use_RSAPrivateKey` or SSL\_CTX\_use\_RSAPrivateKey\_ASN1. 
+
+
+
+
+[endsect]
+
+
+[endsect]
+
 [section:use_rsa_private_key_file ssl::context::use_rsa_private_key_file]
 
 [indexterm2 use_rsa_private_key_file..ssl::context] 
@@ -85316,6 +91232,104 @@
 
 [endsect]
 
+[section:use_tmp_dh ssl::context::use_tmp_dh]
+
+[indexterm2 use_tmp_dh..ssl::context] 
+Use the specified memory buffer to obtain the temporary Diffie-Hellman parameters. 
+
+
+  void ``[link asio.reference.ssl__context.use_tmp_dh.overload1 use_tmp_dh]``(
+      const const_buffer & dh);
+  ``  [''''&raquo;''' [link asio.reference.ssl__context.use_tmp_dh.overload1 more...]]``
+
+  asio::error_code ``[link asio.reference.ssl__context.use_tmp_dh.overload2 use_tmp_dh]``(
+      const const_buffer & dh,
+      asio::error_code & ec);
+  ``  [''''&raquo;''' [link asio.reference.ssl__context.use_tmp_dh.overload2 more...]]``
+
+
+[section:overload1 ssl::context::use_tmp_dh (1 of 2 overloads)]
+
+
+Use the specified memory buffer to obtain the temporary Diffie-Hellman parameters. 
+
+
+  void use_tmp_dh(
+      const const_buffer & dh);
+
+
+This function is used to load Diffie-Hellman parameters into the context from a buffer.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[dh][The memory buffer containing the Diffie-Hellman parameters. The buffer must use the PEM format.]]
+
+]
+
+
+[heading Exceptions]
+    
+
+[variablelist
+  
+[[asio::system_error][Thrown on failure.]]
+
+]
+
+
+[heading Remarks]
+      
+Calls `SSL_CTX_set_tmp_dh`. 
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 ssl::context::use_tmp_dh (2 of 2 overloads)]
+
+
+Use the specified memory buffer to obtain the temporary Diffie-Hellman parameters. 
+
+
+  asio::error_code use_tmp_dh(
+      const const_buffer & dh,
+      asio::error_code & ec);
+
+
+This function is used to load Diffie-Hellman parameters into the context from a buffer.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[dh][The memory buffer containing the Diffie-Hellman parameters. The buffer must use the PEM format.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+
+[heading Remarks]
+      
+Calls `SSL_CTX_set_tmp_dh`. 
+
+
+
+
+[endsect]
+
+
+[endsect]
+
 [section:use_tmp_dh_file ssl::context::use_tmp_dh_file]
 
 [indexterm2 use_tmp_dh_file..ssl::context] 
@@ -85495,6 +91509,11 @@
   ]
 
   [
+    [[link asio.reference.ssl__context_base.no_compression [*no_compression]]]
+    [Disable compression. Compression is disabled by default. ]
+  ]
+
+  [
     [[link asio.reference.ssl__context_base.no_sslv2 [*no_sslv2]]]
     [Disable SSL v2. ]
   ]
@@ -85518,9 +91537,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/context_base.hpp]
+['Header: ][^asio/ssl/context_base.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
 
 
 [section:default_workarounds ssl::context_base::default_workarounds]
@@ -85589,6 +91608,12 @@
 [indexterm2 sslv23..ssl::context_base]
 [indexterm2 sslv23_client..ssl::context_base]
 [indexterm2 sslv23_server..ssl::context_base]
+[indexterm2 tlsv11..ssl::context_base]
+[indexterm2 tlsv11_client..ssl::context_base]
+[indexterm2 tlsv11_server..ssl::context_base]
+[indexterm2 tlsv12..ssl::context_base]
+[indexterm2 tlsv12_client..ssl::context_base]
+[indexterm2 tlsv12_server..ssl::context_base]
 
 [heading Values]
 [variablelist
@@ -85653,6 +91678,36 @@
     [SSL/TLS server. ]
   ]
 
+  [
+    [tlsv11]
+    [Generic TLS version 1.1. ]
+  ]
+
+  [
+    [tlsv11_client]
+    [TLS version 1.1 client. ]
+  ]
+
+  [
+    [tlsv11_server]
+    [TLS version 1.1 server. ]
+  ]
+
+  [
+    [tlsv12]
+    [Generic TLS version 1.2. ]
+  ]
+
+  [
+    [tlsv12_client]
+    [TLS version 1.2 client. ]
+  ]
+
+  [
+    [tlsv12_server]
+    [TLS version 1.2 server. ]
+  ]
+
 ]
 
 
@@ -85661,6 +91716,20 @@
 
 
 
+[section:no_compression ssl::context_base::no_compression]
+
+[indexterm2 no_compression..ssl::context_base] 
+Disable compression. Compression is disabled by default. 
+
+
+  static const long no_compression = implementation_defined;
+
+
+
+[endsect]
+
+
+
 [section:no_sslv2 ssl::context_base::no_sslv2]
 
 [indexterm2 no_sslv2..ssl::context_base] 
@@ -85715,9 +91784,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/context_base.hpp]
+['Header: ][^asio/ssl/context_base.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
 
 
 [endsect]
@@ -85859,9 +91928,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/rfc2818_verification.hpp]
+['Header: ][^asio/ssl/rfc2818_verification.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
 
 
 [section:operator_lp__rp_ ssl::rfc2818_verification::operator()]
@@ -85892,9 +91961,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/rfc2818_verification.hpp]
+['Header: ][^asio/ssl/rfc2818_verification.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
 
 
 [endsect]
@@ -86044,6 +92113,11 @@
   ]
   
   [
+    [[link asio.reference.ssl__stream.set_verify_depth [*set_verify_depth]]]
+    [Set the peer verification depth. ]
+  ]
+  
+  [
     [[link asio.reference.ssl__stream.set_verify_mode [*set_verify_mode]]]
     [Set the peer verification mode. ]
   ]
@@ -86075,9 +92149,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. The application must also ensure that all asynchronous operations are performed within the same implicit or explicit strand.
+['Shared] ['objects:] Unsafe. The application must also ensure that all asynchronous operations are performed within the same implicit or explicit strand.
 
 
 [heading Example]
@@ -86096,10 +92170,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/stream.hpp]
+['Header: ][^asio/ssl/stream.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
-
+['Convenience header: ][^asio/ssl.hpp]
 
 [section:async_handshake ssl::stream::async_handshake]
 
@@ -86109,7 +92182,30 @@
 
   template<
       typename ``[link asio.reference.HandshakeHandler HandshakeHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_handshake(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.ssl__stream.async_handshake.overload1 async_handshake]``(
+      handshake_type type,
+      HandshakeHandler handler);
+  ``  [''''&raquo;''' [link asio.reference.ssl__stream.async_handshake.overload1 more...]]``
+
+  template<
+      typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
+      typename ``[link asio.reference.BufferedHandshakeHandler BufferedHandshakeHandler]``>
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` ``[link asio.reference.ssl__stream.async_handshake.overload2 async_handshake]``(
+      handshake_type type,
+      const ConstBufferSequence & buffers,
+      BufferedHandshakeHandler handler);
+  ``  [''''&raquo;''' [link asio.reference.ssl__stream.async_handshake.overload2 more...]]``
+
+
+[section:overload1 ssl::stream::async_handshake (1 of 2 overloads)]
+
+
+Start an asynchronous SSL handshake. 
+
+
+  template<
+      typename ``[link asio.reference.HandshakeHandler HandshakeHandler]``>
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_handshake(
       handshake_type type,
       HandshakeHandler handler);
 
@@ -86141,6 +92237,53 @@
 
 
 
+[section:overload2 ssl::stream::async_handshake (2 of 2 overloads)]
+
+
+Start an asynchronous SSL handshake. 
+
+
+  template<
+      typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
+      typename ``[link asio.reference.BufferedHandshakeHandler BufferedHandshakeHandler]``>
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_handshake(
+      handshake_type type,
+      const ConstBufferSequence & buffers,
+      BufferedHandshakeHandler handler);
+
+
+This function is used to asynchronously perform an SSL handshake on the stream. This function call always returns immediately.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[type][The type of handshaking to be performed, i.e. as a client or as a server.]]
+
+[[buffers][The buffered data to be reused for the handshake. Although the buffers object may be copied as necessary, ownership of the underlying buffers is retained by the caller, which must guarantee that they remain valid until the handler is called.]]
+
+[[handler][The handler to be called when the handshake operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be: 
+``
+   void handler(
+     const asio::error_code& error, // Result of operation.
+     std::size_t bytes_transferred // Amount of buffers used in handshake.
+   ); 
+``
+]]
+
+]
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:async_read_some ssl::stream::async_read_some]
 
 [indexterm2 async_read_some..ssl::stream] 
@@ -86150,7 +92293,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_some(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_read_some(
       const MutableBufferSequence & buffers,
       ReadHandler handler);
 
@@ -86196,7 +92339,7 @@
 
   template<
       typename ``[link asio.reference.ShutdownHandler ShutdownHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_shutdown(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_shutdown(
       ShutdownHandler handler);
 
 
@@ -86234,7 +92377,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_some(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_write_some(
       const ConstBufferSequence & buffers,
       WriteHandler handler);
 
@@ -86309,8 +92452,23 @@
       asio::error_code & ec);
   ``  [''''&raquo;''' [link asio.reference.ssl__stream.handshake.overload2 more...]]``
 
+  template<
+      typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``>
+  void ``[link asio.reference.ssl__stream.handshake.overload3 handshake]``(
+      handshake_type type,
+      const ConstBufferSequence & buffers);
+  ``  [''''&raquo;''' [link asio.reference.ssl__stream.handshake.overload3 more...]]``
 
-[section:overload1 ssl::stream::handshake (1 of 2 overloads)]
+  template<
+      typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``>
+  asio::error_code ``[link asio.reference.ssl__stream.handshake.overload4 handshake]``(
+      handshake_type type,
+      const ConstBufferSequence & buffers,
+      asio::error_code & ec);
+  ``  [''''&raquo;''' [link asio.reference.ssl__stream.handshake.overload4 more...]]``
+
+
+[section:overload1 ssl::stream::handshake (1 of 4 overloads)]
 
 
 Perform SSL handshaking. 
@@ -86349,7 +92507,7 @@
 
 
 
-[section:overload2 ssl::stream::handshake (2 of 2 overloads)]
+[section:overload2 ssl::stream::handshake (2 of 4 overloads)]
 
 
 Perform SSL handshaking. 
@@ -86380,6 +92538,87 @@
 [endsect]
 
 
+
+[section:overload3 ssl::stream::handshake (3 of 4 overloads)]
+
+
+Perform SSL handshaking. 
+
+
+  template<
+      typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``>
+  void handshake(
+      handshake_type type,
+      const ConstBufferSequence & buffers);
+
+
+This function is used to perform SSL handshaking on the stream. The function call will block until handshaking is complete or an error occurs.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[type][The type of handshaking to be performed, i.e. as a client or as a server.]]
+
+[[buffers][The buffered data to be reused for the handshake.]]
+
+]
+
+
+[heading Exceptions]
+    
+
+[variablelist
+  
+[[asio::system_error][Thrown on failure. ]]
+
+]
+
+
+
+
+[endsect]
+
+
+
+[section:overload4 ssl::stream::handshake (4 of 4 overloads)]
+
+
+Perform SSL handshaking. 
+
+
+  template<
+      typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``>
+  asio::error_code handshake(
+      handshake_type type,
+      const ConstBufferSequence & buffers,
+      asio::error_code & ec);
+
+
+This function is used to perform SSL handshaking on the stream. The function call will block until handshaking is complete or an error occurs.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[type][The type of handshaking to be performed, i.e. as a client or as a server.]]
+
+[[buffers][The buffered data to be reused for the handshake.]]
+
+[[ec][Set to indicate what error occurred, if any. ]]
+
+]
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 
@@ -86443,9 +92682,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/stream.hpp]
+['Header: ][^asio/ssl/stream.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
 
 
 [endsect]
@@ -86524,9 +92763,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/stream.hpp]
+['Header: ][^asio/ssl/stream.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
 
 
 [endsect]
@@ -86583,9 +92822,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/stream.hpp]
+['Header: ][^asio/ssl/stream.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
 
 
 [endsect]
@@ -86664,9 +92903,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/stream.hpp]
+['Header: ][^asio/ssl/stream.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
 
 
 [endsect]
@@ -86908,6 +93147,104 @@
 
 [endsect]
 
+[section:set_verify_depth ssl::stream::set_verify_depth]
+
+[indexterm2 set_verify_depth..ssl::stream] 
+Set the peer verification depth. 
+
+
+  void ``[link asio.reference.ssl__stream.set_verify_depth.overload1 set_verify_depth]``(
+      int depth);
+  ``  [''''&raquo;''' [link asio.reference.ssl__stream.set_verify_depth.overload1 more...]]``
+
+  asio::error_code ``[link asio.reference.ssl__stream.set_verify_depth.overload2 set_verify_depth]``(
+      int depth,
+      asio::error_code & ec);
+  ``  [''''&raquo;''' [link asio.reference.ssl__stream.set_verify_depth.overload2 more...]]``
+
+
+[section:overload1 ssl::stream::set_verify_depth (1 of 2 overloads)]
+
+
+Set the peer verification depth. 
+
+
+  void set_verify_depth(
+      int depth);
+
+
+This function may be used to configure the maximum verification depth allowed by the stream.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[depth][Maximum depth for the certificate chain verification that shall be allowed.]]
+
+]
+
+
+[heading Exceptions]
+    
+
+[variablelist
+  
+[[asio::system_error][Thrown on failure.]]
+
+]
+
+
+[heading Remarks]
+      
+Calls `SSL_set_verify_depth`. 
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 ssl::stream::set_verify_depth (2 of 2 overloads)]
+
+
+Set the peer verification depth. 
+
+
+  asio::error_code set_verify_depth(
+      int depth,
+      asio::error_code & ec);
+
+
+This function may be used to configure the maximum verification depth allowed by the stream.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[depth][Maximum depth for the certificate chain verification that shall be allowed.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+
+[heading Remarks]
+      
+Calls `SSL_set_verify_depth`. 
+
+
+
+
+[endsect]
+
+
+[endsect]
+
 [section:set_verify_mode ssl::stream::set_verify_mode]
 
 [indexterm2 set_verify_mode..ssl::stream] 
@@ -87267,9 +93604,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/stream.hpp]
+['Header: ][^asio/ssl/stream.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
 
 
 [section:ssl ssl::stream::impl_struct::ssl]
@@ -87321,9 +93658,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/stream_base.hpp]
+['Header: ][^asio/ssl/stream_base.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
 
 
 [section:handshake_type ssl::stream_base::handshake_type]
@@ -87386,9 +93723,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/verify_mode.hpp]
+['Header: ][^asio/ssl/verify_mode.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
 
 
 [endsect]
@@ -87442,9 +93779,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/verify_context.hpp]
+['Header: ][^asio/ssl/verify_context.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
 
 
 [section:native_handle ssl::verify_context::native_handle]
@@ -87475,9 +93812,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/verify_context.hpp]
+['Header: ][^asio/ssl/verify_context.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
 
 
 [endsect]
@@ -87513,9 +93850,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/verify_mode.hpp]
+['Header: ][^asio/ssl/verify_mode.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
 
 
 [endsect]
@@ -87547,9 +93884,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/verify_mode.hpp]
+['Header: ][^asio/ssl/verify_mode.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
 
 
 [endsect]
@@ -87567,9 +93904,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/verify_mode.hpp]
+['Header: ][^asio/ssl/verify_mode.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
 
 
 [endsect]
@@ -87587,9 +93924,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/ssl/verify_mode.hpp]
+['Header: ][^asio/ssl/verify_mode.hpp]
 
-[*Convenience header: ][^asio/ssl.hpp]
+['Convenience header: ][^asio/ssl.hpp]
 
 
 [endsect]
@@ -87743,7 +94080,7 @@
 
 A waitable timer is always in one of two states: "expired" or "not expired". If the `wait()` or `async_wait()` function is called on an expired timer, the wait operation will complete immediately.
 
-Most applications will use the asio::waitable\_timer typedef.
+Most applications will use one of the [link asio.reference.steady_timer `steady_timer`], [link asio.reference.system_timer `system_timer`] or [link asio.reference.high_resolution_timer `high_resolution_timer`] typedefs.
 
 
 [heading Remarks]
@@ -87753,20 +94090,20 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Examples]
   
-Performing a blocking wait: 
+Performing a blocking wait (C++11): 
 
    // Construct a timer without setting an expiry time.
-   asio::waitable_timer timer(io_service);
+   asio::steady_timer timer(io_service);
 
    // Set an expiry time relative to now.
-   timer.expires_from_now(boost::posix_time::seconds(5));
+   timer.expires_from_now(std::chrono::seconds(5));
 
    // Wait for the timer to expire.
    timer.wait();
@@ -87775,7 +94112,7 @@
 
 
 
-Performing an asynchronous wait: 
+Performing an asynchronous wait (C++11): 
 
    void handler(const asio::error_code& error)
    {
@@ -87788,8 +94125,8 @@
    ...
 
    // Construct a timer with an absolute expiry time.
-   asio::waitable_timer timer(io_service,
-       boost::posix_time::time_from_string("2005-12-07 23:59:59.000"));
+   asio::steady_timer timer(io_service,
+       std::chrono::steady_clock::now() + std::chrono::seconds(60));
 
    // Start an asynchronous wait.
    timer.async_wait(handler);
@@ -87798,7 +94135,7 @@
 
 
 
-[heading Changing an active waitable_timer's expiry time]
+[heading Changing an active waitable timer's expiry time]
   
 
 
@@ -87848,9 +94185,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/steady_timer.hpp]
+['Header: ][^asio/steady_timer.hpp]
 
-[*Convenience header: ]None
+['Convenience header: ]None
 
 
 [endsect]
@@ -87956,9 +94293,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Safe.
+['Shared] ['objects:] Safe.
 
 
 
@@ -87966,9 +94303,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/strand.hpp]
+['Header: ][^asio/strand.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -88087,6 +94424,11 @@
   ]
   
   [
+    [[link asio.reference.stream_socket_service.converting_move_construct [*converting_move_construct]]]
+    [Move-construct a new stream socket implementation from another protocol type. ]
+  ]
+  
+  [
     [[link asio.reference.stream_socket_service.destroy [*destroy]]]
     [Destroy a stream socket implementation. ]
   ]
@@ -88200,9 +94542,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/stream_socket_service.hpp]
+['Header: ][^asio/stream_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:assign stream_socket_service::assign]
@@ -88231,7 +94573,7 @@
 
   template<
       typename ``[link asio.reference.ConnectHandler ConnectHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_connect(
       implementation_type & impl,
       const endpoint_type & peer_endpoint,
       ConnectHandler handler);
@@ -88251,7 +94593,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_receive(
       implementation_type & impl,
       const MutableBufferSequence & buffers,
       socket_base::message_flags flags,
@@ -88272,7 +94614,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_send(
       implementation_type & impl,
       const ConstBufferSequence & buffers,
       socket_base::message_flags flags,
@@ -88397,6 +94739,25 @@
 
 
 
+[section:converting_move_construct stream_socket_service::converting_move_construct]
+
+[indexterm2 converting_move_construct..stream_socket_service] 
+Move-construct a new stream socket implementation from another protocol type. 
+
+
+  template<
+      typename ``[link asio.reference.Protocol Protocol1]``>
+  void converting_move_construct(
+      implementation_type & impl,
+      typename stream_socket_service< Protocol1 >::implementation_type & other_impl,
+      typename enable_if< is_convertible< Protocol1, Protocol >::value >::type *  = 0);
+
+
+
+[endsect]
+
+
+
 [section:destroy stream_socket_service::destroy]
 
 [indexterm2 destroy..stream_socket_service] 
@@ -88424,9 +94785,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/stream_socket_service.hpp]
+['Header: ][^asio/stream_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -88495,9 +94856,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/stream_socket_service.hpp]
+['Header: ][^asio/stream_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -88629,9 +94990,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/stream_socket_service.hpp]
+['Header: ][^asio/stream_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -88704,9 +95065,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/stream_socket_service.hpp]
+['Header: ][^asio/stream_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -88796,9 +95157,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/stream_socket_service.hpp]
+['Header: ][^asio/stream_socket_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -89067,9 +95428,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/streambuf.hpp]
+['Header: ][^asio/streambuf.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -89087,9 +95448,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/error_code.hpp]
+['Header: ][^asio/error_code.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -89142,9 +95503,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/system_error.hpp]
+['Header: ][^asio/system_error.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:code system_error::code]
@@ -89429,7 +95790,7 @@
 
 A waitable timer is always in one of two states: "expired" or "not expired". If the `wait()` or `async_wait()` function is called on an expired timer, the wait operation will complete immediately.
 
-Most applications will use the asio::waitable\_timer typedef.
+Most applications will use one of the [link asio.reference.steady_timer `steady_timer`], [link asio.reference.system_timer `system_timer`] or [link asio.reference.high_resolution_timer `high_resolution_timer`] typedefs.
 
 
 [heading Remarks]
@@ -89439,20 +95800,20 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Examples]
   
-Performing a blocking wait: 
+Performing a blocking wait (C++11): 
 
    // Construct a timer without setting an expiry time.
-   asio::waitable_timer timer(io_service);
+   asio::steady_timer timer(io_service);
 
    // Set an expiry time relative to now.
-   timer.expires_from_now(boost::posix_time::seconds(5));
+   timer.expires_from_now(std::chrono::seconds(5));
 
    // Wait for the timer to expire.
    timer.wait();
@@ -89461,7 +95822,7 @@
 
 
 
-Performing an asynchronous wait: 
+Performing an asynchronous wait (C++11): 
 
    void handler(const asio::error_code& error)
    {
@@ -89474,8 +95835,8 @@
    ...
 
    // Construct a timer with an absolute expiry time.
-   asio::waitable_timer timer(io_service,
-       boost::posix_time::time_from_string("2005-12-07 23:59:59.000"));
+   asio::steady_timer timer(io_service,
+       std::chrono::steady_clock::now() + std::chrono::seconds(60));
 
    // Start an asynchronous wait.
    timer.async_wait(handler);
@@ -89484,7 +95845,7 @@
 
 
 
-[heading Changing an active waitable_timer's expiry time]
+[heading Changing an active waitable timer's expiry time]
   
 
 
@@ -89534,9 +95895,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/system_timer.hpp]
+['Header: ][^asio/system_timer.hpp]
 
-[*Convenience header: ]None
+['Convenience header: ]None
 
 
 [endsect]
@@ -89578,9 +95939,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Example]
@@ -89603,9 +95964,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/thread.hpp]
+['Header: ][^asio/thread.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:join thread::join]
@@ -89740,9 +96101,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/time_traits.hpp]
+['Header: ][^asio/time_traits.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:add time_traits< boost::posix_time::ptime >::add]
@@ -89773,9 +96134,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/time_traits.hpp]
+['Header: ][^asio/time_traits.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -89840,9 +96201,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/time_traits.hpp]
+['Header: ][^asio/time_traits.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -89904,9 +96265,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/completion_condition.hpp]
+['Header: ][^asio/completion_condition.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -89951,9 +96312,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/completion_condition.hpp]
+['Header: ][^asio/completion_condition.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -89998,9 +96359,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/completion_condition.hpp]
+['Header: ][^asio/completion_condition.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -90010,15 +96371,19 @@
 [section:use_future use_future]
 
 [indexterm1 use_future] 
+A special value, similar to std::nothrow. 
+
 
   constexpr use_future_t use_future;
 
 
+See the documentation for [link asio.reference.use_future_t `use_future_t`] for a usage example. 
+
 [heading Requirements]
 
-[*Header: ][^asio/use_future.hpp]
+['Header: ][^asio/use_future.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -90027,6 +96392,8 @@
 [section:use_future_t use_future_t]
 
 
+Class used to specify that an asynchronous operation should return a future. 
+
 
   template<
       typename Allocator = std::allocator<void>>
@@ -90052,26 +96419,40 @@
 
   [
     [[link asio.reference.use_future_t.get_allocator [*get_allocator]]]
-    []
+    [Obtain allocator. ]
   ]
   
   [
     [[link asio.reference.use_future_t.operator_lb__rb_ [*operator\[\]]]]
-    []
+    [Specify an alternate allocator. ]
   ]
   
   [
     [[link asio.reference.use_future_t.use_future_t [*use_future_t]]]
-    []
+    [Construct using default-constructed allocator. 
+
+     Construct using specified allocator. ]
   ]
   
 ]
 
+The [link asio.reference.use_future_t `use_future_t`] class is used to indicate that an asynchronous operation should return a std::future object. A [link asio.reference.use_future_t `use_future_t`] object may be passed as a handler to an asynchronous operation, typically using the special value `asio::use_future`. For example:
+
+
+
+   std::future<std::size_t> my_future
+     = my_socket.async_read_some(my_buffer, asio::use_future); 
+
+
+
+
+The initiating function (async\_read\_some in the above example) returns a future that will receive the result of the operation. If the operation completes with an [link asio.reference.error_code `error_code`] indicating failure, it is converted into a [link asio.reference.system_error `system_error`] and passed back to the caller via the future. 
+
 [heading Requirements]
 
-[*Header: ][^asio/use_future.hpp]
+['Header: ][^asio/use_future.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:allocator_type use_future_t::allocator_type]
@@ -90084,9 +96465,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/use_future.hpp]
+['Header: ][^asio/use_future.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -90096,6 +96477,8 @@
 [section:get_allocator use_future_t::get_allocator]
 
 [indexterm2 get_allocator..use_future_t] 
+Obtain allocator. 
+
 
   allocator_type get_allocator() const;
 
@@ -90108,9 +96491,11 @@
 [section:operator_lb__rb_ use_future_t::operator\[\]]
 
 [indexterm2 operator\[\]..use_future_t] 
+Specify an alternate allocator. 
+
 
   template<
-      typename ``[link asio.reference.OtherAllocator OtherAllocator]``>
+      typename OtherAllocator>
   use_future_t< OtherAllocator > operator[](
       const OtherAllocator & allocator) const;
 
@@ -90122,10 +96507,16 @@
 [section:use_future_t use_future_t::use_future_t]
 
 [indexterm2 use_future_t..use_future_t] 
+Construct using default-constructed allocator. 
+
 
   constexpr ``[link asio.reference.use_future_t.use_future_t.overload1 use_future_t]``();
   ``  [''''&raquo;''' [link asio.reference.use_future_t.use_future_t.overload1 more...]]``
 
+
+Construct using specified allocator. 
+
+
   explicit ``[link asio.reference.use_future_t.use_future_t.overload2 use_future_t]``(
       const Allocator & allocator);
   ``  [''''&raquo;''' [link asio.reference.use_future_t.use_future_t.overload2 more...]]``
@@ -90134,6 +96525,8 @@
 [section:overload1 use_future_t::use_future_t (1 of 2 overloads)]
 
 
+Construct using default-constructed allocator. 
+
 
   constexpr use_future_t();
 
@@ -90146,6 +96539,8 @@
 [section:overload2 use_future_t::use_future_t (2 of 2 overloads)]
 
 
+Construct using specified allocator. 
+
 
   use_future_t(
       const Allocator & allocator);
@@ -90192,9 +96587,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/io_service.hpp]
+['Header: ][^asio/io_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -90224,9 +96619,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/wait_traits.hpp]
+['Header: ][^asio/wait_traits.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:to_wait_duration wait_traits::to_wait_duration]
@@ -90380,9 +96775,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/waitable_timer_service.hpp]
+['Header: ][^asio/waitable_timer_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:async_wait waitable_timer_service::async_wait]
@@ -90391,7 +96786,7 @@
 
   template<
       typename ``[link asio.reference.WaitHandler WaitHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_wait(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_wait(
       implementation_type & impl,
       WaitHandler handler);
 
@@ -90445,9 +96840,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/waitable_timer_service.hpp]
+['Header: ][^asio/waitable_timer_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -90496,9 +96891,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/waitable_timer_service.hpp]
+['Header: ][^asio/waitable_timer_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -90656,9 +97051,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/waitable_timer_service.hpp]
+['Header: ][^asio/waitable_timer_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -90677,9 +97072,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/waitable_timer_service.hpp]
+['Header: ][^asio/waitable_timer_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -90698,9 +97093,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/waitable_timer_service.hpp]
+['Header: ][^asio/waitable_timer_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -90895,17 +97290,17 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_handle.hpp]
+['Header: ][^asio/windows/basic_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:assign windows::basic_handle::assign]
 
@@ -91388,9 +97783,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_handle.hpp]
+['Header: ][^asio/windows/basic_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -91629,18 +98024,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_handle.hpp]
+['Header: ][^asio/windows/basic_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -91691,9 +98086,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_handle.hpp]
+['Header: ][^asio/windows/basic_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -91712,9 +98107,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_handle.hpp]
+['Header: ][^asio/windows/basic_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -91794,9 +98189,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_handle.hpp]
+['Header: ][^asio/windows/basic_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -91981,17 +98376,17 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_object_handle.hpp]
+['Header: ][^asio/windows/basic_object_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:assign windows::basic_object_handle::assign]
 
@@ -92056,7 +98451,7 @@
 
   template<
       typename ``[link asio.reference.WaitHandler WaitHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_wait(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_wait(
       WaitHandler handler);
 
 
@@ -92529,9 +98924,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_object_handle.hpp]
+['Header: ][^asio/windows/basic_object_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -92782,18 +99177,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_object_handle.hpp]
+['Header: ][^asio/windows/basic_object_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -92850,9 +99245,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_object_handle.hpp]
+['Header: ][^asio/windows/basic_object_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -92874,9 +99269,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_object_handle.hpp]
+['Header: ][^asio/windows/basic_object_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -92956,9 +99351,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_object_handle.hpp]
+['Header: ][^asio/windows/basic_object_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -93211,17 +99606,17 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_random_access_handle.hpp]
+['Header: ][^asio/windows/basic_random_access_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:assign windows::basic_random_access_handle::assign]
 
@@ -93287,7 +99682,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_some_at(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_read_some_at(
       uint64_t offset,
       const MutableBufferSequence & buffers,
       ReadHandler handler);
@@ -93347,7 +99742,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_some_at(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_write_some_at(
       uint64_t offset,
       const ConstBufferSequence & buffers,
       WriteHandler handler);
@@ -93842,9 +100237,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_random_access_handle.hpp]
+['Header: ][^asio/windows/basic_random_access_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -94095,18 +100490,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_random_access_handle.hpp]
+['Header: ][^asio/windows/basic_random_access_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -94163,9 +100558,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_random_access_handle.hpp]
+['Header: ][^asio/windows/basic_random_access_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -94184,9 +100579,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_random_access_handle.hpp]
+['Header: ][^asio/windows/basic_random_access_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -94400,9 +100795,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_random_access_handle.hpp]
+['Header: ][^asio/windows/basic_random_access_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -94717,18 +101112,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_stream_handle.hpp]
+['Header: ][^asio/windows/basic_stream_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 [section:assign windows::basic_stream_handle::assign]
 
@@ -94794,7 +101189,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_some(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_read_some(
       const MutableBufferSequence & buffers,
       ReadHandler handler);
 
@@ -94851,7 +101246,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_some(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_write_some(
       const ConstBufferSequence & buffers,
       WriteHandler handler);
 
@@ -95343,9 +101738,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_stream_handle.hpp]
+['Header: ][^asio/windows/basic_stream_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -95596,18 +101991,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_stream_handle.hpp]
+['Header: ][^asio/windows/basic_stream_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -95664,9 +102059,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_stream_handle.hpp]
+['Header: ][^asio/windows/basic_stream_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -95685,9 +102080,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_stream_handle.hpp]
+['Header: ][^asio/windows/basic_stream_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -95893,9 +102288,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/basic_stream_handle.hpp]
+['Header: ][^asio/windows/basic_stream_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -96190,18 +102585,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/object_handle.hpp]
+['Header: ][^asio/windows/object_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -96321,9 +102716,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/object_handle_service.hpp]
+['Header: ][^asio/windows/object_handle_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:assign windows::object_handle_service::assign]
@@ -96351,7 +102746,7 @@
 
   template<
       typename ``[link asio.reference.WaitHandler WaitHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_wait(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_wait(
       implementation_type & impl,
       WaitHandler handler);
 
@@ -96466,9 +102861,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/object_handle_service.hpp]
+['Header: ][^asio/windows/object_handle_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -96550,9 +102945,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/object_handle_service.hpp]
+['Header: ][^asio/windows/object_handle_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -96645,17 +103040,17 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/overlapped_ptr.hpp]
+['Header: ][^asio/windows/overlapped_ptr.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:complete windows::overlapped_ptr::complete]
@@ -97024,18 +103419,18 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. 
+['Shared] ['objects:] Unsafe. 
 
 
 
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/random_access_handle.hpp]
+['Header: ][^asio/windows/random_access_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -97177,9 +103572,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/random_access_handle_service.hpp]
+['Header: ][^asio/windows/random_access_handle_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:assign windows::random_access_handle_service::assign]
@@ -97208,7 +103603,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_some_at(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_read_some_at(
       implementation_type & impl,
       uint64_t offset,
       const MutableBufferSequence & buffers,
@@ -97229,7 +103624,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_some_at(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_write_some_at(
       implementation_type & impl,
       uint64_t offset,
       const ConstBufferSequence & buffers,
@@ -97346,9 +103741,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/random_access_handle_service.hpp]
+['Header: ][^asio/windows/random_access_handle_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -97445,9 +103840,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/random_access_handle_service.hpp]
+['Header: ][^asio/windows/random_access_handle_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -97466,9 +103861,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/random_access_handle_service.hpp]
+['Header: ][^asio/windows/random_access_handle_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -97702,9 +104097,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -97712,9 +104107,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/stream_handle.hpp]
+['Header: ][^asio/windows/stream_handle.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -97856,9 +104251,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/stream_handle_service.hpp]
+['Header: ][^asio/windows/stream_handle_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:assign windows::stream_handle_service::assign]
@@ -97887,7 +104282,7 @@
   template<
       typename ``[link asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link asio.reference.ReadHandler ReadHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_some(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_read_some(
       implementation_type & impl,
       const MutableBufferSequence & buffers,
       ReadHandler handler);
@@ -97907,7 +104302,7 @@
   template<
       typename ``[link asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link asio.reference.WriteHandler WriteHandler]``>
-  ``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_some(
+  ``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]`` async_write_some(
       implementation_type & impl,
       const ConstBufferSequence & buffers,
       WriteHandler handler);
@@ -98023,9 +104418,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/stream_handle_service.hpp]
+['Header: ][^asio/windows/stream_handle_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -98122,9 +104517,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/stream_handle_service.hpp]
+['Header: ][^asio/windows/stream_handle_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -98143,9 +104538,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/windows/stream_handle_service.hpp]
+['Header: ][^asio/windows/stream_handle_service.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
@@ -98291,9 +104686,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/write.hpp]
+['Header: ][^asio/write.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:overload1 write (1 of 8 overloads)]
@@ -98960,9 +105355,9 @@
 
 [heading Requirements]
 
-[*Header: ][^asio/write_at.hpp]
+['Header: ][^asio/write_at.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [section:overload1 write_at (1 of 8 overloads)]
@@ -99566,6 +105961,8 @@
 [section:yield_context yield_context]
 
 [indexterm1 yield_context] 
+Context object the represents the currently executing coroutine. 
+
 
   typedef basic_yield_context< unspecified > yield_context;
 
@@ -99576,22 +105973,39 @@
 
   [
     [[link asio.reference.basic_yield_context.basic_yield_context [*basic_yield_context]]]
-    []
+    [Construct a yield context to represent the specified coroutine. ]
   ]
   
   [
     [[link asio.reference.basic_yield_context.operator_lb__rb_ [*operator\[\]]]]
-    []
+    [Return a yield context that sets the specified error_code. ]
   ]
   
 ]
 
+The [link asio.reference.basic_yield_context `basic_yield_context`] class is used to represent the currently executing stackful coroutine. A [link asio.reference.basic_yield_context `basic_yield_context`] may be passed as a handler to an asynchronous operation. For example:
+
+
+
+   template <typename Handler>
+   void my_coroutine(basic_yield_context<Handler> yield)
+   {
+     ...
+     std::size_t n = my_socket.async_read_some(buffer, yield);
+     ...
+   } 
+
+
+
+
+The initiating function (async\_read\_some in the above example) suspends the current coroutine. The coroutine is resumed when the asynchronous operation completes, and the result of the operation is returned. 
+
 
 [heading Requirements]
 
-[*Header: ][^asio/spawn.hpp]
+['Header: ][^asio/spawn.hpp]
 
-[*Convenience header: ][^asio.hpp]
+['Convenience header: ][^asio.hpp]
 
 
 [endsect]
diff --git a/asio/src/doc/reference.xsl b/asio/src/doc/reference.xsl
index 24c6f03..f13477f 100644
--- a/asio/src/doc/reference.xsl
+++ b/asio/src/doc/reference.xsl
@@ -194,7 +194,7 @@
   </xsl:variable>
   <xsl:choose>
     <xsl:when test="$type='void_or_deduced'">
-      <xsl:text>``[link asio.reference.asynchronous_operations.return_type ['void-or-deduced]]``</xsl:text>
+      <xsl:text>``[link asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]``</xsl:text>
     </xsl:when>   
     <xsl:otherwise>
       <xsl:value-of select="$type"/>
@@ -738,13 +738,13 @@
   <xsl:text>[heading Requirements]</xsl:text>
   <xsl:value-of select="$newline"/>
   <xsl:value-of select="$newline"/>
-  <xsl:text>[*Header: ]</xsl:text>
+  <xsl:text>['Header: ]</xsl:text>
   <xsl:text>[^asio/</xsl:text>
   <xsl:value-of select="substring-after($file, 'include/asio/')"/>
   <xsl:text>]</xsl:text>
   <xsl:value-of select="$newline"/>
   <xsl:value-of select="$newline"/>
-  <xsl:text>[*Convenience header: ]</xsl:text>
+  <xsl:text>['Convenience header: ]</xsl:text>
   <xsl:choose>
     <xsl:when test="contains($file, 'include/asio/ssl')">
       <xsl:text>[^asio/ssl.hpp]</xsl:text>
@@ -1464,6 +1464,9 @@
         <xsl:when test="declname = 'N'">
           <xsl:value-of select="declname"/>
         </xsl:when>
+        <xsl:when test="declname = 'OtherAllocator'">
+          <xsl:value-of select="declname"/>
+        </xsl:when>
         <xsl:when test="declname = 'PasswordCallback'">
           <xsl:value-of select="declname"/>
         </xsl:when>
@@ -1482,6 +1485,12 @@
         <xsl:when test="declname = 'SeqPacketSocketService1'">
           <xsl:value-of select="concat('``[link asio.reference.SeqPacketSocketService ', declname, ']``')"/>
         </xsl:when>
+        <xsl:when test="declname = 'Signature'">
+          <xsl:value-of select="declname"/>
+        </xsl:when>
+        <xsl:when test="declname = 'SocketAcceptorService1' or declname = 'SocketAcceptorService2'">
+          <xsl:value-of select="concat('``[link asio.reference.SocketAcceptorService ', declname, ']``')"/>
+        </xsl:when>
         <xsl:when test="declname = 'SocketService1' or declname = 'SocketService2'">
           <xsl:value-of select="concat('``[link asio.reference.SocketService ', declname, ']``')"/>
         </xsl:when>
diff --git a/asio/src/doc/requirements/asynchronous_operations.qbk b/asio/src/doc/requirements/asynchronous_operations.qbk
index 54359e6..af96ad3 100644
--- a/asio/src/doc/requirements/asynchronous_operations.qbk
+++ b/asio/src/doc/requirements/asynchronous_operations.qbk
@@ -173,8 +173,45 @@
 `asio_handler_invoke`. Multiple storage blocks may be allocated for a single
 asynchronous operation.
 
-[section:return_type Return type of an initiating function]
+[heading Return type of an initiating function]
 
-[endsect]
+By default, initiating functions return `void`. This is always the case when
+the handler is a function pointer, C++11 lambda, or a function object produced
+by `boost::bind` or `std::bind`.
+
+For other types, the return type may be customised via a two-step process:
+
+# A specialisation of the [link asio.reference.handler_type `handler_type`]
+template, which is used to determine the true handler type based on the
+asynchronous operation's handler's signature.
+
+# A specialisation of the [link asio.reference.async_result `async_result`]
+template, which is used both to determine the return type and to extract the
+return value from the handler.
+
+These two templates have been specialised to provide support for [link
+asio.overview.core.spawn stackful coroutines] and the C++11 `std::future`
+class.
+
+As an example, consider what happens when enabling `std::future` support by
+using the `asio::use_future` special value, as in:
+
+  std::future<std::size_t> length =
+    my_socket.async_read_some(my_buffer, asio::use_future);
+
+When a handler signature has the form:
+
+  void handler(error_code ec, result_type result);
+
+the initiating function returns a `std::future` templated on `result_type`. In
+the above `async_read_some` example, this is `std::size_t`. If the asynchronous
+operation fails, the `error_code` is converted into a `system_error` exception
+and passed back to the caller through the future.
+
+Where a handler signature has the form:
+
+  void handler(error_code ec);
+
+the initiating function instead returns `std::future<void>`.
 
 [endsect]
