Boost logo

Boost-Commit :

From: chris_at_[hidden]
Date: 2008-07-03 09:05:37


Author: chris_kohlhoff
Date: 2008-07-03 09:05:33 EDT (Thu, 03 Jul 2008)
New Revision: 47038
URL: http://svn.boost.org/trac/boost/changeset/47038

Log:
Merge bug and doc fixes from trunk.

........
  r46535 | chris_kohlhoff | 2008-06-20 10:25:50 +1000 (Fri, 20 Jun 2008) | 2 lines
  
  One more check needed for BSD serial port extensions.
........
  r46766 | chris_kohlhoff | 2008-06-27 15:38:16 +1000 (Fri, 27 Jun 2008) | 2 lines
  
  Add missing copyright notices.
........
  r46876 | chris_kohlhoff | 2008-06-30 10:24:44 +1000 (Mon, 30 Jun 2008) | 2 lines
  
  Some linux configurations do not automatically define _XOPEN_SOURCE.
........
  r46944 | chris_kohlhoff | 2008-07-01 21:52:54 +1000 (Tue, 01 Jul 2008) | 2 lines
  
  Fix documentation on behaviour when a connect operation fails.
........
  r46945 | chris_kohlhoff | 2008-07-01 21:53:54 +1000 (Tue, 01 Jul 2008) | 2 lines
  
  Fix name of parameter as referred to in documentation.
........
  r46946 | chris_kohlhoff | 2008-07-01 21:58:39 +1000 (Tue, 01 Jul 2008) | 2 lines
  
  Fix typos.
........
  r46947 | chris_kohlhoff | 2008-07-01 21:59:25 +1000 (Tue, 01 Jul 2008) | 2 lines
  
  Merge in new reference index page.
........
  r46948 | chris_kohlhoff | 2008-07-01 22:06:49 +1000 (Tue, 01 Jul 2008) | 2 lines
  
  Documentation generation enhancements.
........
  r46949 | chris_kohlhoff | 2008-07-01 22:13:51 +1000 (Tue, 01 Jul 2008) | 2 lines
  
  Improve buffer() documentation. Fix vector overloads to match TR2 proposal.
........
  r46950 | chris_kohlhoff | 2008-07-01 22:14:57 +1000 (Tue, 01 Jul 2008) | 4 lines
  
  Clarify behaviour of read_until/async_read_until with respect to leftover
  data in the streambuf. Use separate brief descriptions for function groups.
  Add some extra notes to the io_service documentation.
........
  r47013 | chris_kohlhoff | 2008-07-03 08:50:50 +1000 (Thu, 03 Jul 2008) | 2 lines
  
  Regenerate documentation.
........

Properties modified:
   branches/release/ (props changed)
Text files modified:
   branches/release/boost/asio/basic_socket.hpp | 6
   branches/release/boost/asio/buffer.hpp | 232 ++
   branches/release/boost/asio/handler_alloc_hook.hpp | 2
   branches/release/boost/asio/impl/serial_port_base.ipp | 2
   branches/release/boost/asio/io_service.hpp | 32
   branches/release/boost/asio/read.hpp | 6
   branches/release/boost/asio/read_at.hpp | 6
   branches/release/boost/asio/read_until.hpp | 127 +
   branches/release/boost/asio/write.hpp | 5
   branches/release/boost/asio/write_at.hpp | 5
   branches/release/libs/asio/doc/asio.qbk | 2
   branches/release/libs/asio/doc/quickref.xml | 547 ++++-
   branches/release/libs/asio/doc/reference.qbk | 3265 ++++++++++++++++++++++-----------------
   branches/release/libs/asio/doc/reference.xsl | 79
   branches/release/libs/asio/doc/requirements/StreamDescriptorService.qbk | 4
   branches/release/libs/asio/doc/requirements/StreamHandleService.qbk | 4
   branches/release/libs/asio/example/porthopper/client.cpp | 10
   branches/release/libs/asio/example/porthopper/protocol.hpp | 10
   branches/release/libs/asio/example/porthopper/server.cpp | 10
   branches/release/libs/asio/test/Jamfile.v2 | 2
   20 files changed, 2700 insertions(+), 1656 deletions(-)

Modified: branches/release/boost/asio/basic_socket.hpp
==============================================================================
--- branches/release/boost/asio/basic_socket.hpp (original)
+++ branches/release/boost/asio/basic_socket.hpp 2008-07-03 09:05:33 EDT (Thu, 03 Jul 2008)
@@ -515,7 +515,7 @@
    *
    * The socket is automatically opened if it is not already open. If the
    * connect fails, and the socket was automatically opened, the socket is
- * returned to the closed state.
+ * not returned to the closed state.
    *
    * @param peer_endpoint The remote endpoint to which the socket will be
    * connected.
@@ -550,7 +550,7 @@
    *
    * The socket is automatically opened if it is not already open. If the
    * connect fails, and the socket was automatically opened, the socket is
- * returned to the closed state.
+ * not returned to the closed state.
    *
    * @param peer_endpoint The remote endpoint to which the socket will be
    * connected.
@@ -592,7 +592,7 @@
    *
    * The socket is automatically opened if it is not already open. If the
    * connect fails, and the socket was automatically opened, the socket is
- * returned to the closed state.
+ * not returned to the closed state.
    *
    * @param peer_endpoint The remote endpoint to which the socket will be
    * connected. Copies will be made of the endpoint object as required.

Modified: branches/release/boost/asio/buffer.hpp
==============================================================================
--- branches/release/boost/asio/buffer.hpp (original)
+++ branches/release/boost/asio/buffer.hpp 2008-07-03 09:05:33 EDT (Thu, 03 Jul 2008)
@@ -196,6 +196,12 @@
   /// A random-access iterator type that may be used to read elements.
   typedef const mutable_buffer* const_iterator;
 
+ /// Construct to represent a given memory range.
+ mutable_buffers_1(void* data, std::size_t size)
+ : mutable_buffer(data, size)
+ {
+ }
+
   /// Construct to represent a single modifiable buffer.
   explicit mutable_buffers_1(const mutable_buffer& b)
     : mutable_buffer(b)
@@ -360,6 +366,12 @@
   /// A random-access iterator type that may be used to read elements.
   typedef const const_buffer* const_iterator;
 
+ /// Construct to represent a given memory range.
+ const_buffers_1(const void* data, std::size_t size)
+ : const_buffer(data, size)
+ {
+ }
+
   /// Construct to represent a single non-modifiable buffer.
   explicit const_buffers_1(const const_buffer& b)
     : const_buffer(b)
@@ -443,12 +455,22 @@
 /** @defgroup buffer boost::asio::buffer
  *
  * @brief The boost::asio::buffer function is used to create a buffer object to
- * represent raw memory, an array of POD elements, or a vector of POD elements.
+ * represent raw memory, an array of POD elements, a vector of POD elements,
+ * or a std::string.
+ *
+ * A buffer object represents a contiguous region of memory as a 2-tuple
+ * consisting of a pointer and size in bytes. A tuple of the form <tt>{void*,
+ * size_t}</tt> specifies a mutable (modifiable) region of memory. Similarly, a
+ * tuple of the form <tt>{const void*, size_t}</tt> specifies a const
+ * (non-modifiable) region of memory. These two forms correspond to the classes
+ * mutable_buffer and const_buffer, respectively. To mirror C++'s conversion
+ * rules, a mutable_buffer is implicitly convertible to a const_buffer, and the
+ * opposite conversion is not permitted.
  *
  * The simplest use case involves reading or writing a single buffer of a
  * specified size:
  *
- * @code sock.write(boost::asio::buffer(data, size)); @endcode
+ * @code sock.send(boost::asio::buffer(data, size)); @endcode
  *
  * In the above example, the return value of boost::asio::buffer meets the
  * requirements of the ConstBufferSequence concept so that it may be directly
@@ -460,13 +482,90 @@
  * automatically determining the size of the buffer:
  *
  * @code char d1[128];
- * size_t bytes_transferred = sock.read(boost::asio::buffer(d1));
+ * size_t bytes_transferred = sock.receive(boost::asio::buffer(d1));
  *
  * std::vector<char> d2(128);
- * bytes_transferred = sock.read(boost::asio::buffer(d2));
+ * bytes_transferred = sock.receive(boost::asio::buffer(d2));
  *
  * boost::array<char, 128> d3;
- * bytes_transferred = sock.read(boost::asio::buffer(d3)); @endcode
+ * bytes_transferred = sock.receive(boost::asio::buffer(d3)); @endcode
+ *
+ * In all three cases above, the buffers created are exactly 128 bytes long.
+ * Note that a vector is @e never automatically resized when creating or using
+ * a buffer. The buffer size is determined using the vector's <tt>size()</tt>
+ * member function, and not its capacity.
+ *
+ * @par Accessing Buffer Contents
+ *
+ * The contents of a buffer may be accessed using the boost::asio::buffer_size
+ * and boost::asio::buffer_cast functions:
+ *
+ * @code boost::asio::mutable_buffer b1 = ...;
+ * std::size_t s1 = boost::asio::buffer_size(b1);
+ * unsigned char* p1 = boost::asio::buffer_cast<unsigned char*>(b1);
+ *
+ * boost::asio::const_buffer b2 = ...;
+ * std::size_t s2 = boost::asio::buffer_size(b2);
+ * const void* p2 = boost::asio::buffer_cast<const void*>(b2); @endcode
+ *
+ * The boost::asio::buffer_cast function permits violations of type safety, so
+ * uses of it in application code should be carefully considered.
+ *
+ * @par Buffer Invalidation
+ *
+ * A buffer object does not have any ownership of the memory it refers to. It
+ * is the responsibility of the application to ensure the memory region remains
+ * valid until it is no longer required for an I/O operation. When the memory
+ * is no longer available, the buffer is said to have been invalidated.
+ *
+ * For the boost::asio::buffer overloads that accept an argument of type
+ * std::vector, the buffer objects returned are invalidated by any vector
+ * operation that also invalidates all references, pointers and iterators
+ * referring to the elements in the sequence (C++ Std, 23.2.4)
+ *
+ * For the boost::asio::buffer overloads that accept an argument of type
+ * std::string, the buffer objects returned are invalidated according to the
+ * rules defined for invalidation of references, pointers and iterators
+ * referring to elements of the sequence (C++ Std, 21.3).
+ *
+ * @par Buffer Arithmetic
+ *
+ * Buffer objects may be manipulated using simple arithmetic in a safe way
+ * which helps prevent buffer overruns. Consider an array initialised as
+ * follows:
+ *
+ * @code boost::array<char, 6> a = { 'a', 'b', 'c', 'd', 'e' }; @endcode
+ *
+ * A buffer object @c b1 created using:
+ *
+ * @code b1 = boost::asio::buffer(a); @endcode
+ *
+ * represents the entire array, <tt>{ 'a', 'b', 'c', 'd', 'e' }</tt>. An
+ * optional second argument to the boost::asio::buffer function may be used to
+ * limit the size, in bytes, of the buffer:
+ *
+ * @code b2 = boost::asio::buffer(a, 3); @endcode
+ *
+ * such that @c b2 represents the data <tt>{ 'a', 'b', 'c' }</tt>. Even if the
+ * size argument exceeds the actual size of the array, the size of the buffer
+ * object created will be limited to the array size.
+ *
+ * An offset may be applied to an existing buffer to create a new one:
+ *
+ * @code b3 = b1 + 2; @endcode
+ *
+ * where @c b3 will set to represent <tt>{ 'c', 'd', 'e' }</tt>. If the offset
+ * exceeds the size of the existing buffer, the newly created buffer will be
+ * empty.
+ *
+ * Both an offset and size may be specified to create a buffer that corresponds
+ * to a specific range of bytes within an existing buffer:
+ *
+ * @code b4 = boost::asio::buffer(b1 + 1, 3); @endcode
+ *
+ * so that @c b4 will refer to the bytes <tt>{ 'b', 'c', 'd' }</tt>.
+ *
+ * @par Buffers and Scatter-Gather I/O
  *
  * To read or write using multiple buffers (i.e. scatter-gather I/O), multiple
  * buffer objects may be assigned into a container that supports the
@@ -481,23 +580,32 @@
  * boost::asio::buffer(d1),
  * boost::asio::buffer(d2),
  * boost::asio::buffer(d3) };
- * bytes_transferred = sock.read(bufs1);
+ * bytes_transferred = sock.receive(bufs1);
  *
  * std::vector<const_buffer> bufs2;
  * bufs2.push_back(boost::asio::buffer(d1));
  * bufs2.push_back(boost::asio::buffer(d2));
  * bufs2.push_back(boost::asio::buffer(d3));
- * bytes_transferred = sock.write(bufs2); @endcode
+ * bytes_transferred = sock.send(bufs2); @endcode
  */
 /*@{*/
 
 /// Create a new modifiable buffer from an existing buffer.
+/**
+ * @returns <tt>mutable_buffers_1(b)</tt>.
+ */
 inline mutable_buffers_1 buffer(const mutable_buffer& b)
 {
   return mutable_buffers_1(b);
 }
 
 /// Create a new modifiable buffer from an existing buffer.
+/**
+ * @returns A mutable_buffers_1 value equivalent to:
+ * @code mutable_buffers_1(
+ * buffer_cast<void*>(b),
+ * min(buffer_size(b), max_size_in_bytes)); @endcode
+ */
 inline mutable_buffers_1 buffer(const mutable_buffer& b,
     std::size_t max_size_in_bytes)
 {
@@ -512,12 +620,21 @@
 }
 
 /// Create a new non-modifiable buffer from an existing buffer.
+/**
+ * @returns <tt>const_buffers_1(b)</tt>.
+ */
 inline const_buffers_1 buffer(const const_buffer& b)
 {
   return const_buffers_1(b);
 }
 
 /// Create a new non-modifiable buffer from an existing buffer.
+/**
+ * @returns A const_buffers_1 value equivalent to:
+ * @code const_buffers_1(
+ * buffer_cast<const void*>(b),
+ * min(buffer_size(b), max_size_in_bytes)); @endcode
+ */
 inline const_buffers_1 buffer(const const_buffer& b,
     std::size_t max_size_in_bytes)
 {
@@ -532,12 +649,18 @@
 }
 
 /// Create a new modifiable buffer that represents the given memory range.
+/**
+ * @returns <tt>mutable_buffers_1(data, size_in_bytes)</tt>.
+ */
 inline mutable_buffers_1 buffer(void* data, std::size_t size_in_bytes)
 {
   return mutable_buffers_1(mutable_buffer(data, size_in_bytes));
 }
 
 /// Create a new non-modifiable buffer that represents the given memory range.
+/**
+ * @returns <tt>const_buffers_1(data, size_in_bytes)</tt>.
+ */
 inline const_buffers_1 buffer(const void* data,
     std::size_t size_in_bytes)
 {
@@ -545,6 +668,12 @@
 }
 
 /// Create a new modifiable buffer that represents the given POD array.
+/**
+ * @returns A mutable_buffers_1 value equivalent to:
+ * @code mutable_buffers_1(
+ * static_cast<void*>(data),
+ * N * sizeof(PodType)); @endcode
+ */
 template <typename PodType, std::size_t N>
 inline mutable_buffers_1 buffer(PodType (&data)[N])
 {
@@ -552,6 +681,12 @@
 }
  
 /// Create a new modifiable buffer that represents the given POD array.
+/**
+ * @returns A mutable_buffers_1 value equivalent to:
+ * @code mutable_buffers_1(
+ * static_cast<void*>(data),
+ * min(N * sizeof(PodType), max_size_in_bytes)); @endcode
+ */
 template <typename PodType, std::size_t N>
 inline mutable_buffers_1 buffer(PodType (&data)[N],
     std::size_t max_size_in_bytes)
@@ -563,6 +698,12 @@
 }
  
 /// Create a new non-modifiable buffer that represents the given POD array.
+/**
+ * @returns A const_buffers_1 value equivalent to:
+ * @code const_buffers_1(
+ * static_cast<const void*>(data),
+ * N * sizeof(PodType)); @endcode
+ */
 template <typename PodType, std::size_t N>
 inline const_buffers_1 buffer(const PodType (&data)[N])
 {
@@ -570,6 +711,12 @@
 }
 
 /// Create a new non-modifiable buffer that represents the given POD array.
+/**
+ * @returns A const_buffers_1 value equivalent to:
+ * @code const_buffers_1(
+ * static_cast<const void*>(data),
+ * min(N * sizeof(PodType), max_size_in_bytes)); @endcode
+ */
 template <typename PodType, std::size_t N>
 inline const_buffers_1 buffer(const PodType (&data)[N],
     std::size_t max_size_in_bytes)
@@ -652,6 +799,12 @@
       // || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590))
 
 /// Create a new modifiable buffer that represents the given POD array.
+/**
+ * @returns A mutable_buffers_1 value equivalent to:
+ * @code mutable_buffers_1(
+ * data.data(),
+ * data.size() * sizeof(PodType)); @endcode
+ */
 template <typename PodType, std::size_t N>
 inline mutable_buffers_1 buffer(boost::array<PodType, N>& data)
 {
@@ -660,6 +813,12 @@
 }
 
 /// Create a new modifiable buffer that represents the given POD array.
+/**
+ * @returns A mutable_buffers_1 value equivalent to:
+ * @code mutable_buffers_1(
+ * data.data(),
+ * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
+ */
 template <typename PodType, std::size_t N>
 inline mutable_buffers_1 buffer(boost::array<PodType, N>& data,
     std::size_t max_size_in_bytes)
@@ -671,6 +830,12 @@
 }
 
 /// Create a new non-modifiable buffer that represents the given POD array.
+/**
+ * @returns A const_buffers_1 value equivalent to:
+ * @code const_buffers_1(
+ * data.data(),
+ * data.size() * sizeof(PodType)); @endcode
+ */
 template <typename PodType, std::size_t N>
 inline const_buffers_1 buffer(boost::array<const PodType, N>& data)
 {
@@ -679,6 +844,12 @@
 }
 
 /// Create a new non-modifiable buffer that represents the given POD array.
+/**
+ * @returns A const_buffers_1 value equivalent to:
+ * @code const_buffers_1(
+ * data.data(),
+ * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
+ */
 template <typename PodType, std::size_t N>
 inline const_buffers_1 buffer(boost::array<const PodType, N>& data,
     std::size_t max_size_in_bytes)
@@ -693,6 +864,12 @@
        // || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590))
 
 /// Create a new non-modifiable buffer that represents the given POD array.
+/**
+ * @returns A const_buffers_1 value equivalent to:
+ * @code const_buffers_1(
+ * data.data(),
+ * data.size() * sizeof(PodType)); @endcode
+ */
 template <typename PodType, std::size_t N>
 inline const_buffers_1 buffer(const boost::array<PodType, N>& data)
 {
@@ -701,6 +878,12 @@
 }
 
 /// Create a new non-modifiable buffer that represents the given POD array.
+/**
+ * @returns A const_buffers_1 value equivalent to:
+ * @code const_buffers_1(
+ * data.data(),
+ * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
+ */
 template <typename PodType, std::size_t N>
 inline const_buffers_1 buffer(const boost::array<PodType, N>& data,
     std::size_t max_size_in_bytes)
@@ -713,6 +896,11 @@
 
 /// Create a new modifiable buffer that represents the given POD vector.
 /**
+ * @returns A mutable_buffers_1 value equivalent to:
+ * @code mutable_buffers_1(
+ * data.size() ? &data[0] : 0,
+ * data.size() * sizeof(PodType)); @endcode
+ *
  * @note The buffer is invalidated by any vector operation that would also
  * invalidate iterators.
  */
@@ -720,7 +908,7 @@
 inline mutable_buffers_1 buffer(std::vector<PodType, Allocator>& data)
 {
   return mutable_buffers_1(
- mutable_buffer(&data[0], data.size() * sizeof(PodType)
+ mutable_buffer(data.size() ? &data[0] : 0, data.size() * sizeof(PodType)
 #if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
         , detail::buffer_debug_check<
             typename std::vector<PodType, Allocator>::iterator
@@ -731,6 +919,11 @@
 
 /// Create a new modifiable buffer that represents the given POD vector.
 /**
+ * @returns A mutable_buffers_1 value equivalent to:
+ * @code mutable_buffers_1(
+ * data.size() ? &data[0] : 0,
+ * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
+ *
  * @note The buffer is invalidated by any vector operation that would also
  * invalidate iterators.
  */
@@ -739,7 +932,7 @@
     std::size_t max_size_in_bytes)
 {
   return mutable_buffers_1(
- mutable_buffer(&data[0],
+ mutable_buffer(data.size() ? &data[0] : 0,
         data.size() * sizeof(PodType) < max_size_in_bytes
         ? data.size() * sizeof(PodType) : max_size_in_bytes
 #if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
@@ -752,6 +945,11 @@
 
 /// Create a new non-modifiable buffer that represents the given POD vector.
 /**
+ * @returns A const_buffers_1 value equivalent to:
+ * @code const_buffers_1(
+ * data.size() ? &data[0] : 0,
+ * data.size() * sizeof(PodType)); @endcode
+ *
  * @note The buffer is invalidated by any vector operation that would also
  * invalidate iterators.
  */
@@ -760,7 +958,7 @@
     const std::vector<PodType, Allocator>& data)
 {
   return const_buffers_1(
- const_buffer(&data[0], data.size() * sizeof(PodType)
+ const_buffer(data.size() ? &data[0] : 0, data.size() * sizeof(PodType)
 #if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
         , detail::buffer_debug_check<
             typename std::vector<PodType, Allocator>::const_iterator
@@ -771,6 +969,11 @@
 
 /// Create a new non-modifiable buffer that represents the given POD vector.
 /**
+ * @returns A const_buffers_1 value equivalent to:
+ * @code const_buffers_1(
+ * data.size() ? &data[0] : 0,
+ * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
+ *
  * @note The buffer is invalidated by any vector operation that would also
  * invalidate iterators.
  */
@@ -779,7 +982,7 @@
     const std::vector<PodType, Allocator>& data, std::size_t max_size_in_bytes)
 {
   return const_buffers_1(
- const_buffer(&data[0],
+ const_buffer(data.size() ? &data[0] : 0,
         data.size() * sizeof(PodType) < max_size_in_bytes
         ? data.size() * sizeof(PodType) : max_size_in_bytes
 #if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
@@ -792,6 +995,8 @@
 
 /// Create a new non-modifiable buffer that represents the given string.
 /**
+ * @returns <tt>const_buffers_1(data.data(), data.size())</tt>.
+ *
  * @note The buffer is invalidated by any non-const operation called on the
  * given string object.
  */
@@ -806,6 +1011,11 @@
 
 /// Create a new non-modifiable buffer that represents the given string.
 /**
+ * @returns A const_buffers_1 value equivalent to:
+ * @code const_buffers_1(
+ * data.data(),
+ * min(data.size(), max_size_in_bytes)); @endcode
+ *
  * @note The buffer is invalidated by any non-const operation called on the
  * given string object.
  */

Modified: branches/release/boost/asio/handler_alloc_hook.hpp
==============================================================================
--- branches/release/boost/asio/handler_alloc_hook.hpp (original)
+++ branches/release/boost/asio/handler_alloc_hook.hpp 2008-07-03 09:05:33 EDT (Thu, 03 Jul 2008)
@@ -36,7 +36,7 @@
  *
  * This default implementation is simply:
  * @code
- * return ::operator new(bytes);
+ * return ::operator new(size);
  * @endcode
  *
  * @note All temporary objects associated with a handler will be deallocated

Modified: branches/release/boost/asio/impl/serial_port_base.ipp
==============================================================================
--- branches/release/boost/asio/impl/serial_port_base.ipp (original)
+++ branches/release/boost/asio/impl/serial_port_base.ipp 2008-07-03 09:05:33 EDT (Thu, 03 Jul 2008)
@@ -295,10 +295,12 @@
   {
     value_ = software;
   }
+# if defined(_BSD_SOURCE)
   else if (storage.c_cflag & CRTSCTS)
   {
     value_ = hardware;
   }
+# endif
   else
   {
     value_ = none;

Modified: branches/release/boost/asio/io_service.hpp
==============================================================================
--- branches/release/boost/asio/io_service.hpp (original)
+++ branches/release/boost/asio/io_service.hpp 2008-07-03 09:05:33 EDT (Thu, 03 Jul 2008)
@@ -101,6 +101,32 @@
  * }
  * }
  * @endcode
+ *
+ * @par Stopping the io_service from running out of work
+ *
+ * Some applications may need to prevent an io_service's run() call from
+ * returning when there is no more work to do. For example, the io_service may
+ * be being run in a background thread that is launched prior to the
+ * application's asynchronous operations. The run() call may be kept running by
+ * creating an object of type boost::asio::io_service::work:
+ *
+ * @code boost::asio::io_service io_service;
+ * boost::asio::io_service::work work(io_service);
+ * ... @endcode
+ *
+ * To effect a shutdown, the application will then need to call the io_service's
+ * stop() member function. This will cause the io_service run() call to return
+ * as soon as possible, abandoning unfinished operations and without permitting
+ * ready handlers to be dispatched.
+ *
+ * Alternatively, if the application requires that all operations and handlers
+ * be allowed to finish normally, the work object may be explicitly destroyed.
+ *
+ * @code boost::asio::io_service io_service;
+ * auto_ptr<boost::asio::io_service::work> work(
+ * new boost::asio::io_service::work(io_service));
+ * ...
+ * work.reset(); // Allow run() to exit. @endcode
  */
 class io_service
   : private noncopyable
@@ -160,6 +186,9 @@
    * @return The number of handlers that were executed.
    *
    * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note The poll() function may also be used to dispatch ready handlers,
+ * but without blocking.
    */
   std::size_t run();
 
@@ -179,6 +208,9 @@
    * @param ec Set to indicate what error occurred, if any.
    *
    * @return The number of handlers that were executed.
+ *
+ * @note The poll() function may also be used to dispatch ready handlers,
+ * but without blocking.
    */
   std::size_t run(boost::system::error_code& ec);
 

Modified: branches/release/boost/asio/read.hpp
==============================================================================
--- branches/release/boost/asio/read.hpp (original)
+++ branches/release/boost/asio/read.hpp 2008-07-03 09:05:33 EDT (Thu, 03 Jul 2008)
@@ -30,6 +30,9 @@
 
 /**
  * @defgroup read boost::asio::read
+ *
+ * @brief Attempt to read a certain amount of data from a stream before
+ * returning.
  */
 /*@{*/
 
@@ -270,6 +273,9 @@
 /*@}*/
 /**
  * @defgroup async_read boost::asio::async_read
+ *
+ * @brief Start an asynchronous operation to read a certain amount of data from
+ * a stream.
  */
 /*@{*/
 

Modified: branches/release/boost/asio/read_at.hpp
==============================================================================
--- branches/release/boost/asio/read_at.hpp (original)
+++ branches/release/boost/asio/read_at.hpp 2008-07-03 09:05:33 EDT (Thu, 03 Jul 2008)
@@ -31,6 +31,9 @@
 
 /**
  * @defgroup read_at boost::asio::read_at
+ *
+ * @brief Attempt to read a certain amount of data at the specified offset
+ * before returning.
  */
 /*@{*/
 
@@ -305,6 +308,9 @@
 /*@}*/
 /**
  * @defgroup async_read_at boost::asio::async_read_at
+ *
+ * @brief Start an asynchronous operation to read a certain amount of data at
+ * the specified offset.
  */
 /*@{*/
 

Modified: branches/release/boost/asio/read_until.hpp
==============================================================================
--- branches/release/boost/asio/read_until.hpp (original)
+++ branches/release/boost/asio/read_until.hpp 2008-07-03 09:05:33 EDT (Thu, 03 Jul 2008)
@@ -65,10 +65,13 @@
 
 /**
  * @defgroup read_until boost::asio::read_until
+ *
+ * @brief Read data into a streambuf until it contains a delimiter, matches a
+ * regular expression, or a function object indicates a match.
  */
 /*@{*/
 
-/// Read data into a streambuf until a delimiter is encountered.
+/// Read data into a streambuf until it contains a specified delimiter.
 /**
  * This function is used to read data into the specified streambuf until the
  * streambuf's get area contains the specified delimiter. The call will block
@@ -94,6 +97,10 @@
  *
  * @throws boost::system::system_error Thrown on failure.
  *
+ * @note After a successful read_until operation, the streambuf may contain
+ * additional data beyond the delimiter. An application will typically leave
+ * that data in the streambuf for a subsequent read_until operation to examine.
+ *
  * @par Example
  * To read data into a streambuf until a newline is encountered:
  * @code boost::asio::streambuf b;
@@ -106,7 +113,7 @@
 std::size_t read_until(SyncReadStream& s,
     boost::asio::basic_streambuf<Allocator>& b, char delim);
 
-/// Read data into a streambuf until a delimiter is encountered.
+/// Read data into a streambuf until it contains a specified delimiter.
 /**
  * This function is used to read data into the specified streambuf until the
  * streambuf's get area contains the specified delimiter. The call will block
@@ -131,13 +138,17 @@
  *
  * @returns The number of bytes in the streambuf's get area up to and including
  * the delimiter. Returns 0 if an error occurred.
+ *
+ * @note After a successful read_until operation, the streambuf may contain
+ * additional data beyond the delimiter. An application will typically leave
+ * that data in the streambuf for a subsequent read_until operation to examine.
  */
 template <typename SyncReadStream, typename Allocator>
 std::size_t read_until(SyncReadStream& s,
     boost::asio::basic_streambuf<Allocator>& b, char delim,
     boost::system::error_code& ec);
 
-/// Read data into a streambuf until a delimiter is encountered.
+/// Read data into a streambuf until it contains a specified delimiter.
 /**
  * This function is used to read data into the specified streambuf until the
  * streambuf's get area contains the specified delimiter. The call will block
@@ -163,6 +174,10 @@
  *
  * @throws boost::system::system_error Thrown on failure.
  *
+ * @note After a successful read_until operation, the streambuf may contain
+ * additional data beyond the delimiter. An application will typically leave
+ * that data in the streambuf for a subsequent read_until operation to examine.
+ *
  * @par Example
  * To read data into a streambuf until a newline is encountered:
  * @code boost::asio::streambuf b;
@@ -175,7 +190,7 @@
 std::size_t read_until(SyncReadStream& s,
     boost::asio::basic_streambuf<Allocator>& b, const std::string& delim);
 
-/// Read data into a streambuf until a delimiter is encountered.
+/// Read data into a streambuf until it contains a specified delimiter.
 /**
  * This function is used to read data into the specified streambuf until the
  * streambuf's get area contains the specified delimiter. The call will block
@@ -200,13 +215,18 @@
  *
  * @returns The number of bytes in the streambuf's get area up to and including
  * the delimiter. Returns 0 if an error occurred.
+ *
+ * @note After a successful read_until operation, the streambuf may contain
+ * additional data beyond the delimiter. An application will typically leave
+ * that data in the streambuf for a subsequent read_until operation to examine.
  */
 template <typename SyncReadStream, typename Allocator>
 std::size_t read_until(SyncReadStream& s,
     boost::asio::basic_streambuf<Allocator>& b, const std::string& delim,
     boost::system::error_code& ec);
 
-/// Read data into a streambuf until a regular expression is located.
+/// Read data into a streambuf until some part of the data it contains matches
+/// a regular expression.
 /**
  * This function is used to read data into the specified streambuf until the
  * streambuf's get area contains some data that matches a regular expression.
@@ -232,6 +252,11 @@
  *
  * @throws boost::system::system_error Thrown on failure.
  *
+ * @note After a successful read_until operation, the streambuf may contain
+ * additional data beyond that which matched the regular expression. An
+ * application will typically leave that data in the streambuf for a subsequent
+ * read_until operation to examine.
+ *
  * @par Example
  * To read data into a streambuf until a CR-LF sequence is encountered:
  * @code boost::asio::streambuf b;
@@ -244,7 +269,8 @@
 std::size_t read_until(SyncReadStream& s,
     boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr);
 
-/// Read data into a streambuf until a regular expression is located.
+/// Read data into a streambuf until some part of the data it contains matches
+/// a regular expression.
 /**
  * This function is used to read data into the specified streambuf until the
  * streambuf's get area contains some data that matches a regular expression.
@@ -270,6 +296,11 @@
  * @returns The number of bytes in the streambuf's get area up to and including
  * the substring that matches the regular expression. Returns 0 if an error
  * occurred.
+ *
+ * @note After a successful read_until operation, the streambuf may contain
+ * additional data beyond that which matched the regular expression. An
+ * application will typically leave that data in the streambuf for a subsequent
+ * read_until operation to examine.
  */
 template <typename SyncReadStream, typename Allocator>
 std::size_t read_until(SyncReadStream& s,
@@ -317,6 +348,10 @@
  *
  * @throws boost::system::system_error Thrown on failure.
  *
+ * @note After a successful read_until operation, the streambuf may contain
+ * additional data beyond that which matched the function object. An application
+ * will typically leave that data in the streambuf for a subsequent
+ *
  * @note The default implementation of the @c is_match_condition type trait
  * evaluates to true for function pointers and function objects with a
  * @c result_type typedef. It must be specialised for other user-defined
@@ -417,6 +452,10 @@
  * @returns The number of bytes in the streambuf's get area that have been fully
  * consumed by the match function. Returns 0 if an error occurred.
  *
+ * @note After a successful read_until operation, the streambuf may contain
+ * additional data beyond that which matched the function object. An application
+ * will typically leave that data in the streambuf for a subsequent
+ *
  * @note The default implementation of the @c is_match_condition type trait
  * evaluates to true for function pointers and function objects with a
  * @c result_type typedef. It must be specialised for other user-defined
@@ -430,12 +469,16 @@
 
 /*@}*/
 /**
-* @defgroup async_read_until boost::asio::async_read_until
-*/
+ * @defgroup async_read_until boost::asio::async_read_until
+ *
+ * @brief Start an asynchronous operation to read data into a streambuf until it
+ * contains a delimiter, matches a regular expression, or a function object
+ * indicates a match.
+ */
 /*@{*/
 
-/// Start an asynchronous operation to read data into a streambuf until a
-/// delimiter is encountered.
+/// Start an asynchronous operation to read data into a streambuf until it
+/// contains a specified delimiter.
 /**
  * This function is used to asynchronously read data into the specified
  * streambuf until the streambuf's get area contains the specified delimiter.
@@ -463,18 +506,24 @@
  * Copies will be made of the handler as required. The function signature of the
  * handler must be:
  * @code void handler(
- * const boost::system::error_code& error, // Result of operation.
+ * // Result of operation.
+ * const boost::system::error_code& error,
  *
- * std::size_t bytes_transferred // The number of bytes in the
- * // streambuf's get area up to
- * // and including the delimiter.
- * // 0 if an error occurred.
+ * // The number of bytes in the streambuf's get
+ * // area up to and including the delimiter.
+ * // 0 if an error occurred.
+ * std::size_t bytes_transferred
  * ); @endcode
  * Regardless of whether the asynchronous operation completes immediately or
  * not, the handler will not be invoked from within this function. Invocation of
  * the handler will be performed in a manner equivalent to using
  * boost::asio::io_service::post().
  *
+ * @note After a successful async_read_until operation, the streambuf may
+ * contain additional data beyond the delimiter. An application will typically
+ * leave that data in the streambuf for a subsequent async_read_until operation
+ * to examine.
+ *
  * @par Example
  * To asynchronously read data into a streambuf until a newline is encountered:
  * @code boost::asio::streambuf b;
@@ -497,8 +546,8 @@
     boost::asio::basic_streambuf<Allocator>& b,
     char delim, ReadHandler handler);
 
-/// Start an asynchronous operation to read data into a streambuf until a
-/// delimiter is encountered.
+/// Start an asynchronous operation to read data into a streambuf until it
+/// contains a specified delimiter.
 /**
  * This function is used to asynchronously read data into the specified
  * streambuf until the streambuf's get area contains the specified delimiter.
@@ -526,18 +575,24 @@
  * Copies will be made of the handler as required. The function signature of the
  * handler must be:
  * @code void handler(
- * const boost::system::error_code& error, // Result of operation.
+ * // Result of operation.
+ * const boost::system::error_code& error,
  *
- * std::size_t bytes_transferred // The number of bytes in the
- * // streambuf's get area up to
- * // and including the delimiter.
- * // 0 if an error occurred.
+ * // The number of bytes in the streambuf's get
+ * // area up to and including the delimiter.
+ * // 0 if an error occurred.
+ * std::size_t bytes_transferred
  * ); @endcode
  * Regardless of whether the asynchronous operation completes immediately or
  * not, the handler will not be invoked from within this function. Invocation of
  * the handler will be performed in a manner equivalent to using
  * boost::asio::io_service::post().
  *
+ * @note After a successful async_read_until operation, the streambuf may
+ * contain additional data beyond the delimiter. An application will typically
+ * leave that data in the streambuf for a subsequent async_read_until operation
+ * to examine.
+ *
  * @par Example
  * To asynchronously read data into a streambuf until a newline is encountered:
  * @code boost::asio::streambuf b;
@@ -560,8 +615,8 @@
     boost::asio::basic_streambuf<Allocator>& b, const std::string& delim,
     ReadHandler handler);
 
-/// Start an asynchronous operation to read data into a streambuf until a
-/// regular expression is located.
+/// Start an asynchronous operation to read data into a streambuf until some
+/// part of its data matches a regular expression.
 /**
  * This function is used to asynchronously read data into the specified
  * streambuf until the streambuf's get area contains some data that matches a
@@ -590,20 +645,25 @@
  * Copies will be made of the handler as required. The function signature of the
  * handler must be:
  * @code void handler(
- * const boost::system::error_code& error, // Result of operation.
+ * // Result of operation.
+ * const boost::system::error_code& error,
  *
- * std::size_t bytes_transferred // The number of bytes in the
- * // streambuf's get area up to
- * // and including the substring
- * // that matches the regular.
- * // expression. 0 if an error
- * // occurred.
+ * // The number of bytes in the streambuf's get
+ * // area up to and including the substring
+ * // that matches the regular. expression.
+ * // 0 if an error occurred.
+ * std::size_t bytes_transferred
  * ); @endcode
  * Regardless of whether the asynchronous operation completes immediately or
  * not, the handler will not be invoked from within this function. Invocation of
  * the handler will be performed in a manner equivalent to using
  * boost::asio::io_service::post().
  *
+ * @note After a successful async_read_until operation, the streambuf may
+ * contain additional data beyond that which matched the regular expression. An
+ * application will typically leave that data in the streambuf for a subsequent
+ * async_read_until operation to examine.
+ *
  * @par Example
  * To asynchronously read data into a streambuf until a CR-LF sequence is
  * encountered:
@@ -682,6 +742,11 @@
  * the handler will be performed in a manner equivalent to using
  * boost::asio::io_service::post().
  *
+ * @note After a successful async_read_until operation, the streambuf may
+ * contain additional data beyond that which matched the function object. An
+ * application will typically leave that data in the streambuf for a subsequent
+ * async_read_until operation to examine.
+ *
  * @note The default implementation of the @c is_match_condition type trait
  * evaluates to true for function pointers and function objects with a
  * @c result_type typedef. It must be specialised for other user-defined

Modified: branches/release/boost/asio/write.hpp
==============================================================================
--- branches/release/boost/asio/write.hpp (original)
+++ branches/release/boost/asio/write.hpp 2008-07-03 09:05:33 EDT (Thu, 03 Jul 2008)
@@ -30,6 +30,8 @@
 
 /**
  * @defgroup write boost::asio::write
+ *
+ * @brief Write a certain amount of data to a stream before returning.
  */
 /*@{*/
 
@@ -280,6 +282,9 @@
 /*@}*/
 /**
  * @defgroup async_write boost::asio::async_write
+ *
+ * @brief Start an asynchronous operation to write a certain amount of data to a
+ * stream.
  */
 /*@{*/
 

Modified: branches/release/boost/asio/write_at.hpp
==============================================================================
--- branches/release/boost/asio/write_at.hpp (original)
+++ branches/release/boost/asio/write_at.hpp 2008-07-03 09:05:33 EDT (Thu, 03 Jul 2008)
@@ -31,6 +31,8 @@
 
 /**
  * @defgroup write_at boost::asio::write_at
+ *
+ * @brief Write a certain amount of data at a specified offset before returning.
  */
 /*@{*/
 
@@ -304,6 +306,9 @@
 /*@}*/
 /**
  * @defgroup async_write_at boost::asio::async_write_at
+ *
+ * @brief Start an asynchronous operation to write a certain amount of data at
+ * the specified offset.
  */
 /*@{*/
 

Modified: branches/release/libs/asio/doc/asio.qbk
==============================================================================
--- branches/release/libs/asio/doc/asio.qbk (original)
+++ branches/release/libs/asio/doc/asio.qbk 2008-07-03 09:05:33 EDT (Thu, 03 Jul 2008)
@@ -20,6 +20,8 @@
 ]
 
 [template mdash[] '''&mdash; ''']
+[template indexterm1[term1] '''<indexterm><primary>'''[term1]'''</primary></indexterm>''']
+[template indexterm2[term1 term2] '''<indexterm><primary>'''[term1]'''</primary><secondary>'''[term2]'''</secondary></indexterm>''']
 [def __POSIX__ /POSIX/]
 [def __Windows__ /Windows/]
 [def __accept__ [@http://www.opengroup.org/onlinepubs/000095399/functions/accept.html `accept()`]]

Modified: branches/release/libs/asio/doc/quickref.xml
==============================================================================
--- branches/release/libs/asio/doc/quickref.xml (original)
+++ branches/release/libs/asio/doc/quickref.xml 2008-07-03 09:05:33 EDT (Thu, 03 Jul 2008)
@@ -10,174 +10,409 @@
 
 <informaltable frame="all">
   <tgroup cols="4">
+ <colspec colname="a"/>
+ <colspec colname="b"/>
+ <colspec colname="c"/>
+ <colspec colname="d"/>
+ <thead>
+ <row>
+ <entry valign="center" namest="a" nameend="d">
+ <bridgehead renderas="sect2">Core</bridgehead>
+ </entry>
+ </row>
+ </thead>
     <tbody>
       <row>
         <entry valign="top">
           <bridgehead renderas="sect3">Classes</bridgehead>
- <itemizedlist>
- <listitem><link linkend="boost_asio.reference.const_buffer">const_buffer</link></listitem>
- <listitem><link linkend="boost_asio.reference.const_buffers_1">const_buffers_1</link></listitem>
- <listitem><link linkend="boost_asio.reference.deadline_timer">deadline_timer</link></listitem>
- <listitem><link linkend="boost_asio.reference.io_service">io_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.io_service__id">io_service::id</link></listitem>
- <listitem><link linkend="boost_asio.reference.io_service__service">io_service::service</link></listitem>
- <listitem><link linkend="boost_asio.reference.io_service__strand">io_service::strand</link></listitem>
- <listitem><link linkend="boost_asio.reference.io_service__work">io_service::work</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__address">ip::address</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__address_v4">ip::address_v4</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__address_v6">ip::address_v6</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__resolver_query_base">ip::resolver_query_base</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__tcp">ip::tcp</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__tcp.acceptor">ip::tcp::acceptor</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__tcp.endpoint">ip::tcp::endpoint</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__tcp.iostream">ip::tcp::iostream</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__tcp.resolver">ip::tcp::resolver</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__tcp.socket">ip::tcp::socket</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__udp">ip::udp</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__udp.endpoint">ip::udp::endpoint</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__udp.resolver">ip::udp::resolver</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__udp.socket">ip::udp::socket</link></listitem>
- <listitem><link linkend="boost_asio.reference.local__stream_protocol">local::stream_protocol</link></listitem>
- <listitem><link linkend="boost_asio.reference.local__stream_protocol.acceptor">local::stream_protocol::acceptor</link></listitem>
- <listitem><link linkend="boost_asio.reference.local__stream_protocol.endpoint">local::stream_protocol::endpoint</link></listitem>
- <listitem><link linkend="boost_asio.reference.local__stream_protocol.iostream">local::stream_protocol::iostream</link></listitem>
- <listitem><link linkend="boost_asio.reference.local__stream_protocol.socket">local::stream_protocol::socket</link></listitem>
- <listitem><link linkend="boost_asio.reference.local__datagram_protocol">local::datagram_protocol</link></listitem>
- <listitem><link linkend="boost_asio.reference.local__datagram_protocol.endpoint">local::datagram_protocol::endpoint</link></listitem>
- <listitem><link linkend="boost_asio.reference.local__datagram_protocol.socket">local::datagram_protocol::socket</link></listitem>
- <listitem><link linkend="boost_asio.reference.mutable_buffer">mutable_buffer</link></listitem>
- <listitem><link linkend="boost_asio.reference.mutable_buffers_1">mutable_buffers_1</link></listitem>
- <listitem><link linkend="boost_asio.reference.posix__descriptor_base">posix::descriptor_base</link></listitem>
- <listitem><link linkend="boost_asio.reference.posix__stream_descriptor">posix::stream_descriptor</link></listitem>
- <listitem><link linkend="boost_asio.reference.socket_base">socket_base</link></listitem>
- <listitem><link linkend="boost_asio.reference.ssl__context">ssl::context</link></listitem>
- <listitem><link linkend="boost_asio.reference.ssl__context_base">ssl::context_base</link></listitem>
- <listitem><link linkend="boost_asio.reference.ssl__stream_base">ssl::stream_base</link></listitem>
- <listitem><link linkend="boost_asio.reference.streambuf">streambuf</link></listitem>
- <listitem><link linkend="boost_asio.reference.windows__stream_handle">windows::stream_handle</link></listitem>
- </itemizedlist>
- </entry>
- <entry valign="top">
- <bridgehead renderas="sect3">Class Templates</bridgehead>
- <itemizedlist>
- <listitem><link linkend="boost_asio.reference.basic_datagram_socket">basic_datagram_socket</link></listitem>
- <listitem><link linkend="boost_asio.reference.basic_deadline_timer">basic_deadline_timer</link></listitem>
- <listitem><link linkend="boost_asio.reference.basic_io_object">basic_io_object</link></listitem>
- <listitem><link linkend="boost_asio.reference.basic_socket">basic_socket</link></listitem>
- <listitem><link linkend="boost_asio.reference.basic_socket_acceptor">basic_socket_acceptor</link></listitem>
- <listitem><link linkend="boost_asio.reference.basic_socket_iostream">basic_socket_iostream</link></listitem>
- <listitem><link linkend="boost_asio.reference.basic_socket_streambuf">basic_socket_streambuf</link></listitem>
- <listitem><link linkend="boost_asio.reference.basic_stream_socket">basic_stream_socket</link></listitem>
- <listitem><link linkend="boost_asio.reference.basic_streambuf">basic_streambuf</link></listitem>
- <listitem><link linkend="boost_asio.reference.buffered_read_stream">buffered_read_stream</link></listitem>
- <listitem><link linkend="boost_asio.reference.buffered_stream">buffered_stream</link></listitem>
- <listitem><link linkend="boost_asio.reference.buffered_write_stream">buffered_write_stream</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__basic_endpoint">ip::basic_endpoint</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__basic_resolver">ip::basic_resolver</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__basic_resolver_entry">ip::basic_resolver_entry</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__basic_resolver_iterator">ip::basic_resolver_iterator</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__basic_resolver_query">ip::basic_resolver_query</link></listitem>
- <listitem><link linkend="boost_asio.reference.local__basic_endpoint">local::basic_endpoint</link></listitem>
- <listitem><link linkend="boost_asio.reference.posix__basic_descriptor">posix::basic_descriptor</link></listitem>
- <listitem><link linkend="boost_asio.reference.posix__basic_stream_descriptor">posix::basic_stream_descriptor</link></listitem>
- <listitem><link linkend="boost_asio.reference.ssl__basic_context">ssl::basic_context</link></listitem>
- <listitem><link linkend="boost_asio.reference.ssl__stream">ssl::stream</link></listitem>
- <listitem><link linkend="boost_asio.reference.windows__basic_handle">windows::basic_handle</link></listitem>
- <listitem><link linkend="boost_asio.reference.windows__basic_stream_handle">windows::basic_stream_handle</link></listitem>
- </itemizedlist>
- <bridgehead renderas="sect3">Services</bridgehead>
- <itemizedlist>
- <listitem><link linkend="boost_asio.reference.datagram_socket_service">datagram_socket_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.deadline_timer_service">deadline_timer_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__resolver_service">ip::resolver_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.posix__stream_descriptor_service">posix::stream_descriptor_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.socket_acceptor_service">socket_acceptor_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.ssl__context_service">ssl::context_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.ssl__stream_service">ssl::stream_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.stream_socket_service">stream_socket_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.windows__stream_handle_service">windows::stream_handle_service</link></listitem>
- </itemizedlist>
- <bridgehead renderas="sect3">Placeholders</bridgehead>
- <itemizedlist>
- <listitem><link linkend="boost_asio.reference.placeholders__bytes_transferred">placeholders::bytes_transferred</link></listitem>
- <listitem><link linkend="boost_asio.reference.placeholders__error">placeholders::error</link></listitem>
- <listitem><link linkend="boost_asio.reference.placeholders__iterator">placeholders::iterator</link></listitem>
- </itemizedlist>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.const_buffer">const_buffer</link></member>
+ <member><link linkend="boost_asio.reference.const_buffers_1">const_buffers_1</link></member>
+ <member><link linkend="boost_asio.reference.invalid_service_owner">invalid_service_owner</link></member>
+ <member><link linkend="boost_asio.reference.io_service">io_service</link></member>
+ <member><link linkend="boost_asio.reference.io_service__id">io_service::id</link></member>
+ <member><link linkend="boost_asio.reference.io_service__service">io_service::service</link></member>
+ <member><link linkend="boost_asio.reference.io_service__strand">io_service::strand</link></member>
+ <member><link linkend="boost_asio.reference.io_service__work">io_service::work</link></member>
+ <member><link linkend="boost_asio.reference.mutable_buffer">mutable_buffer</link></member>
+ <member><link linkend="boost_asio.reference.mutable_buffers_1">mutable_buffers_1</link></member>
+ <member><link linkend="boost_asio.reference.null_buffers">null_buffers</link></member>
+ <member><link linkend="boost_asio.reference.service_already_exists">service_already_exists</link></member>
+ <member><link linkend="boost_asio.reference.streambuf">streambuf</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Class Templates</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.basic_io_object">basic_io_object</link></member>
+ <member><link linkend="boost_asio.reference.basic_streambuf">basic_streambuf</link></member>
+ <member><link linkend="boost_asio.reference.buffered_read_stream">buffered_read_stream</link></member>
+ <member><link linkend="boost_asio.reference.buffered_stream">buffered_stream</link></member>
+ <member><link linkend="boost_asio.reference.buffered_write_stream">buffered_write_stream</link></member>
+ <member><link linkend="boost_asio.reference.buffers_iterator">buffers_iterator</link></member>
+ </simplelist>
         </entry>
         <entry valign="top">
           <bridgehead renderas="sect3">Free Functions</bridgehead>
- <itemizedlist>
- <listitem><link linkend="boost_asio.reference.add_service">add_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.asio_handler_allocate">asio_handler_allocate</link></listitem>
- <listitem><link linkend="boost_asio.reference.asio_handler_deallocate">asio_handler_deallocate</link></listitem>
- <listitem><link linkend="boost_asio.reference.asio_handler_invoke">asio_handler_invoke</link></listitem>
- <listitem><link linkend="boost_asio.reference.async_read">async_read</link></listitem>
- <listitem><link linkend="boost_asio.reference.async_read_until">async_read_until</link></listitem>
- <listitem><link linkend="boost_asio.reference.async_write">async_write</link></listitem>
- <listitem><link linkend="boost_asio.reference.buffer">buffer</link></listitem>
- <listitem><link linkend="boost_asio.reference.has_service">has_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__host_name">ip::host_name</link></listitem>
- <listitem><link linkend="boost_asio.reference.local__connect_pair">local::connect_pair</link></listitem>
- <listitem><link linkend="boost_asio.reference.read">read</link></listitem>
- <listitem><link linkend="boost_asio.reference.read_until">read_until</link></listitem>
- <listitem><link linkend="boost_asio.reference.transfer_all">transfer_all</link></listitem>
- <listitem><link linkend="boost_asio.reference.transfer_at_least">transfer_at_least</link></listitem>
- <listitem><link linkend="boost_asio.reference.use_service">use_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.write">write</link></listitem>
- </itemizedlist>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.add_service">add_service</link></member>
+ <member><link linkend="boost_asio.reference.asio_handler_allocate">asio_handler_allocate</link></member>
+ <member><link linkend="boost_asio.reference.asio_handler_deallocate">asio_handler_deallocate</link></member>
+ <member><link linkend="boost_asio.reference.asio_handler_invoke">asio_handler_invoke</link></member>
+ <member><link linkend="boost_asio.reference.async_read">async_read</link></member>
+ <member><link linkend="boost_asio.reference.async_read_at">async_read_at</link></member>
+ <member><link linkend="boost_asio.reference.async_read_until">async_read_until</link></member>
+ <member><link linkend="boost_asio.reference.async_write">async_write</link></member>
+ <member><link linkend="boost_asio.reference.async_write_at">async_write_at</link></member>
+ <member><link linkend="boost_asio.reference.buffer">buffer</link></member>
+ <member><link linkend="boost_asio.reference.buffers_begin">buffers_begin</link></member>
+ <member><link linkend="boost_asio.reference.buffers_end">buffers_end</link></member>
+ <member><link linkend="boost_asio.reference.has_service">has_service</link></member>
+ <member><link linkend="boost_asio.reference.read">read</link></member>
+ <member><link linkend="boost_asio.reference.read_at">read_at</link></member>
+ <member><link linkend="boost_asio.reference.read_until">read_until</link></member>
+ <member><link linkend="boost_asio.reference.transfer_all">transfer_all</link></member>
+ <member><link linkend="boost_asio.reference.transfer_at_least">transfer_at_least</link></member>
+ <member><link linkend="boost_asio.reference.use_service">use_service</link></member>
+ <member><link linkend="boost_asio.reference.write">write</link></member>
+ <member><link linkend="boost_asio.reference.write_at">write_at</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Placeholders</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.placeholders__bytes_transferred">placeholders::bytes_transferred</link></member>
+ <member><link linkend="boost_asio.reference.placeholders__error">placeholders::error</link></member>
+ <member><link linkend="boost_asio.reference.placeholders__iterator">placeholders::iterator</link></member>
+ </simplelist>
           <bridgehead renderas="sect3">Error Codes</bridgehead>
- <itemizedlist>
- <listitem><link linkend="boost_asio.reference.error__basic_errors">error::basic_errors</link></listitem>
- <listitem><link linkend="boost_asio.reference.error__netdb_errors">error::netdb_errors</link></listitem>
- <listitem><link linkend="boost_asio.reference.error__addrinfo_errors">error::addrinfo_errors</link></listitem>
- <listitem><link linkend="boost_asio.reference.error__misc_errors">error::misc_errors</link></listitem>
- </itemizedlist>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.error__basic_errors">error::basic_errors</link></member>
+ <member><link linkend="boost_asio.reference.error__netdb_errors">error::netdb_errors</link></member>
+ <member><link linkend="boost_asio.reference.error__addrinfo_errors">error::addrinfo_errors</link></member>
+ <member><link linkend="boost_asio.reference.error__misc_errors">error::misc_errors</link></member>
+ </simplelist>
           <bridgehead renderas="sect3">Type Traits</bridgehead>
- <itemizedlist>
- <listitem><link linkend="boost_asio.reference.is_read_buffered">is_read_buffered</link></listitem>
- <listitem><link linkend="boost_asio.reference.is_write_buffered">is_write_buffered</link></listitem>
- </itemizedlist>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.is_match_condition">is_match_condition</link></member>
+ <member><link linkend="boost_asio.reference.is_read_buffered">is_read_buffered</link></member>
+ <member><link linkend="boost_asio.reference.is_write_buffered">is_write_buffered</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Type Requirements</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.asynchronous_operations">Asynchronous operations</link></member>
+ <member><link linkend="boost_asio.reference.AsyncRandomAccessReadDevice">AsyncRandomAccessReadDevice</link></member>
+ <member><link linkend="boost_asio.reference.AsyncRandomAccessWriteDevice">AsyncRandomAccessWriteDevice</link></member>
+ <member><link linkend="boost_asio.reference.AsyncReadStream">AsyncReadStream</link></member>
+ <member><link linkend="boost_asio.reference.AsyncWriteStream">AsyncWriteStream</link></member>
+ <member><link linkend="boost_asio.reference.CompletionHandler">CompletionHandler</link></member>
+ <member><link linkend="boost_asio.reference.ConstBufferSequence">ConstBufferSequence</link></member>
+ <member><link linkend="boost_asio.reference.ConvertibleToConstBuffer">ConvertibleToConstBuffer</link></member>
+ <member><link linkend="boost_asio.reference.ConvertibleToMutableBuffer">ConvertibleToMutableBuffer</link></member>
+ <member><link linkend="boost_asio.reference.Handler">Handler</link></member>
+ <member><link linkend="boost_asio.reference.IoObjectService">IoObjectService</link></member>
+ <member><link linkend="boost_asio.reference.MutableBufferSequence">MutableBufferSequence</link></member>
+ <member><link linkend="boost_asio.reference.ReadHandler">ReadHandler</link></member>
+ <member><link linkend="boost_asio.reference.Service">Service</link></member>
+ <member><link linkend="boost_asio.reference.SyncRandomAccessReadDevice">SyncRandomAccessReadDevice</link></member>
+ <member><link linkend="boost_asio.reference.SyncRandomAccessWriteDevice">SyncRandomAccessWriteDevice</link></member>
+ <member><link linkend="boost_asio.reference.SyncReadStream">SyncReadStream</link></member>
+ <member><link linkend="boost_asio.reference.SyncWriteStream">SyncWriteStream</link></member>
+ <member><link linkend="boost_asio.reference.WriteHandler">WriteHandler</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ <tgroup cols="4">
+ <colspec colname="a"/>
+ <colspec colname="b"/>
+ <colspec colname="c"/>
+ <colspec colname="d"/>
+ <thead>
+ <row>
+ <entry valign="center" namest="a" nameend="d">
+ <bridgehead renderas="sect2">Networking</bridgehead>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Classes</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.ip__address">ip::address</link></member>
+ <member><link linkend="boost_asio.reference.ip__address_v4">ip::address_v4</link></member>
+ <member><link linkend="boost_asio.reference.ip__address_v6">ip::address_v6</link></member>
+ <member><link linkend="boost_asio.reference.ip__icmp">ip::icmp</link></member>
+ <member><link linkend="boost_asio.reference.ip__icmp.endpoint">ip::icmp::endpoint</link></member>
+ <member><link linkend="boost_asio.reference.ip__icmp.resolver">ip::icmp::resolver</link></member>
+ <member><link linkend="boost_asio.reference.ip__icmp.socket">ip::icmp::socket</link></member>
+ <member><link linkend="boost_asio.reference.ip__resolver_query_base">ip::resolver_query_base</link></member>
+ <member><link linkend="boost_asio.reference.ip__tcp">ip::tcp</link></member>
+ <member><link linkend="boost_asio.reference.ip__tcp.acceptor">ip::tcp::acceptor</link></member>
+ <member><link linkend="boost_asio.reference.ip__tcp.endpoint">ip::tcp::endpoint</link></member>
+ <member><link linkend="boost_asio.reference.ip__tcp.iostream">ip::tcp::iostream</link></member>
+ <member><link linkend="boost_asio.reference.ip__tcp.resolver">ip::tcp::resolver</link></member>
+ <member><link linkend="boost_asio.reference.ip__tcp.socket">ip::tcp::socket</link></member>
+ <member><link linkend="boost_asio.reference.ip__udp">ip::udp</link></member>
+ <member><link linkend="boost_asio.reference.ip__udp.endpoint">ip::udp::endpoint</link></member>
+ <member><link linkend="boost_asio.reference.ip__udp.resolver">ip::udp::resolver</link></member>
+ <member><link linkend="boost_asio.reference.ip__udp.socket">ip::udp::socket</link></member>
+ <member><link linkend="boost_asio.reference.socket_base">socket_base</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Free Functions</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_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="boost_asio.reference.basic_datagram_socket">basic_datagram_socket</link></member>
+ <member><link linkend="boost_asio.reference.basic_deadline_timer">basic_deadline_timer</link></member>
+ <member><link linkend="boost_asio.reference.basic_socket">basic_socket</link></member>
+ <member><link linkend="boost_asio.reference.basic_raw_socket">basic_raw_socket</link></member>
+ <member><link linkend="boost_asio.reference.basic_socket_acceptor">basic_socket_acceptor</link></member>
+ <member><link linkend="boost_asio.reference.basic_socket_iostream">basic_socket_iostream</link></member>
+ <member><link linkend="boost_asio.reference.basic_socket_streambuf">basic_socket_streambuf</link></member>
+ <member><link linkend="boost_asio.reference.basic_stream_socket">basic_stream_socket</link></member>
+ <member><link linkend="boost_asio.reference.ip__basic_endpoint">ip::basic_endpoint</link></member>
+ <member><link linkend="boost_asio.reference.ip__basic_resolver">ip::basic_resolver</link></member>
+ <member><link linkend="boost_asio.reference.ip__basic_resolver_entry">ip::basic_resolver_entry</link></member>
+ <member><link linkend="boost_asio.reference.ip__basic_resolver_iterator">ip::basic_resolver_iterator</link></member>
+ <member><link linkend="boost_asio.reference.ip__basic_resolver_query">ip::basic_resolver_query</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Services</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.datagram_socket_service">datagram_socket_service</link></member>
+ <member><link linkend="boost_asio.reference.ip__resolver_service">ip::resolver_service</link></member>
+ <member><link linkend="boost_asio.reference.raw_socket_service">raw_socket_service</link></member>
+ <member><link linkend="boost_asio.reference.socket_acceptor_service">socket_acceptor_service</link></member>
+ <member><link linkend="boost_asio.reference.stream_socket_service">stream_socket_service</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Socket Options</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.ip__multicast__enable_loopback">ip::multicast::enable_loopback</link></member>
+ <member><link linkend="boost_asio.reference.ip__multicast__hops">ip::multicast::hops</link></member>
+ <member><link linkend="boost_asio.reference.ip__multicast__join_group">ip::multicast::join_group</link></member>
+ <member><link linkend="boost_asio.reference.ip__multicast__leave_group">ip::multicast::leave_group</link></member>
+ <member><link linkend="boost_asio.reference.ip__multicast__outbound_interface">ip::multicast::outbound_interface</link></member>
+ <member><link linkend="boost_asio.reference.ip__tcp.no_delay">ip::tcp::no_delay</link></member>
+ <member><link linkend="boost_asio.reference.ip__unicast__hops">ip::unicast::hops</link></member>
+ <member><link linkend="boost_asio.reference.ip__v6_only">ip::v6_only</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.broadcast">socket_base::broadcast</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.debug">socket_base::debug</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.do_not_route">socket_base::do_not_route</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.enable_connection_aborted">socket_base::enable_connection_aborted</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.keep_alive">socket_base::keep_alive</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.linger">socket_base::linger</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.receive_buffer_size">socket_base::receive_buffer_size</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.receive_low_watermark">socket_base::receive_low_watermark</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.reuse_address">socket_base::reuse_address</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.send_buffer_size">socket_base::send_buffer_size</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.send_low_watermark">socket_base::send_low_watermark</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">I/O Control Commands</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.socket_base.bytes_readable">socket_base::bytes_readable</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.non_blocking_io">socket_base::non_blocking_io</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Type Requirements</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.AcceptHandler">AcceptHandler</link></member>
+ <member><link linkend="boost_asio.reference.ConnectHandler">ConnectHandler</link></member>
+ <member><link linkend="boost_asio.reference.DatagramSocketService">DatagramSocketService</link></member>
+ <member><link linkend="boost_asio.reference.Endpoint">Endpoint</link></member>
+ <member><link linkend="boost_asio.reference.GettableSocketOption">GettableSocketOption</link></member>
+ <member><link linkend="boost_asio.reference.InternetProtocol">InternetProtocol</link></member>
+ <member><link linkend="boost_asio.reference.IoControlCommand">IoControlCommand</link></member>
+ <member><link linkend="boost_asio.reference.Protocol">Protocol</link></member>
+ <member><link linkend="boost_asio.reference.RawSocketService">RawSocketService</link></member>
+ <member><link linkend="boost_asio.reference.ResolveHandler">ResolveHandler</link></member>
+ <member><link linkend="boost_asio.reference.ResolverService">ResolverService</link></member>
+ <member><link linkend="boost_asio.reference.SettableSocketOption">SettableSocketOption</link></member>
+ <member><link linkend="boost_asio.reference.SocketAcceptorService">SocketAcceptorService</link></member>
+ <member><link linkend="boost_asio.reference.SocketService">SocketService</link></member>
+ <member><link linkend="boost_asio.reference.StreamSocketService">StreamSocketService</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ <tgroup cols="4">
+ <colspec colname="a"/>
+ <colspec colname="b"/>
+ <colspec colname="c"/>
+ <colspec colname="d"/>
+ <thead>
+ <row>
+ <entry valign="center" namest="a" nameend="a">
+ <bridgehead renderas="sect2">Timers</bridgehead>
+ </entry>
+ <entry valign="center" namest="b" nameend="b">
+ <bridgehead renderas="sect2">SSL</bridgehead>
+ </entry>
+ <entry valign="center" namest="c" nameend="d">
+ <bridgehead renderas="sect2">Serial Ports</bridgehead>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Classes</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.deadline_timer">deadline_timer</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Class Templates</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.basic_deadline_timer">basic_deadline_timer</link></member>
+ <member><link linkend="boost_asio.reference.time_traits_lt__ptime__gt_">time_traits</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Services</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.deadline_timer_service">deadline_timer_service</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Type Requirements</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.TimerService">TimerService</link></member>
+ <member><link linkend="boost_asio.reference.TimeTraits">TimeTraits</link></member>
+ <member><link linkend="boost_asio.reference.WaitHandler">WaitHandler</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Classes</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.ssl__context">ssl::context</link></member>
+ <member><link linkend="boost_asio.reference.ssl__context_base">ssl::context_base</link></member>
+ <member><link linkend="boost_asio.reference.ssl__stream_base">ssl::stream_base</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Class Templates</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.ssl__basic_context">ssl::basic_context</link></member>
+ <member><link linkend="boost_asio.reference.ssl__stream">ssl::stream</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Services</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.ssl__context_service">ssl::context_service</link></member>
+ <member><link linkend="boost_asio.reference.ssl__stream_service">ssl::stream_service</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Classes</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.serial_port">serial_port</link></member>
+ <member><link linkend="boost_asio.reference.serial_port_base">serial_port_base</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Class Templates</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.basic_serial_port">basic_serial_port</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Services</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.serial_port_service">serial_port_service</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Serial Port Options</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.serial_port_base__baud_rate">serial_port_base::baud_rate</link></member>
+ <member><link linkend="boost_asio.reference.serial_port_base__flow_control">serial_port_base::flow_control</link></member>
+ <member><link linkend="boost_asio.reference.serial_port_base__parity">serial_port_base::parity</link></member>
+ <member><link linkend="boost_asio.reference.serial_port_base__stop_bits">serial_port_base::stop_bits</link></member>
+ <member><link linkend="boost_asio.reference.serial_port_base__character_size">serial_port_base::character_size</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Type Requirements</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.GettableSerialPortOption">GettableSerialPortOption</link></member>
+ <member><link linkend="boost_asio.reference.SerialPortService">SerialPortService</link></member>
+ <member><link linkend="boost_asio.reference.SettableSerialPortOption">SettableSerialPortOption</link></member>
+ </simplelist>
         </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ <tgroup cols="4">
+ <colspec colname="a"/>
+ <colspec colname="b"/>
+ <colspec colname="c"/>
+ <colspec colname="d"/>
+ <thead>
+ <row>
+ <entry valign="center" namest="a" nameend="b">
+ <bridgehead renderas="sect2">POSIX-specific</bridgehead>
+ </entry>
+ <entry valign="center" namest="c" nameend="d">
+ <bridgehead renderas="sect2">Windows-specific</bridgehead>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
         <entry valign="top">
+ <bridgehead renderas="sect3">Classes</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.local__stream_protocol">local::stream_protocol</link></member>
+ <member><link linkend="boost_asio.reference.local__stream_protocol.acceptor">local::stream_protocol::acceptor</link></member>
+ <member><link linkend="boost_asio.reference.local__stream_protocol.endpoint">local::stream_protocol::endpoint</link></member>
+ <member><link linkend="boost_asio.reference.local__stream_protocol.iostream">local::stream_protocol::iostream</link></member>
+ <member><link linkend="boost_asio.reference.local__stream_protocol.socket">local::stream_protocol::socket</link></member>
+ <member><link linkend="boost_asio.reference.local__datagram_protocol">local::datagram_protocol</link></member>
+ <member><link linkend="boost_asio.reference.local__datagram_protocol.endpoint">local::datagram_protocol::endpoint</link></member>
+ <member><link linkend="boost_asio.reference.local__datagram_protocol.socket">local::datagram_protocol::socket</link></member>
+ <member><link linkend="boost_asio.reference.posix__descriptor_base">posix::descriptor_base</link></member>
+ <member><link linkend="boost_asio.reference.posix__stream_descriptor">posix::stream_descriptor</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Free Functions</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.local__connect_pair">local::connect_pair</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Class Templates</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.local__basic_endpoint">local::basic_endpoint</link></member>
+ <member><link linkend="boost_asio.reference.posix__basic_descriptor">posix::basic_descriptor</link></member>
+ <member><link linkend="boost_asio.reference.posix__basic_stream_descriptor">posix::basic_stream_descriptor</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Services</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.posix__stream_descriptor_service">posix::stream_descriptor_service</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Type Requirements</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.DescriptorService">DescriptorService</link></member>
+ <member><link linkend="boost_asio.reference.StreamDescriptorService">StreamDescriptorService</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top" namest="c" nameend="d">
+ <bridgehead renderas="sect3">Classes</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.windows__random_access_handle">windows::random_access_handle</link></member>
+ <member><link linkend="boost_asio.reference.windows__stream_handle">windows::stream_handle</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Class Templates</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.windows__basic_handle">windows::basic_handle</link></member>
+ <member><link linkend="boost_asio.reference.windows__basic_random_access_handle">windows::basic_random_access_handle</link></member>
+ <member><link linkend="boost_asio.reference.windows__basic_stream_handle">windows::basic_stream_handle</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Services</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.windows__random_access_handle_service">windows::random_access_handle_service</link></member>
+ <member><link linkend="boost_asio.reference.windows__stream_handle_service">windows::stream_handle_service</link></member>
+ </simplelist>
           <bridgehead renderas="sect3">Type Requirements</bridgehead>
- <itemizedlist>
- <listitem><link linkend="boost_asio.reference.asynchronous_operations">Asynchronous operations</link></listitem>
- <listitem><link linkend="boost_asio.reference.AcceptHandler">AcceptHandler</link></listitem>
- <listitem><link linkend="boost_asio.reference.AsyncReadStream">AsyncReadStream</link></listitem>
- <listitem><link linkend="boost_asio.reference.AsyncWriteStream">AsyncWriteStream</link></listitem>
- <listitem><link linkend="boost_asio.reference.CompletionHandler">CompletionHandler</link></listitem>
- <listitem><link linkend="boost_asio.reference.ConnectHandler">ConnectHandler</link></listitem>
- <listitem><link linkend="boost_asio.reference.ConstBufferSequence">ConstBufferSequence</link></listitem>
- <listitem><link linkend="boost_asio.reference.ConvertibleToConstBuffer">ConvertibleToConstBuffer</link></listitem>
- <listitem><link linkend="boost_asio.reference.ConvertibleToMutableBuffer">ConvertibleToMutableBuffer</link></listitem>
- <listitem><link linkend="boost_asio.reference.DatagramSocketService">DatagramSocketService</link></listitem>
- <listitem><link linkend="boost_asio.reference.DescriptorService">DescriptorService</link></listitem>
- <listitem><link linkend="boost_asio.reference.Endpoint">Endpoint</link></listitem>
- <listitem><link linkend="boost_asio.reference.GettableSocketOption">GettableSocketOption</link></listitem>
- <listitem><link linkend="boost_asio.reference.Handler">Handler</link></listitem>
- <listitem><link linkend="boost_asio.reference.HandleService">HandleService</link></listitem>
- <listitem><link linkend="boost_asio.reference.InternetProtocol">InternetProtocol</link></listitem>
- <listitem><link linkend="boost_asio.reference.IoControlCommand">IoControlCommand</link></listitem>
- <listitem><link linkend="boost_asio.reference.IoObjectService">IoObjectService</link></listitem>
- <listitem><link linkend="boost_asio.reference.MutableBufferSequence">MutableBufferSequence</link></listitem>
- <listitem><link linkend="boost_asio.reference.Protocol">Protocol</link></listitem>
- <listitem><link linkend="boost_asio.reference.ReadHandler">ReadHandler</link></listitem>
- <listitem><link linkend="boost_asio.reference.ResolveHandler">ResolveHandler</link></listitem>
- <listitem><link linkend="boost_asio.reference.ResolverService">ResolverService</link></listitem>
- <listitem><link linkend="boost_asio.reference.Service">Service</link></listitem>
- <listitem><link linkend="boost_asio.reference.SettableSocketOption">SettableSocketOption</link></listitem>
- <listitem><link linkend="boost_asio.reference.SocketAcceptorService">SocketAcceptorService</link></listitem>
- <listitem><link linkend="boost_asio.reference.SocketService">SocketService</link></listitem>
- <listitem><link linkend="boost_asio.reference.StreamDescriptorService">StreamDescriptorService</link></listitem>
- <listitem><link linkend="boost_asio.reference.StreamHandleService">StreamHandleService</link></listitem>
- <listitem><link linkend="boost_asio.reference.StreamSocketService">StreamSocketService</link></listitem>
- <listitem><link linkend="boost_asio.reference.SyncReadStream">SyncReadStream</link></listitem>
- <listitem><link linkend="boost_asio.reference.SyncWriteStream">SyncWriteStream</link></listitem>
- <listitem><link linkend="boost_asio.reference.TimerService">TimerService</link></listitem>
- <listitem><link linkend="boost_asio.reference.TimeTraits">TimeTraits</link></listitem>
- <listitem><link linkend="boost_asio.reference.WaitHandler">WaitHandler</link></listitem>
- <listitem><link linkend="boost_asio.reference.WriteHandler">WriteHandler</link></listitem>
- </itemizedlist>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.HandleService">HandleService</link></member>
+ <member><link linkend="boost_asio.reference.RandomAccessHandleService">RandomAccessHandleService</link></member>
+ <member><link linkend="boost_asio.reference.StreamHandleService">StreamHandleService</link></member>
+ </simplelist>
         </entry>
       </row>
     </tbody>

Modified: branches/release/libs/asio/doc/reference.qbk
==============================================================================
--- branches/release/libs/asio/doc/reference.qbk (original)
+++ branches/release/libs/asio/doc/reference.qbk 2008-07-03 09:05:33 EDT (Thu, 03 Jul 2008)
@@ -50,7 +50,7 @@
 
 [section:add_service add_service]
 
-
+[indexterm1 add_service]
 
   template<
       typename ``[link boost_asio.reference.Service Service]``>
@@ -72,7 +72,6 @@
 [[svc][The service object. On success, ownership of the service object is transferred to the io\_service. When the io\_service object is destroyed, it will destroy the service object by performing:
 ``
    delete static_cast<io_service::service*>(svc)
-
 ``
 ]]
 
@@ -97,7 +96,7 @@
 
 [section:asio_handler_allocate asio_handler_allocate]
 
-Default allocation function for handlers.
+[indexterm1 asio_handler_allocate] Default allocation function for handlers.
 
   void * asio_handler_allocate(
       std::size_t size,
@@ -110,7 +109,7 @@
 
 This default implementation is simply:
 
- return ::operator new(bytes);
+ return ::operator new(size);
 
 
 
@@ -148,7 +147,7 @@
 
 [section:asio_handler_deallocate asio_handler_deallocate]
 
-Default deallocation function for handlers.
+[indexterm1 asio_handler_deallocate] Default deallocation function for handlers.
 
   void asio_handler_deallocate(
       void * pointer,
@@ -174,7 +173,7 @@
 
 [section:asio_handler_invoke asio_handler_invoke]
 
-Default invoke function for handlers.
+[indexterm1 asio_handler_invoke] Default invoke function for handlers.
 
   template<
       typename Function>
@@ -219,8 +218,8 @@
 
 [section:async_read async_read]
 
-Start an asynchronous operation to read a certain amount of data from a stream.
-
+[indexterm1 async_read] Start an asynchronous operation to read a certain amount of data from a stream.
+
   template<
       typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -306,7 +305,6 @@
                                              // bytes successfully transferred
                                              // prior to the error.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -382,7 +380,6 @@
      std::size_t bytes_transferred // Number of bytes transferred
                                              // so far.
    );
-
 ``
 A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's async\_read\_some function are required.]]
 
@@ -397,7 +394,6 @@
                                              // bytes successfully transferred
                                              // prior to the error.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -465,7 +461,6 @@
                                              // bytes successfully transferred
                                              // prior to the error.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -531,7 +526,6 @@
      std::size_t bytes_transferred // Number of bytes transferred
                                              // so far.
    );
-
 ``
 A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's async\_read\_some function are required.]]
 
@@ -546,7 +540,6 @@
                                              // bytes successfully transferred
                                              // prior to the error.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post(). ]]
 
@@ -561,8 +554,8 @@
 
 [section:async_read_at async_read_at]
 
-Start an asynchronous operation to read a certain amount of data at the specified offset.
-
+[indexterm1 async_read_at] Start an asynchronous operation to read a certain amount of data at the specified offset.
+
   template<
       typename ``[link boost_asio.reference.AsyncRandomAccessReadDevice AsyncRandomAccessReadDevice]``,
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -655,7 +648,6 @@
      // transferred prior to the error.
      std::size_t bytes_transferred
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -734,7 +726,6 @@
      // Number of bytes transferred so far.
      std::size_t bytes_transferred
    );
-
 ``
 A return value of true indicates that the read operation is complete. False indicates that further calls to the device's async\_read\_some\_at function are required.]]
 
@@ -749,7 +740,6 @@
      // transferred prior to the error.
      std::size_t bytes_transferred
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -820,7 +810,6 @@
      // transferred prior to the error.
      std::size_t bytes_transferred
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -889,7 +878,6 @@
      // Number of bytes transferred so far.
      std::size_t bytes_transferred
    );
-
 ``
 A return value of true indicates that the read operation is complete. False indicates that further calls to the device's async\_read\_some\_at function are required.]]
 
@@ -904,7 +892,6 @@
      // transferred prior to the error.
      std::size_t bytes_transferred
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post(). ]]
 
@@ -919,8 +906,8 @@
 
 [section:async_read_until async_read_until]
 
-Start an asynchronous operation to read data into a streambuf until a delimiter is encountered.
-
+[indexterm1 async_read_until] Start an asynchronous operation to read data into a streambuf until it contains a delimiter, matches a regular expression, or a function object indicates a match.
+
   template<
       typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
       typename Allocator,
@@ -954,7 +941,7 @@
   template<
       typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
       typename Allocator,
- typename ``[link boost_asio.reference.MatchCondition MatchCondition]``,
+ typename MatchCondition,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
   void ``[link boost_asio.reference.async_read_until.overload4 async_read_until]``(
       AsyncReadStream & s,
@@ -966,7 +953,7 @@
 
 [section:overload1 async_read_until (1 of 4 overloads)]
 
-Start an asynchronous operation to read data into a streambuf until a delimiter is encountered.
+Start an asynchronous operation to read data into a streambuf until it contains a specified delimiter.
 
   template<
       typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
@@ -1003,19 +990,23 @@
 [[handler][The handler to be called when the read operation completes. Copies will be made of the handler as required. The function signature of the handler must be:
 ``
    void handler(
- const boost::system::error_code& error, // Result of operation.
+ // Result of operation.
+ const boost::system::error_code& error,
 
- std::size_t bytes_transferred // The number of bytes in the
- // streambuf's get area up to
- // and including the delimiter.
- // 0 if an error occurred.
+ // The number of bytes in the streambuf's get
+ // area up to and including the delimiter.
+ // 0 if an error occurred.
+ std::size_t bytes_transferred
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
 ]
 
+[heading Remarks]
+
+After a successful async\_read\_until operation, the streambuf may contain additional data beyond the delimiter. An application will typically leave that data in the streambuf for a subsequent async\_read\_until operation to examine.
+
 [heading Example]
   
 To asynchronously read data into a streambuf until a newline is encountered:
@@ -1046,7 +1037,7 @@
 
 [section:overload2 async_read_until (2 of 4 overloads)]
 
-Start an asynchronous operation to read data into a streambuf until a delimiter is encountered.
+Start an asynchronous operation to read data into a streambuf until it contains a specified delimiter.
 
   template<
       typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
@@ -1083,19 +1074,23 @@
 [[handler][The handler to be called when the read operation completes. Copies will be made of the handler as required. The function signature of the handler must be:
 ``
    void handler(
- const boost::system::error_code& error, // Result of operation.
+ // Result of operation.
+ const boost::system::error_code& error,
 
- std::size_t bytes_transferred // The number of bytes in the
- // streambuf's get area up to
- // and including the delimiter.
- // 0 if an error occurred.
+ // The number of bytes in the streambuf's get
+ // area up to and including the delimiter.
+ // 0 if an error occurred.
+ std::size_t bytes_transferred
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
 ]
 
+[heading Remarks]
+
+After a successful async\_read\_until operation, the streambuf may contain additional data beyond the delimiter. An application will typically leave that data in the streambuf for a subsequent async\_read\_until operation to examine.
+
 [heading Example]
   
 To asynchronously read data into a streambuf until a newline is encountered:
@@ -1126,7 +1121,7 @@
 
 [section:overload3 async_read_until (3 of 4 overloads)]
 
-Start an asynchronous operation to read data into a streambuf until a regular expression is located.
+Start an asynchronous operation to read data into a streambuf until some part of its data matches a regular expression.
 
   template<
       typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
@@ -1163,21 +1158,24 @@
 [[handler][The handler to be called when the read operation completes. Copies will be made of the handler as required. The function signature of the handler must be:
 ``
    void handler(
- const boost::system::error_code& error, // Result of operation.
+ // Result of operation.
+ const boost::system::error_code& error,
 
- std::size_t bytes_transferred // The number of bytes in the
- // streambuf's get area up to
- // and including the substring
- // that matches the regular.
- // expression. 0 if an error
- // occurred.
+ // The number of bytes in the streambuf's get
+ // area up to and including the substring
+ // that matches the regular. expression.
+ // 0 if an error occurred.
+ std::size_t bytes_transferred
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
 ]
 
+[heading Remarks]
+
+After a successful async\_read\_until operation, the streambuf may contain additional data beyond that which matched the regular expression. An application will typically leave that data in the streambuf for a subsequent async\_read\_until operation to examine.
+
 [heading Example]
   
 To asynchronously read data into a streambuf until a CR-LF sequence is encountered:
@@ -1213,7 +1211,7 @@
   template<
       typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
       typename Allocator,
- typename ``[link boost_asio.reference.MatchCondition MatchCondition]``,
+ typename MatchCondition,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
   void async_read_until(
       AsyncReadStream & s,
@@ -1245,14 +1243,12 @@
 [[match_condition][The function object to be called to determine whether a match exists. The signature of the function object must be:
 ``
    pair<iterator, bool> match_condition(iterator begin, iterator end);
-
 ``
-where iterator represents the type:
+where `iterator` represents the type:
 ``
    buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
-
 ``
-The iterator parameters begin and end define the range of bytes to be scanned to determine whether there is a match. The first member of the return value is an iterator marking one-past-the-end of the bytes that have been consumed by the match function. This iterator is used to calculate the begin parameter for any subsequent invocation of the match condition. The second member of the return value is true if a match has been found, false otherwise.]]
+The iterator parameters `begin` and `end` define the range of bytes to be scanned to determine whether there is a match. The `first` member of the return value is an iterator marking one-past-the-end of the bytes that have been consumed by the match function. This iterator is used to calculate the `begin` parameter for any subsequent invocation of the match condition. The `second` member of the return value is true if a match has been found, false otherwise.]]
 
 [[handler][The handler to be called when the read operation completes. Copies will be made of the handler as required. The function signature of the handler must be:
 ``
@@ -1265,7 +1261,6 @@
      // match function. O if an error occurred.
      std::size_t bytes_transferred
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -1273,7 +1268,9 @@
 
 [heading Remarks]
       
-The default implementation of the is_match_condition type trait evaluates to true for function pointers and function objects with a result\_type typedef. It must be specialised for other user-defined function objects.
+After a successful async\_read\_until operation, the streambuf may contain additional data beyond that which matched the function object. An application will typically leave that data in the streambuf for a subsequent async\_read\_until operation to examine.
+
+The default implementation of the `is_match_condition` type trait evaluates to true for function pointers and function objects with a `result_type` typedef. It must be specialised for other user-defined function objects.
 
 [heading Examples]
   
@@ -1343,8 +1340,8 @@
 
 [section:async_write async_write]
 
-Start an asynchronous operation to write all of the supplied data to a stream.
-
+[indexterm1 async_write] Start an asynchronous operation to write a certain amount of data to a stream.
+
   template<
       typename ``[link boost_asio.reference.AsyncWriteStream AsyncWriteStream]``,
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -1429,7 +1426,6 @@
                                              // this will be less than the sum
                                              // of the buffer sizes.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -1496,7 +1492,6 @@
      std::size_t bytes_transferred // Number of bytes transferred
                                              // so far.
    );
-
 ``
 A return value of true indicates that the write operation is complete. False indicates that further calls to the stream's async\_write\_some function are required.]]
 
@@ -1510,7 +1505,6 @@
                                              // this will be less than the sum
                                              // of the buffer sizes.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -1579,7 +1573,6 @@
                                              // this will be less than the sum
                                              // of the buffer sizes.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post(). ]]
 
@@ -1635,7 +1628,6 @@
      std::size_t bytes_transferred // Number of bytes transferred
                                              // so far.
    );
-
 ``
 A return value of true indicates that the write operation is complete. False indicates that further calls to the stream's async\_write\_some function are required.]]
 
@@ -1649,7 +1641,6 @@
                                              // this will be less than the sum
                                              // of the buffer sizes.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post(). ]]
 
@@ -1664,8 +1655,8 @@
 
 [section:async_write_at async_write_at]
 
-Start an asynchronous operation to write all of the supplied data at the specified offset.
-
+[indexterm1 async_write_at] Start an asynchronous operation to write a certain amount of data at the specified offset.
+
   template<
       typename ``[link boost_asio.reference.AsyncRandomAccessWriteDevice AsyncRandomAccessWriteDevice]``,
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -1757,7 +1748,6 @@
      // occurred, this will be less than the sum of the buffer sizes.
      std::size_t bytes_transferred
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -1827,7 +1817,6 @@
      // Number of bytes transferred so far.
      std::size_t bytes_transferred
    );
-
 ``
 A return value of true indicates that the write operation is complete. False indicates that further calls to the device's async\_write\_some\_at function are required.]]
 
@@ -1841,7 +1830,6 @@
      // occurred, this will be less than the sum of the buffer sizes.
      std::size_t bytes_transferred
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -1913,7 +1901,6 @@
      // occurred, this will be less than the sum of the buffer sizes.
      std::size_t bytes_transferred
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post(). ]]
 
@@ -1972,7 +1959,6 @@
      // Number of bytes transferred so far.
      std::size_t bytes_transferred
    );
-
 ``
 A return value of true indicates that the write operation is complete. False indicates that further calls to the device's async\_write\_some\_at function are required.]]
 
@@ -1986,7 +1972,6 @@
      // occurred, this will be less than the sum of the buffer sizes.
      std::size_t bytes_transferred
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post(). ]]
 
@@ -2368,7 +2353,7 @@
 
 [section:assign basic_datagram_socket::assign]
 
-Assign an existing native socket to the socket.
+[indexterm2 assign..basic_datagram_socket] Assign an existing native socket to the socket.
 
   void ``[link boost_asio.reference.basic_datagram_socket.assign.overload1 assign]``(
       const protocol_type & protocol,
@@ -2422,7 +2407,7 @@
 
 ['Inherited from basic_socket.]
 
-Start an asynchronous connect.
+[indexterm2 async_connect..basic_datagram_socket] Start an asynchronous connect.
 
   void async_connect(
       const endpoint_type & peer_endpoint,
@@ -2431,7 +2416,7 @@
 
 This function is used to asynchronously connect a socket to the specified remote endpoint. The function call always returns immediately.
 
-The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is returned to the closed state.
+The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is not returned to the closed state.
 
 
 [heading Parameters]
@@ -2446,7 +2431,6 @@
    void handler(
      const boost::system::error_code& error // Result of operation
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -2481,7 +2465,7 @@
 
 [section:async_receive basic_datagram_socket::async_receive]
 
-Start an asynchronous receive on a connected socket.
+[indexterm2 async_receive..basic_datagram_socket] Start an asynchronous receive on a connected socket.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -2527,7 +2511,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes received.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -2585,7 +2568,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes received.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -2604,7 +2586,7 @@
 
 [section:async_receive_from basic_datagram_socket::async_receive_from]
 
-Start an asynchronous receive.
+[indexterm2 async_receive_from..basic_datagram_socket] Start an asynchronous receive.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -2655,7 +2637,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes received.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -2713,7 +2694,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes received.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post(). ]]
 
@@ -2728,7 +2708,7 @@
 
 [section:async_send basic_datagram_socket::async_send]
 
-Start an asynchronous send on a connected socket.
+[indexterm2 async_send..basic_datagram_socket] Start an asynchronous send on a connected socket.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -2774,7 +2754,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes sent.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -2832,7 +2811,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes sent.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -2851,7 +2829,7 @@
 
 [section:async_send_to basic_datagram_socket::async_send_to]
 
-Start an asynchronous send.
+[indexterm2 async_send_to..basic_datagram_socket] Start an asynchronous send.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -2902,7 +2880,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes sent.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -2962,7 +2939,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes sent.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post(). ]]
 
@@ -2977,7 +2953,7 @@
 
 [section:at_mark basic_datagram_socket::at_mark]
 
-Determine whether the socket is at the out-of-band data mark.
+[indexterm2 at_mark..basic_datagram_socket] Determine whether the socket is at the out-of-band data mark.
 
   bool ``[link boost_asio.reference.basic_datagram_socket.at_mark.overload1 at_mark]``() const;
 
@@ -3053,7 +3029,7 @@
 
 [section:available basic_datagram_socket::available]
 
-Determine the number of bytes available for reading.
+[indexterm2 available..basic_datagram_socket] Determine the number of bytes available for reading.
 
   std::size_t ``[link boost_asio.reference.basic_datagram_socket.available.overload1 available]``() const;
 
@@ -3129,7 +3105,7 @@
 
 [section:basic_datagram_socket basic_datagram_socket::basic_datagram_socket]
 
-Construct a basic_datagram_socket without opening it.
+[indexterm2 basic_datagram_socket..basic_datagram_socket] Construct a basic_datagram_socket without opening it.
 
   ``[link boost_asio.reference.basic_datagram_socket.basic_datagram_socket.overload1 basic_datagram_socket]``(
       boost::asio::io_service & io_service);
@@ -3294,7 +3270,7 @@
 
 [section:bind basic_datagram_socket::bind]
 
-Bind the socket to the given local endpoint.
+[indexterm2 bind..basic_datagram_socket] Bind the socket to the given local endpoint.
 
   void ``[link boost_asio.reference.basic_datagram_socket.bind.overload1 bind]``(
       const endpoint_type & endpoint);
@@ -3410,7 +3386,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to permit sending of broadcast messages.
+[indexterm2 broadcast..basic_datagram_socket] Socket option to permit sending of broadcast messages.
 
   typedef implementation_defined broadcast;
 
@@ -3453,7 +3429,7 @@
 
 ['Inherited from socket_base.]
 
-IO control command to get the amount of data that can be read without blocking.
+[indexterm2 bytes_readable..basic_datagram_socket] IO control command to get the amount of data that can be read without blocking.
 
   typedef implementation_defined bytes_readable;
 
@@ -3482,7 +3458,7 @@
 
 [section:cancel basic_datagram_socket::cancel]
 
-Cancel all asynchronous operations associated with the socket.
+[indexterm2 cancel..basic_datagram_socket] Cancel all asynchronous operations associated with the socket.
 
   void ``[link boost_asio.reference.basic_datagram_socket.cancel.overload1 cancel]``();
 
@@ -3582,7 +3558,7 @@
 
 [section:close basic_datagram_socket::close]
 
-Close the socket.
+[indexterm2 close..basic_datagram_socket] Close the socket.
 
   void ``[link boost_asio.reference.basic_datagram_socket.close.overload1 close]``();
 
@@ -3674,7 +3650,7 @@
 
 [section:connect basic_datagram_socket::connect]
 
-Connect the socket to the specified endpoint.
+[indexterm2 connect..basic_datagram_socket] Connect the socket to the specified endpoint.
 
   void ``[link boost_asio.reference.basic_datagram_socket.connect.overload1 connect]``(
       const endpoint_type & peer_endpoint);
@@ -3697,7 +3673,7 @@
 
 This function is used to connect a socket to the specified remote endpoint. The function call will block until the connection is successfully made or an error occurs.
 
-The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is returned to the closed state.
+The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is not returned to the closed state.
 
 
 [heading Parameters]
@@ -3750,7 +3726,7 @@
 
 This function is used to connect a socket to the specified remote endpoint. The function call will block until the connection is successfully made or an error occurs.
 
-The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is returned to the closed state.
+The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is not returned to the closed state.
 
 
 [heading Parameters]
@@ -3794,7 +3770,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to enable socket-level debugging.
+[indexterm2 debug..basic_datagram_socket] Socket option to enable socket-level debugging.
 
   typedef implementation_defined debug;
 
@@ -3837,7 +3813,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to prevent routing, use local interfaces only.
+[indexterm2 do_not_route..basic_datagram_socket] Socket option to prevent routing, use local interfaces only.
 
   typedef implementation_defined do_not_route;
 
@@ -3880,7 +3856,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to report aborted connections on accept.
+[indexterm2 enable_connection_aborted..basic_datagram_socket] Socket option to report aborted connections on accept.
 
   typedef implementation_defined enable_connection_aborted;
 
@@ -3920,7 +3896,7 @@
 
 [section:endpoint_type basic_datagram_socket::endpoint_type]
 
-The endpoint type.
+[indexterm2 endpoint_type..basic_datagram_socket] The endpoint type.
 
   typedef Protocol::endpoint endpoint_type;
 
@@ -3936,7 +3912,7 @@
 
 ['Inherited from basic_io_object.]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..basic_datagram_socket] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -3955,7 +3931,7 @@
 
 [section:get_option basic_datagram_socket::get_option]
 
-Get an option from the socket.
+[indexterm2 get_option..basic_datagram_socket] Get an option from the socket.
 
   void ``[link boost_asio.reference.basic_datagram_socket.get_option.overload1 get_option]``(
       GettableSocketOption & option) const;
@@ -4073,7 +4049,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation of the I/O object.
+[indexterm2 implementation..basic_datagram_socket] The underlying implementation of the I/O object.
 
   implementation_type implementation;
 
@@ -4088,7 +4064,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation type of I/O object.
+[indexterm2 implementation_type..basic_datagram_socket] The underlying implementation type of I/O object.
 
   typedef service_type::implementation_type implementation_type;
 
@@ -4100,7 +4076,7 @@
 
 [section:io_control basic_datagram_socket::io_control]
 
-Perform an IO control command on the socket.
+[indexterm2 io_control..basic_datagram_socket] Perform an IO control command on the socket.
 
   void ``[link boost_asio.reference.basic_datagram_socket.io_control.overload1 io_control]``(
       IoControlCommand & command);
@@ -4218,7 +4194,7 @@
 
 ['Inherited from basic_io_object.]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..basic_datagram_socket] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -4241,7 +4217,7 @@
 
 ['Inherited from basic_socket.]
 
-Determine whether the socket is open.
+[indexterm2 is_open..basic_datagram_socket] Determine whether the socket is open.
 
   bool is_open() const;
 
@@ -4256,7 +4232,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to send keep-alives.
+[indexterm2 keep_alive..basic_datagram_socket] Socket option to send keep-alives.
 
   typedef implementation_defined keep_alive;
 
@@ -4299,7 +4275,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to specify whether the socket lingers on close if unsent data is present.
+[indexterm2 linger..basic_datagram_socket] Socket option to specify whether the socket lingers on close if unsent data is present.
 
   typedef implementation_defined linger;
 
@@ -4339,7 +4315,7 @@
 
 [section:local_endpoint basic_datagram_socket::local_endpoint]
 
-Get the local endpoint of the socket.
+[indexterm2 local_endpoint..basic_datagram_socket] Get the local endpoint of the socket.
 
   endpoint_type ``[link boost_asio.reference.basic_datagram_socket.local_endpoint.overload1 local_endpoint]``() const;
 
@@ -4446,7 +4422,7 @@
 
 ['Inherited from basic_socket.]
 
-Get a reference to the lowest layer.
+[indexterm2 lowest_layer..basic_datagram_socket] Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -4469,7 +4445,7 @@
 
 ['Inherited from basic_socket.]
 
-A basic_socket is always the lowest layer.
+[indexterm2 lowest_layer_type..basic_datagram_socket] A basic_socket is always the lowest layer.
 
   typedef basic_socket< Protocol, DatagramSocketService > lowest_layer_type;
 
@@ -4812,7 +4788,7 @@
 
 ['Inherited from socket_base.]
 
-The maximum length of the queue of pending incoming connections.
+[indexterm2 max_connections..basic_datagram_socket] The maximum length of the queue of pending incoming connections.
 
   static const int max_connections = implementation_defined;
 
@@ -4827,7 +4803,7 @@
 
 ['Inherited from socket_base.]
 
-Specify that the data should not be subject to routing.
+[indexterm2 message_do_not_route..basic_datagram_socket] Specify that the data should not be subject to routing.
 
   static const int message_do_not_route = implementation_defined;
 
@@ -4842,7 +4818,7 @@
 
 ['Inherited from socket_base.]
 
-Bitmask type for flags that can be passed to send and receive operations.
+[indexterm2 message_flags..basic_datagram_socket] Bitmask type for flags that can be passed to send and receive operations.
 
   typedef int message_flags;
 
@@ -4858,7 +4834,7 @@
 
 ['Inherited from socket_base.]
 
-Process out-of-band data.
+[indexterm2 message_out_of_band..basic_datagram_socket] Process out-of-band data.
 
   static const int message_out_of_band = implementation_defined;
 
@@ -4873,7 +4849,7 @@
 
 ['Inherited from socket_base.]
 
-Peek at incoming data without removing it from the input queue.
+[indexterm2 message_peek..basic_datagram_socket] Peek at incoming data without removing it from the input queue.
 
   static const int message_peek = implementation_defined;
 
@@ -4888,7 +4864,7 @@
 
 ['Inherited from basic_socket.]
 
-Get the native socket representation.
+[indexterm2 native..basic_datagram_socket] Get the native socket representation.
 
   native_type native();
 
@@ -4902,7 +4878,7 @@
 
 [section:native_type basic_datagram_socket::native_type]
 
-The native representation of a socket.
+[indexterm2 native_type..basic_datagram_socket] The native representation of a socket.
 
   typedef DatagramSocketService::native_type native_type;
 
@@ -4918,7 +4894,7 @@
 
 ['Inherited from socket_base.]
 
-IO control command to set the blocking mode of the socket.
+[indexterm2 non_blocking_io..basic_datagram_socket] IO control command to set the blocking mode of the socket.
 
   typedef implementation_defined non_blocking_io;
 
@@ -4946,7 +4922,7 @@
 
 [section:open basic_datagram_socket::open]
 
-Open the socket using the specified protocol.
+[indexterm2 open..basic_datagram_socket] Open the socket using the specified protocol.
 
   void ``[link boost_asio.reference.basic_datagram_socket.open.overload1 open]``(
       const protocol_type & protocol = protocol_type());
@@ -5055,7 +5031,7 @@
 
 [section:protocol_type basic_datagram_socket::protocol_type]
 
-The protocol type.
+[indexterm2 protocol_type..basic_datagram_socket] The protocol type.
 
   typedef Protocol protocol_type;
 
@@ -5067,7 +5043,7 @@
 
 [section:receive basic_datagram_socket::receive]
 
-Receive some data on a connected socket.
+[indexterm2 receive..basic_datagram_socket] Receive some data on a connected socket.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -5241,7 +5217,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the receive buffer size of a socket.
+[indexterm2 receive_buffer_size..basic_datagram_socket] Socket option for the receive buffer size of a socket.
 
   typedef implementation_defined receive_buffer_size;
 
@@ -5280,7 +5256,7 @@
 
 [section:receive_from basic_datagram_socket::receive_from]
 
-Receive a datagram with the endpoint of the sender.
+[indexterm2 receive_from..basic_datagram_socket] Receive a datagram with the endpoint of the sender.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -5456,7 +5432,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the receive low watermark.
+[indexterm2 receive_low_watermark..basic_datagram_socket] Socket option for the receive low watermark.
 
   typedef implementation_defined receive_low_watermark;
 
@@ -5495,7 +5471,7 @@
 
 [section:remote_endpoint basic_datagram_socket::remote_endpoint]
 
-Get the remote endpoint of the socket.
+[indexterm2 remote_endpoint..basic_datagram_socket] Get the remote endpoint of the socket.
 
   endpoint_type ``[link boost_asio.reference.basic_datagram_socket.remote_endpoint.overload1 remote_endpoint]``() const;
 
@@ -5602,7 +5578,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to allow the socket to be bound to an address that is already in use.
+[indexterm2 reuse_address..basic_datagram_socket] Socket option to allow the socket to be bound to an address that is already in use.
 
   typedef implementation_defined reuse_address;
 
@@ -5641,7 +5617,7 @@
 
 [section:send basic_datagram_socket::send]
 
-Send some data on a connected socket.
+[indexterm2 send..basic_datagram_socket] Send some data on a connected socket.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -5815,7 +5791,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the send buffer size of a socket.
+[indexterm2 send_buffer_size..basic_datagram_socket] Socket option for the send buffer size of a socket.
 
   typedef implementation_defined send_buffer_size;
 
@@ -5858,7 +5834,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the send low watermark.
+[indexterm2 send_low_watermark..basic_datagram_socket] Socket option for the send low watermark.
 
   typedef implementation_defined send_low_watermark;
 
@@ -5897,7 +5873,7 @@
 
 [section:send_to basic_datagram_socket::send_to]
 
-Send a datagram to the specified endpoint.
+[indexterm2 send_to..basic_datagram_socket] Send a datagram to the specified endpoint.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -6073,7 +6049,7 @@
 
 ['Inherited from basic_io_object.]
 
-The service associated with the I/O object.
+[indexterm2 service..basic_datagram_socket] The service associated with the I/O object.
 
   service_type & service;
 
@@ -6088,7 +6064,7 @@
 
 ['Inherited from basic_io_object.]
 
-The type of the service that will be used to provide I/O operations.
+[indexterm2 service_type..basic_datagram_socket] The type of the service that will be used to provide I/O operations.
 
   typedef DatagramSocketService service_type;
 
@@ -6100,7 +6076,7 @@
 
 [section:set_option basic_datagram_socket::set_option]
 
-Set an option on the socket.
+[indexterm2 set_option..basic_datagram_socket] Set an option on the socket.
 
   void ``[link boost_asio.reference.basic_datagram_socket.set_option.overload1 set_option]``(
       const SettableSocketOption & option);
@@ -6212,7 +6188,7 @@
 
 [section:shutdown basic_datagram_socket::shutdown]
 
-Disable sends or receives on the socket.
+[indexterm2 shutdown..basic_datagram_socket] Disable sends or receives on the socket.
 
   void ``[link boost_asio.reference.basic_datagram_socket.shutdown.overload1 shutdown]``(
       shutdown_type what);
@@ -6326,7 +6302,7 @@
 
 ['Inherited from socket_base.]
 
-Different ways a socket may be shutdown.
+[indexterm2 shutdown_type..basic_datagram_socket] Different ways a socket may be shutdown.
 
   enum shutdown_type
 
@@ -6563,7 +6539,7 @@
 
 [section:async_wait basic_deadline_timer::async_wait]
 
-Start an asynchronous wait on the timer.
+[indexterm2 async_wait..basic_deadline_timer] Start an asynchronous wait on the timer.
 
   template<
       typename ``[link boost_asio.reference.WaitHandler WaitHandler]``>
@@ -6590,7 +6566,6 @@
    void handler(
      const boost::system::error_code& error // Result of operation.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post(). ]]
 
@@ -6603,7 +6578,7 @@
 
 [section:basic_deadline_timer basic_deadline_timer::basic_deadline_timer]
 
-Constructor.
+[indexterm2 basic_deadline_timer..basic_deadline_timer] Constructor.
 
   ``[link boost_asio.reference.basic_deadline_timer.basic_deadline_timer.overload1 basic_deadline_timer]``(
       boost::asio::io_service & io_service);
@@ -6704,7 +6679,7 @@
 
 [section:cancel basic_deadline_timer::cancel]
 
-Cancel any asynchronous operations that are waiting on the timer.
+[indexterm2 cancel..basic_deadline_timer] Cancel any asynchronous operations that are waiting on the timer.
 
   std::size_t ``[link boost_asio.reference.basic_deadline_timer.cancel.overload1 cancel]``();
 
@@ -6779,7 +6754,7 @@
 
 [section:duration_type basic_deadline_timer::duration_type]
 
-The duration type.
+[indexterm2 duration_type..basic_deadline_timer] The duration type.
 
   typedef traits_type::duration_type duration_type;
 
@@ -6791,7 +6766,7 @@
 
 [section:expires_at basic_deadline_timer::expires_at]
 
-Get the timer's expiry time as an absolute time.
+[indexterm2 expires_at..basic_deadline_timer] Get the timer's expiry time as an absolute time.
 
   time_type ``[link boost_asio.reference.basic_deadline_timer.expires_at.overload1 expires_at]``() const;
 
@@ -6892,7 +6867,7 @@
 
 [section:expires_from_now basic_deadline_timer::expires_from_now]
 
-Get the timer's expiry time relative to now.
+[indexterm2 expires_from_now..basic_deadline_timer] Get the timer's expiry time relative to now.
 
   duration_type ``[link boost_asio.reference.basic_deadline_timer.expires_from_now.overload1 expires_from_now]``() const;
 
@@ -6997,7 +6972,7 @@
 
 ['Inherited from basic_io_object.]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..basic_deadline_timer] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -7020,7 +6995,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation of the I/O object.
+[indexterm2 implementation..basic_deadline_timer] The underlying implementation of the I/O object.
 
   implementation_type implementation;
 
@@ -7035,7 +7010,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation type of I/O object.
+[indexterm2 implementation_type..basic_deadline_timer] The underlying implementation type of I/O object.
 
   typedef service_type::implementation_type implementation_type;
 
@@ -7051,7 +7026,7 @@
 
 ['Inherited from basic_io_object.]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..basic_deadline_timer] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -7074,7 +7049,7 @@
 
 ['Inherited from basic_io_object.]
 
-The service associated with the I/O object.
+[indexterm2 service..basic_deadline_timer] The service associated with the I/O object.
 
   service_type & service;
 
@@ -7089,7 +7064,7 @@
 
 ['Inherited from basic_io_object.]
 
-The type of the service that will be used to provide I/O operations.
+[indexterm2 service_type..basic_deadline_timer] The type of the service that will be used to provide I/O operations.
 
   typedef TimerService service_type;
 
@@ -7102,7 +7077,7 @@
 
 [section:time_type basic_deadline_timer::time_type]
 
-The time type.
+[indexterm2 time_type..basic_deadline_timer] The time type.
 
   typedef traits_type::time_type time_type;
 
@@ -7115,7 +7090,7 @@
 
 [section:traits_type basic_deadline_timer::traits_type]
 
-The time traits type.
+[indexterm2 traits_type..basic_deadline_timer] The time traits type.
 
   typedef TimeTraits traits_type;
 
@@ -7127,7 +7102,7 @@
 
 [section:wait basic_deadline_timer::wait]
 
-Perform a blocking wait on the timer.
+[indexterm2 wait..basic_deadline_timer] Perform a blocking wait on the timer.
 
   void ``[link boost_asio.reference.basic_deadline_timer.wait.overload1 wait]``();
 
@@ -7271,7 +7246,7 @@
 
 [section:basic_io_object basic_io_object::basic_io_object]
 
-Construct a basic_io_object.
+[indexterm2 basic_io_object..basic_io_object] Construct a basic_io_object.
 
   basic_io_object(
       boost::asio::io_service & io_service);
@@ -7291,7 +7266,7 @@
 
 [section:get_io_service basic_io_object::get_io_service]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..basic_io_object] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -7311,7 +7286,7 @@
 
 [section:implementation basic_io_object::implementation]
 
-The underlying implementation of the I/O object.
+[indexterm2 implementation..basic_io_object] The underlying implementation of the I/O object.
 
   implementation_type implementation;
 
@@ -7323,7 +7298,7 @@
 
 [section:implementation_type basic_io_object::implementation_type]
 
-The underlying implementation type of I/O object.
+[indexterm2 implementation_type..basic_io_object] The underlying implementation type of I/O object.
 
   typedef service_type::implementation_type implementation_type;
 
@@ -7336,7 +7311,7 @@
 
 [section:io_service basic_io_object::io_service]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..basic_io_object] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -7356,7 +7331,7 @@
 
 [section:service basic_io_object::service]
 
-The service associated with the I/O object.
+[indexterm2 service..basic_io_object] The service associated with the I/O object.
 
   service_type & service;
 
@@ -7368,7 +7343,7 @@
 
 [section:service_type basic_io_object::service_type]
 
-The type of the service that will be used to provide I/O operations.
+[indexterm2 service_type..basic_io_object] The type of the service that will be used to provide I/O operations.
 
   typedef IoObjectService service_type;
 
@@ -7381,7 +7356,7 @@
 
 [section:_basic_io_object basic_io_object::~basic_io_object]
 
-Protected destructor to prevent deletion through this type.
+[indexterm2 ~basic_io_object..basic_io_object] Protected destructor to prevent deletion through this type.
 
   ~basic_io_object();
 
@@ -7769,7 +7744,7 @@
 
 [section:assign basic_raw_socket::assign]
 
-Assign an existing native socket to the socket.
+[indexterm2 assign..basic_raw_socket] Assign an existing native socket to the socket.
 
   void ``[link boost_asio.reference.basic_raw_socket.assign.overload1 assign]``(
       const protocol_type & protocol,
@@ -7823,7 +7798,7 @@
 
 ['Inherited from basic_socket.]
 
-Start an asynchronous connect.
+[indexterm2 async_connect..basic_raw_socket] Start an asynchronous connect.
 
   void async_connect(
       const endpoint_type & peer_endpoint,
@@ -7832,7 +7807,7 @@
 
 This function is used to asynchronously connect a socket to the specified remote endpoint. The function call always returns immediately.
 
-The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is returned to the closed state.
+The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is not returned to the closed state.
 
 
 [heading Parameters]
@@ -7847,7 +7822,6 @@
    void handler(
      const boost::system::error_code& error // Result of operation
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -7882,7 +7856,7 @@
 
 [section:async_receive basic_raw_socket::async_receive]
 
-Start an asynchronous receive on a connected socket.
+[indexterm2 async_receive..basic_raw_socket] Start an asynchronous receive on a connected socket.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -7928,7 +7902,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes received.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -7986,7 +7959,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes received.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -8005,7 +7977,7 @@
 
 [section:async_receive_from basic_raw_socket::async_receive_from]
 
-Start an asynchronous receive.
+[indexterm2 async_receive_from..basic_raw_socket] Start an asynchronous receive.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -8056,7 +8028,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes received.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -8114,7 +8085,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes received.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post(). ]]
 
@@ -8129,7 +8099,7 @@
 
 [section:async_send basic_raw_socket::async_send]
 
-Start an asynchronous send on a connected socket.
+[indexterm2 async_send..basic_raw_socket] Start an asynchronous send on a connected socket.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -8175,7 +8145,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes sent.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -8233,7 +8202,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes sent.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -8252,7 +8220,7 @@
 
 [section:async_send_to basic_raw_socket::async_send_to]
 
-Start an asynchronous send.
+[indexterm2 async_send_to..basic_raw_socket] Start an asynchronous send.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -8303,7 +8271,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes sent.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -8363,7 +8330,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes sent.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post(). ]]
 
@@ -8378,7 +8344,7 @@
 
 [section:at_mark basic_raw_socket::at_mark]
 
-Determine whether the socket is at the out-of-band data mark.
+[indexterm2 at_mark..basic_raw_socket] Determine whether the socket is at the out-of-band data mark.
 
   bool ``[link boost_asio.reference.basic_raw_socket.at_mark.overload1 at_mark]``() const;
 
@@ -8454,7 +8420,7 @@
 
 [section:available basic_raw_socket::available]
 
-Determine the number of bytes available for reading.
+[indexterm2 available..basic_raw_socket] Determine the number of bytes available for reading.
 
   std::size_t ``[link boost_asio.reference.basic_raw_socket.available.overload1 available]``() const;
 
@@ -8530,7 +8496,7 @@
 
 [section:basic_raw_socket basic_raw_socket::basic_raw_socket]
 
-Construct a basic_raw_socket without opening it.
+[indexterm2 basic_raw_socket..basic_raw_socket] Construct a basic_raw_socket without opening it.
 
   ``[link boost_asio.reference.basic_raw_socket.basic_raw_socket.overload1 basic_raw_socket]``(
       boost::asio::io_service & io_service);
@@ -8695,7 +8661,7 @@
 
 [section:bind basic_raw_socket::bind]
 
-Bind the socket to the given local endpoint.
+[indexterm2 bind..basic_raw_socket] Bind the socket to the given local endpoint.
 
   void ``[link boost_asio.reference.basic_raw_socket.bind.overload1 bind]``(
       const endpoint_type & endpoint);
@@ -8811,7 +8777,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to permit sending of broadcast messages.
+[indexterm2 broadcast..basic_raw_socket] Socket option to permit sending of broadcast messages.
 
   typedef implementation_defined broadcast;
 
@@ -8854,7 +8820,7 @@
 
 ['Inherited from socket_base.]
 
-IO control command to get the amount of data that can be read without blocking.
+[indexterm2 bytes_readable..basic_raw_socket] IO control command to get the amount of data that can be read without blocking.
 
   typedef implementation_defined bytes_readable;
 
@@ -8883,7 +8849,7 @@
 
 [section:cancel basic_raw_socket::cancel]
 
-Cancel all asynchronous operations associated with the socket.
+[indexterm2 cancel..basic_raw_socket] Cancel all asynchronous operations associated with the socket.
 
   void ``[link boost_asio.reference.basic_raw_socket.cancel.overload1 cancel]``();
 
@@ -8983,7 +8949,7 @@
 
 [section:close basic_raw_socket::close]
 
-Close the socket.
+[indexterm2 close..basic_raw_socket] Close the socket.
 
   void ``[link boost_asio.reference.basic_raw_socket.close.overload1 close]``();
 
@@ -9075,7 +9041,7 @@
 
 [section:connect basic_raw_socket::connect]
 
-Connect the socket to the specified endpoint.
+[indexterm2 connect..basic_raw_socket] Connect the socket to the specified endpoint.
 
   void ``[link boost_asio.reference.basic_raw_socket.connect.overload1 connect]``(
       const endpoint_type & peer_endpoint);
@@ -9098,7 +9064,7 @@
 
 This function is used to connect a socket to the specified remote endpoint. The function call will block until the connection is successfully made or an error occurs.
 
-The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is returned to the closed state.
+The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is not returned to the closed state.
 
 
 [heading Parameters]
@@ -9151,7 +9117,7 @@
 
 This function is used to connect a socket to the specified remote endpoint. The function call will block until the connection is successfully made or an error occurs.
 
-The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is returned to the closed state.
+The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is not returned to the closed state.
 
 
 [heading Parameters]
@@ -9195,7 +9161,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to enable socket-level debugging.
+[indexterm2 debug..basic_raw_socket] Socket option to enable socket-level debugging.
 
   typedef implementation_defined debug;
 
@@ -9238,7 +9204,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to prevent routing, use local interfaces only.
+[indexterm2 do_not_route..basic_raw_socket] Socket option to prevent routing, use local interfaces only.
 
   typedef implementation_defined do_not_route;
 
@@ -9281,7 +9247,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to report aborted connections on accept.
+[indexterm2 enable_connection_aborted..basic_raw_socket] Socket option to report aborted connections on accept.
 
   typedef implementation_defined enable_connection_aborted;
 
@@ -9321,7 +9287,7 @@
 
 [section:endpoint_type basic_raw_socket::endpoint_type]
 
-The endpoint type.
+[indexterm2 endpoint_type..basic_raw_socket] The endpoint type.
 
   typedef Protocol::endpoint endpoint_type;
 
@@ -9337,7 +9303,7 @@
 
 ['Inherited from basic_io_object.]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..basic_raw_socket] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -9356,7 +9322,7 @@
 
 [section:get_option basic_raw_socket::get_option]
 
-Get an option from the socket.
+[indexterm2 get_option..basic_raw_socket] Get an option from the socket.
 
   void ``[link boost_asio.reference.basic_raw_socket.get_option.overload1 get_option]``(
       GettableSocketOption & option) const;
@@ -9474,7 +9440,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation of the I/O object.
+[indexterm2 implementation..basic_raw_socket] The underlying implementation of the I/O object.
 
   implementation_type implementation;
 
@@ -9489,7 +9455,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation type of I/O object.
+[indexterm2 implementation_type..basic_raw_socket] The underlying implementation type of I/O object.
 
   typedef service_type::implementation_type implementation_type;
 
@@ -9501,7 +9467,7 @@
 
 [section:io_control basic_raw_socket::io_control]
 
-Perform an IO control command on the socket.
+[indexterm2 io_control..basic_raw_socket] Perform an IO control command on the socket.
 
   void ``[link boost_asio.reference.basic_raw_socket.io_control.overload1 io_control]``(
       IoControlCommand & command);
@@ -9619,7 +9585,7 @@
 
 ['Inherited from basic_io_object.]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..basic_raw_socket] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -9642,7 +9608,7 @@
 
 ['Inherited from basic_socket.]
 
-Determine whether the socket is open.
+[indexterm2 is_open..basic_raw_socket] Determine whether the socket is open.
 
   bool is_open() const;
 
@@ -9657,7 +9623,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to send keep-alives.
+[indexterm2 keep_alive..basic_raw_socket] Socket option to send keep-alives.
 
   typedef implementation_defined keep_alive;
 
@@ -9700,7 +9666,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to specify whether the socket lingers on close if unsent data is present.
+[indexterm2 linger..basic_raw_socket] Socket option to specify whether the socket lingers on close if unsent data is present.
 
   typedef implementation_defined linger;
 
@@ -9740,7 +9706,7 @@
 
 [section:local_endpoint basic_raw_socket::local_endpoint]
 
-Get the local endpoint of the socket.
+[indexterm2 local_endpoint..basic_raw_socket] Get the local endpoint of the socket.
 
   endpoint_type ``[link boost_asio.reference.basic_raw_socket.local_endpoint.overload1 local_endpoint]``() const;
 
@@ -9847,7 +9813,7 @@
 
 ['Inherited from basic_socket.]
 
-Get a reference to the lowest layer.
+[indexterm2 lowest_layer..basic_raw_socket] Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -9870,7 +9836,7 @@
 
 ['Inherited from basic_socket.]
 
-A basic_socket is always the lowest layer.
+[indexterm2 lowest_layer_type..basic_raw_socket] A basic_socket is always the lowest layer.
 
   typedef basic_socket< Protocol, RawSocketService > lowest_layer_type;
 
@@ -10213,7 +10179,7 @@
 
 ['Inherited from socket_base.]
 
-The maximum length of the queue of pending incoming connections.
+[indexterm2 max_connections..basic_raw_socket] The maximum length of the queue of pending incoming connections.
 
   static const int max_connections = implementation_defined;
 
@@ -10228,7 +10194,7 @@
 
 ['Inherited from socket_base.]
 
-Specify that the data should not be subject to routing.
+[indexterm2 message_do_not_route..basic_raw_socket] Specify that the data should not be subject to routing.
 
   static const int message_do_not_route = implementation_defined;
 
@@ -10243,7 +10209,7 @@
 
 ['Inherited from socket_base.]
 
-Bitmask type for flags that can be passed to send and receive operations.
+[indexterm2 message_flags..basic_raw_socket] Bitmask type for flags that can be passed to send and receive operations.
 
   typedef int message_flags;
 
@@ -10259,7 +10225,7 @@
 
 ['Inherited from socket_base.]
 
-Process out-of-band data.
+[indexterm2 message_out_of_band..basic_raw_socket] Process out-of-band data.
 
   static const int message_out_of_band = implementation_defined;
 
@@ -10274,7 +10240,7 @@
 
 ['Inherited from socket_base.]
 
-Peek at incoming data without removing it from the input queue.
+[indexterm2 message_peek..basic_raw_socket] Peek at incoming data without removing it from the input queue.
 
   static const int message_peek = implementation_defined;
 
@@ -10289,7 +10255,7 @@
 
 ['Inherited from basic_socket.]
 
-Get the native socket representation.
+[indexterm2 native..basic_raw_socket] Get the native socket representation.
 
   native_type native();
 
@@ -10303,7 +10269,7 @@
 
 [section:native_type basic_raw_socket::native_type]
 
-The native representation of a socket.
+[indexterm2 native_type..basic_raw_socket] The native representation of a socket.
 
   typedef RawSocketService::native_type native_type;
 
@@ -10319,7 +10285,7 @@
 
 ['Inherited from socket_base.]
 
-IO control command to set the blocking mode of the socket.
+[indexterm2 non_blocking_io..basic_raw_socket] IO control command to set the blocking mode of the socket.
 
   typedef implementation_defined non_blocking_io;
 
@@ -10347,7 +10313,7 @@
 
 [section:open basic_raw_socket::open]
 
-Open the socket using the specified protocol.
+[indexterm2 open..basic_raw_socket] Open the socket using the specified protocol.
 
   void ``[link boost_asio.reference.basic_raw_socket.open.overload1 open]``(
       const protocol_type & protocol = protocol_type());
@@ -10456,7 +10422,7 @@
 
 [section:protocol_type basic_raw_socket::protocol_type]
 
-The protocol type.
+[indexterm2 protocol_type..basic_raw_socket] The protocol type.
 
   typedef Protocol protocol_type;
 
@@ -10468,7 +10434,7 @@
 
 [section:receive basic_raw_socket::receive]
 
-Receive some data on a connected socket.
+[indexterm2 receive..basic_raw_socket] Receive some data on a connected socket.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -10642,7 +10608,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the receive buffer size of a socket.
+[indexterm2 receive_buffer_size..basic_raw_socket] Socket option for the receive buffer size of a socket.
 
   typedef implementation_defined receive_buffer_size;
 
@@ -10681,7 +10647,7 @@
 
 [section:receive_from basic_raw_socket::receive_from]
 
-Receive raw data with the endpoint of the sender.
+[indexterm2 receive_from..basic_raw_socket] Receive raw data with the endpoint of the sender.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -10857,7 +10823,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the receive low watermark.
+[indexterm2 receive_low_watermark..basic_raw_socket] Socket option for the receive low watermark.
 
   typedef implementation_defined receive_low_watermark;
 
@@ -10896,7 +10862,7 @@
 
 [section:remote_endpoint basic_raw_socket::remote_endpoint]
 
-Get the remote endpoint of the socket.
+[indexterm2 remote_endpoint..basic_raw_socket] Get the remote endpoint of the socket.
 
   endpoint_type ``[link boost_asio.reference.basic_raw_socket.remote_endpoint.overload1 remote_endpoint]``() const;
 
@@ -11003,7 +10969,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to allow the socket to be bound to an address that is already in use.
+[indexterm2 reuse_address..basic_raw_socket] Socket option to allow the socket to be bound to an address that is already in use.
 
   typedef implementation_defined reuse_address;
 
@@ -11042,7 +11008,7 @@
 
 [section:send basic_raw_socket::send]
 
-Send some data on a connected socket.
+[indexterm2 send..basic_raw_socket] Send some data on a connected socket.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -11216,7 +11182,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the send buffer size of a socket.
+[indexterm2 send_buffer_size..basic_raw_socket] Socket option for the send buffer size of a socket.
 
   typedef implementation_defined send_buffer_size;
 
@@ -11259,7 +11225,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the send low watermark.
+[indexterm2 send_low_watermark..basic_raw_socket] Socket option for the send low watermark.
 
   typedef implementation_defined send_low_watermark;
 
@@ -11298,7 +11264,7 @@
 
 [section:send_to basic_raw_socket::send_to]
 
-Send raw data to the specified endpoint.
+[indexterm2 send_to..basic_raw_socket] Send raw data to the specified endpoint.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -11474,7 +11440,7 @@
 
 ['Inherited from basic_io_object.]
 
-The service associated with the I/O object.
+[indexterm2 service..basic_raw_socket] The service associated with the I/O object.
 
   service_type & service;
 
@@ -11489,7 +11455,7 @@
 
 ['Inherited from basic_io_object.]
 
-The type of the service that will be used to provide I/O operations.
+[indexterm2 service_type..basic_raw_socket] The type of the service that will be used to provide I/O operations.
 
   typedef RawSocketService service_type;
 
@@ -11501,7 +11467,7 @@
 
 [section:set_option basic_raw_socket::set_option]
 
-Set an option on the socket.
+[indexterm2 set_option..basic_raw_socket] Set an option on the socket.
 
   void ``[link boost_asio.reference.basic_raw_socket.set_option.overload1 set_option]``(
       const SettableSocketOption & option);
@@ -11613,7 +11579,7 @@
 
 [section:shutdown basic_raw_socket::shutdown]
 
-Disable sends or receives on the socket.
+[indexterm2 shutdown..basic_raw_socket] Disable sends or receives on the socket.
 
   void ``[link boost_asio.reference.basic_raw_socket.shutdown.overload1 shutdown]``(
       shutdown_type what);
@@ -11727,7 +11693,7 @@
 
 ['Inherited from socket_base.]
 
-Different ways a socket may be shutdown.
+[indexterm2 shutdown_type..basic_raw_socket] Different ways a socket may be shutdown.
 
   enum shutdown_type
 
@@ -11923,7 +11889,7 @@
 
 [section:assign basic_serial_port::assign]
 
-Assign an existing native serial port to the serial port.
+[indexterm2 assign..basic_serial_port] Assign an existing native serial port to the serial port.
 
   void ``[link boost_asio.reference.basic_serial_port.assign.overload1 assign]``(
       const native_type & native_serial_port);
@@ -11964,7 +11930,7 @@
 
 [section:async_read_some basic_serial_port::async_read_some]
 
-Start an asynchronous read.
+[indexterm2 async_read_some..basic_serial_port] Start an asynchronous read.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -11990,7 +11956,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes read.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -12020,7 +11985,7 @@
 
 [section:async_write_some basic_serial_port::async_write_some]
 
-Start an asynchronous write.
+[indexterm2 async_write_some..basic_serial_port] Start an asynchronous write.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -12046,7 +12011,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes written.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -12075,7 +12039,7 @@
 
 [section:basic_serial_port basic_serial_port::basic_serial_port]
 
-Construct a basic_serial_port without opening it.
+[indexterm2 basic_serial_port..basic_serial_port] Construct a basic_serial_port without opening it.
 
   ``[link boost_asio.reference.basic_serial_port.basic_serial_port.overload1 basic_serial_port]``(
       boost::asio::io_service & io_service);
@@ -12218,7 +12182,7 @@
 
 [section:cancel basic_serial_port::cancel]
 
-Cancel all asynchronous operations associated with the serial port.
+[indexterm2 cancel..basic_serial_port] Cancel all asynchronous operations associated with the serial port.
 
   void ``[link boost_asio.reference.basic_serial_port.cancel.overload1 cancel]``();
 
@@ -12280,7 +12244,7 @@
 
 [section:close basic_serial_port::close]
 
-Close the serial port.
+[indexterm2 close..basic_serial_port] Close the serial port.
 
   void ``[link boost_asio.reference.basic_serial_port.close.overload1 close]``();
 
@@ -12346,7 +12310,7 @@
 
 ['Inherited from basic_io_object.]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..basic_serial_port] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -12365,7 +12329,7 @@
 
 [section:get_option basic_serial_port::get_option]
 
-Get an option from the serial port.
+[indexterm2 get_option..basic_serial_port] Get an option from the serial port.
 
   template<
       typename ``[link boost_asio.reference.GettableSerialPortOption GettableSerialPortOption]``>
@@ -12454,7 +12418,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation of the I/O object.
+[indexterm2 implementation..basic_serial_port] The underlying implementation of the I/O object.
 
   implementation_type implementation;
 
@@ -12469,7 +12433,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation type of I/O object.
+[indexterm2 implementation_type..basic_serial_port] The underlying implementation type of I/O object.
 
   typedef service_type::implementation_type implementation_type;
 
@@ -12485,7 +12449,7 @@
 
 ['Inherited from basic_io_object.]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..basic_serial_port] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -12505,7 +12469,7 @@
 
 [section:is_open basic_serial_port::is_open]
 
-Determine whether the serial port is open.
+[indexterm2 is_open..basic_serial_port] Determine whether the serial port is open.
 
   bool is_open() const;
 
@@ -12517,7 +12481,7 @@
 
 [section:lowest_layer basic_serial_port::lowest_layer]
 
-Get a reference to the lowest layer.
+[indexterm2 lowest_layer..basic_serial_port] Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -12537,7 +12501,7 @@
 
 [section:lowest_layer_type basic_serial_port::lowest_layer_type]
 
-A basic_serial_port is always the lowest layer.
+[indexterm2 lowest_layer_type..basic_serial_port] A basic_serial_port is always the lowest layer.
 
   typedef basic_serial_port< SerialPortService > lowest_layer_type;
 
@@ -12701,7 +12665,7 @@
 
 [section:native basic_serial_port::native]
 
-Get the native serial port representation.
+[indexterm2 native..basic_serial_port] Get the native serial port representation.
 
   native_type native();
 
@@ -12715,7 +12679,7 @@
 
 [section:native_type basic_serial_port::native_type]
 
-The native representation of a serial port.
+[indexterm2 native_type..basic_serial_port] The native representation of a serial port.
 
   typedef SerialPortService::native_type native_type;
 
@@ -12727,7 +12691,7 @@
 
 [section:open basic_serial_port::open]
 
-Open the serial port using the specified device name.
+[indexterm2 open..basic_serial_port] Open the serial port using the specified device name.
 
   void ``[link boost_asio.reference.basic_serial_port.open.overload1 open]``(
       const std::string & device);
@@ -12804,7 +12768,7 @@
 
 [section:read_some basic_serial_port::read_some]
 
-Read some data from the serial port.
+[indexterm2 read_some..basic_serial_port] Read some data from the serial port.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -12918,7 +12882,7 @@
 
 [section:send_break basic_serial_port::send_break]
 
-Send a break sequence to the serial port.
+[indexterm2 send_break..basic_serial_port] Send a break sequence to the serial port.
 
   void ``[link boost_asio.reference.basic_serial_port.send_break.overload1 send_break]``();
 
@@ -12984,7 +12948,7 @@
 
 ['Inherited from basic_io_object.]
 
-The service associated with the I/O object.
+[indexterm2 service..basic_serial_port] The service associated with the I/O object.
 
   service_type & service;
 
@@ -12999,7 +12963,7 @@
 
 ['Inherited from basic_io_object.]
 
-The type of the service that will be used to provide I/O operations.
+[indexterm2 service_type..basic_serial_port] The type of the service that will be used to provide I/O operations.
 
   typedef SerialPortService service_type;
 
@@ -13011,7 +12975,7 @@
 
 [section:set_option basic_serial_port::set_option]
 
-Set an option on the serial port.
+[indexterm2 set_option..basic_serial_port] Set an option on the serial port.
 
   template<
       typename ``[link boost_asio.reference.SettableSerialPortOption SettableSerialPortOption]``>
@@ -13096,7 +13060,7 @@
 
 [section:write_some basic_serial_port::write_some]
 
-Write some data to the serial port.
+[indexterm2 write_some..basic_serial_port] Write some data to the serial port.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -13552,7 +13516,7 @@
 
 [section:assign basic_socket::assign]
 
-Assign an existing native socket to the socket.
+[indexterm2 assign..basic_socket] Assign an existing native socket to the socket.
 
   void ``[link boost_asio.reference.basic_socket.assign.overload1 assign]``(
       const protocol_type & protocol,
@@ -13597,7 +13561,7 @@
 
 [section:async_connect basic_socket::async_connect]
 
-Start an asynchronous connect.
+[indexterm2 async_connect..basic_socket] Start an asynchronous connect.
 
   template<
       typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
@@ -13608,7 +13572,7 @@
 
 This function is used to asynchronously connect a socket to the specified remote endpoint. The function call always returns immediately.
 
-The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is returned to the closed state.
+The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is not returned to the closed state.
 
 
 [heading Parameters]
@@ -13623,7 +13587,6 @@
    void handler(
      const boost::system::error_code& error // Result of operation
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -13658,7 +13621,7 @@
 
 [section:at_mark basic_socket::at_mark]
 
-Determine whether the socket is at the out-of-band data mark.
+[indexterm2 at_mark..basic_socket] Determine whether the socket is at the out-of-band data mark.
 
   bool ``[link boost_asio.reference.basic_socket.at_mark.overload1 at_mark]``() const;
 
@@ -13728,7 +13691,7 @@
 
 [section:available basic_socket::available]
 
-Determine the number of bytes available for reading.
+[indexterm2 available..basic_socket] Determine the number of bytes available for reading.
 
   std::size_t ``[link boost_asio.reference.basic_socket.available.overload1 available]``() const;
 
@@ -13798,7 +13761,7 @@
 
 [section:basic_socket basic_socket::basic_socket]
 
-Construct a basic_socket without opening it.
+[indexterm2 basic_socket..basic_socket] Construct a basic_socket without opening it.
 
   ``[link boost_asio.reference.basic_socket.basic_socket.overload1 basic_socket]``(
       boost::asio::io_service & io_service);
@@ -13963,7 +13926,7 @@
 
 [section:bind basic_socket::bind]
 
-Bind the socket to the given local endpoint.
+[indexterm2 bind..basic_socket] Bind the socket to the given local endpoint.
 
   void ``[link boost_asio.reference.basic_socket.bind.overload1 bind]``(
       const endpoint_type & endpoint);
@@ -14073,7 +14036,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to permit sending of broadcast messages.
+[indexterm2 broadcast..basic_socket] Socket option to permit sending of broadcast messages.
 
   typedef implementation_defined broadcast;
 
@@ -14116,7 +14079,7 @@
 
 ['Inherited from socket_base.]
 
-IO control command to get the amount of data that can be read without blocking.
+[indexterm2 bytes_readable..basic_socket] IO control command to get the amount of data that can be read without blocking.
 
   typedef implementation_defined bytes_readable;
 
@@ -14145,7 +14108,7 @@
 
 [section:cancel basic_socket::cancel]
 
-Cancel all asynchronous operations associated with the socket.
+[indexterm2 cancel..basic_socket] Cancel all asynchronous operations associated with the socket.
 
   void ``[link boost_asio.reference.basic_socket.cancel.overload1 cancel]``();
 
@@ -14239,7 +14202,7 @@
 
 [section:close basic_socket::close]
 
-Close the socket.
+[indexterm2 close..basic_socket] Close the socket.
 
   void ``[link boost_asio.reference.basic_socket.close.overload1 close]``();
 
@@ -14325,7 +14288,7 @@
 
 [section:connect basic_socket::connect]
 
-Connect the socket to the specified endpoint.
+[indexterm2 connect..basic_socket] Connect the socket to the specified endpoint.
 
   void ``[link boost_asio.reference.basic_socket.connect.overload1 connect]``(
       const endpoint_type & peer_endpoint);
@@ -14345,7 +14308,7 @@
 
 This function is used to connect a socket to the specified remote endpoint. The function call will block until the connection is successfully made or an error occurs.
 
-The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is returned to the closed state.
+The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is not returned to the closed state.
 
 
 [heading Parameters]
@@ -14395,7 +14358,7 @@
 
 This function is used to connect a socket to the specified remote endpoint. The function call will block until the connection is successfully made or an error occurs.
 
-The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is returned to the closed state.
+The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is not returned to the closed state.
 
 
 [heading Parameters]
@@ -14439,7 +14402,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to enable socket-level debugging.
+[indexterm2 debug..basic_socket] Socket option to enable socket-level debugging.
 
   typedef implementation_defined debug;
 
@@ -14482,7 +14445,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to prevent routing, use local interfaces only.
+[indexterm2 do_not_route..basic_socket] Socket option to prevent routing, use local interfaces only.
 
   typedef implementation_defined do_not_route;
 
@@ -14525,7 +14488,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to report aborted connections on accept.
+[indexterm2 enable_connection_aborted..basic_socket] Socket option to report aborted connections on accept.
 
   typedef implementation_defined enable_connection_aborted;
 
@@ -14565,7 +14528,7 @@
 
 [section:endpoint_type basic_socket::endpoint_type]
 
-The endpoint type.
+[indexterm2 endpoint_type..basic_socket] The endpoint type.
 
   typedef Protocol::endpoint endpoint_type;
 
@@ -14581,7 +14544,7 @@
 
 ['Inherited from basic_io_object.]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..basic_socket] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -14600,7 +14563,7 @@
 
 [section:get_option basic_socket::get_option]
 
-Get an option from the socket.
+[indexterm2 get_option..basic_socket] Get an option from the socket.
 
   template<
       typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
@@ -14720,7 +14683,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation of the I/O object.
+[indexterm2 implementation..basic_socket] The underlying implementation of the I/O object.
 
   implementation_type implementation;
 
@@ -14735,7 +14698,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation type of I/O object.
+[indexterm2 implementation_type..basic_socket] The underlying implementation type of I/O object.
 
   typedef service_type::implementation_type implementation_type;
 
@@ -14747,7 +14710,7 @@
 
 [section:io_control basic_socket::io_control]
 
-Perform an IO control command on the socket.
+[indexterm2 io_control..basic_socket] Perform an IO control command on the socket.
 
   template<
       typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
@@ -14867,7 +14830,7 @@
 
 ['Inherited from basic_io_object.]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..basic_socket] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -14887,7 +14850,7 @@
 
 [section:is_open basic_socket::is_open]
 
-Determine whether the socket is open.
+[indexterm2 is_open..basic_socket] Determine whether the socket is open.
 
   bool is_open() const;
 
@@ -14902,7 +14865,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to send keep-alives.
+[indexterm2 keep_alive..basic_socket] Socket option to send keep-alives.
 
   typedef implementation_defined keep_alive;
 
@@ -14945,7 +14908,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to specify whether the socket lingers on close if unsent data is present.
+[indexterm2 linger..basic_socket] Socket option to specify whether the socket lingers on close if unsent data is present.
 
   typedef implementation_defined linger;
 
@@ -14985,7 +14948,7 @@
 
 [section:local_endpoint basic_socket::local_endpoint]
 
-Get the local endpoint of the socket.
+[indexterm2 local_endpoint..basic_socket] Get the local endpoint of the socket.
 
   endpoint_type ``[link boost_asio.reference.basic_socket.local_endpoint.overload1 local_endpoint]``() const;
 
@@ -15083,7 +15046,7 @@
 
 [section:lowest_layer basic_socket::lowest_layer]
 
-Get a reference to the lowest layer.
+[indexterm2 lowest_layer..basic_socket] Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -15103,7 +15066,7 @@
 
 [section:lowest_layer_type basic_socket::lowest_layer_type]
 
-A basic_socket is always the lowest layer.
+[indexterm2 lowest_layer_type..basic_socket] A basic_socket is always the lowest layer.
 
   typedef basic_socket< Protocol, SocketService > lowest_layer_type;
 
@@ -15446,7 +15409,7 @@
 
 ['Inherited from socket_base.]
 
-The maximum length of the queue of pending incoming connections.
+[indexterm2 max_connections..basic_socket] The maximum length of the queue of pending incoming connections.
 
   static const int max_connections = implementation_defined;
 
@@ -15461,7 +15424,7 @@
 
 ['Inherited from socket_base.]
 
-Specify that the data should not be subject to routing.
+[indexterm2 message_do_not_route..basic_socket] Specify that the data should not be subject to routing.
 
   static const int message_do_not_route = implementation_defined;
 
@@ -15476,7 +15439,7 @@
 
 ['Inherited from socket_base.]
 
-Bitmask type for flags that can be passed to send and receive operations.
+[indexterm2 message_flags..basic_socket] Bitmask type for flags that can be passed to send and receive operations.
 
   typedef int message_flags;
 
@@ -15492,7 +15455,7 @@
 
 ['Inherited from socket_base.]
 
-Process out-of-band data.
+[indexterm2 message_out_of_band..basic_socket] Process out-of-band data.
 
   static const int message_out_of_band = implementation_defined;
 
@@ -15507,7 +15470,7 @@
 
 ['Inherited from socket_base.]
 
-Peek at incoming data without removing it from the input queue.
+[indexterm2 message_peek..basic_socket] Peek at incoming data without removing it from the input queue.
 
   static const int message_peek = implementation_defined;
 
@@ -15519,7 +15482,7 @@
 
 [section:native basic_socket::native]
 
-Get the native socket representation.
+[indexterm2 native..basic_socket] Get the native socket representation.
 
   native_type native();
 
@@ -15533,7 +15496,7 @@
 
 [section:native_type basic_socket::native_type]
 
-The native representation of a socket.
+[indexterm2 native_type..basic_socket] The native representation of a socket.
 
   typedef SocketService::native_type native_type;
 
@@ -15549,7 +15512,7 @@
 
 ['Inherited from socket_base.]
 
-IO control command to set the blocking mode of the socket.
+[indexterm2 non_blocking_io..basic_socket] IO control command to set the blocking mode of the socket.
 
   typedef implementation_defined non_blocking_io;
 
@@ -15577,7 +15540,7 @@
 
 [section:open basic_socket::open]
 
-Open the socket using the specified protocol.
+[indexterm2 open..basic_socket] Open the socket using the specified protocol.
 
   void ``[link boost_asio.reference.basic_socket.open.overload1 open]``(
       const protocol_type & protocol = protocol_type());
@@ -15680,7 +15643,7 @@
 
 [section:protocol_type basic_socket::protocol_type]
 
-The protocol type.
+[indexterm2 protocol_type..basic_socket] The protocol type.
 
   typedef Protocol protocol_type;
 
@@ -15696,7 +15659,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the receive buffer size of a socket.
+[indexterm2 receive_buffer_size..basic_socket] Socket option for the receive buffer size of a socket.
 
   typedef implementation_defined receive_buffer_size;
 
@@ -15739,7 +15702,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the receive low watermark.
+[indexterm2 receive_low_watermark..basic_socket] Socket option for the receive low watermark.
 
   typedef implementation_defined receive_low_watermark;
 
@@ -15778,7 +15741,7 @@
 
 [section:remote_endpoint basic_socket::remote_endpoint]
 
-Get the remote endpoint of the socket.
+[indexterm2 remote_endpoint..basic_socket] Get the remote endpoint of the socket.
 
   endpoint_type ``[link boost_asio.reference.basic_socket.remote_endpoint.overload1 remote_endpoint]``() const;
 
@@ -15879,7 +15842,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to allow the socket to be bound to an address that is already in use.
+[indexterm2 reuse_address..basic_socket] Socket option to allow the socket to be bound to an address that is already in use.
 
   typedef implementation_defined reuse_address;
 
@@ -15922,7 +15885,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the send buffer size of a socket.
+[indexterm2 send_buffer_size..basic_socket] Socket option for the send buffer size of a socket.
 
   typedef implementation_defined send_buffer_size;
 
@@ -15965,7 +15928,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the send low watermark.
+[indexterm2 send_low_watermark..basic_socket] Socket option for the send low watermark.
 
   typedef implementation_defined send_low_watermark;
 
@@ -16008,7 +15971,7 @@
 
 ['Inherited from basic_io_object.]
 
-The service associated with the I/O object.
+[indexterm2 service..basic_socket] The service associated with the I/O object.
 
   service_type & service;
 
@@ -16023,7 +15986,7 @@
 
 ['Inherited from basic_io_object.]
 
-The type of the service that will be used to provide I/O operations.
+[indexterm2 service_type..basic_socket] The type of the service that will be used to provide I/O operations.
 
   typedef SocketService service_type;
 
@@ -16035,7 +15998,7 @@
 
 [section:set_option basic_socket::set_option]
 
-Set an option on the socket.
+[indexterm2 set_option..basic_socket] Set an option on the socket.
 
   template<
       typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
@@ -16149,7 +16112,7 @@
 
 [section:shutdown basic_socket::shutdown]
 
-Disable sends or receives on the socket.
+[indexterm2 shutdown..basic_socket] Disable sends or receives on the socket.
 
   void ``[link boost_asio.reference.basic_socket.shutdown.overload1 shutdown]``(
       shutdown_type what);
@@ -16257,7 +16220,7 @@
 
 ['Inherited from socket_base.]
 
-Different ways a socket may be shutdown.
+[indexterm2 shutdown_type..basic_socket] Different ways a socket may be shutdown.
 
   enum shutdown_type
 
@@ -16289,7 +16252,7 @@
 
 [section:_basic_socket basic_socket::~basic_socket]
 
-Protected destructor to prevent deletion through this type.
+[indexterm2 ~basic_socket..basic_socket] Protected destructor to prevent deletion through this type.
 
   ~basic_socket();
 
@@ -16613,7 +16576,7 @@
 
 [section:accept basic_socket_acceptor::accept]
 
-Accept a new connection.
+[indexterm2 accept..basic_socket_acceptor] Accept a new connection.
 
   template<
       typename ``[link boost_asio.reference.SocketService SocketService]``>
@@ -16845,7 +16808,7 @@
 
 [section:assign basic_socket_acceptor::assign]
 
-Assigns an existing native acceptor to the acceptor.
+[indexterm2 assign..basic_socket_acceptor] Assigns an existing native acceptor to the acceptor.
 
   void ``[link boost_asio.reference.basic_socket_acceptor.assign.overload1 assign]``(
       const protocol_type & protocol,
@@ -16889,7 +16852,7 @@
 
 [section:async_accept basic_socket_acceptor::async_accept]
 
-Start an asynchronous accept.
+[indexterm2 async_accept..basic_socket_acceptor] Start an asynchronous accept.
 
   template<
       typename ``[link boost_asio.reference.SocketService SocketService]``,
@@ -16934,7 +16897,6 @@
    void handler(
      const boost::system::error_code& error // Result of operation.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -16998,7 +16960,6 @@
    void handler(
      const boost::system::error_code& error // Result of operation.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post(). ]]
 
@@ -17013,7 +16974,7 @@
 
 [section:basic_socket_acceptor basic_socket_acceptor::basic_socket_acceptor]
 
-Construct an acceptor without opening it.
+[indexterm2 basic_socket_acceptor..basic_socket_acceptor] Construct an acceptor without opening it.
 
   ``[link boost_asio.reference.basic_socket_acceptor.basic_socket_acceptor.overload1 basic_socket_acceptor]``(
       boost::asio::io_service & io_service);
@@ -17196,7 +17157,7 @@
 
 [section:bind basic_socket_acceptor::bind]
 
-Bind the acceptor to the given local endpoint.
+[indexterm2 bind..basic_socket_acceptor] Bind the acceptor to the given local endpoint.
 
   void ``[link boost_asio.reference.basic_socket_acceptor.bind.overload1 bind]``(
       const endpoint_type & endpoint);
@@ -17304,7 +17265,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to permit sending of broadcast messages.
+[indexterm2 broadcast..basic_socket_acceptor] Socket option to permit sending of broadcast messages.
 
   typedef implementation_defined broadcast;
 
@@ -17347,7 +17308,7 @@
 
 ['Inherited from socket_base.]
 
-IO control command to get the amount of data that can be read without blocking.
+[indexterm2 bytes_readable..basic_socket_acceptor] IO control command to get the amount of data that can be read without blocking.
 
   typedef implementation_defined bytes_readable;
 
@@ -17376,7 +17337,7 @@
 
 [section:cancel basic_socket_acceptor::cancel]
 
-Cancel all asynchronous operations associated with the acceptor.
+[indexterm2 cancel..basic_socket_acceptor] Cancel all asynchronous operations associated with the acceptor.
 
   void ``[link boost_asio.reference.basic_socket_acceptor.cancel.overload1 cancel]``();
 
@@ -17438,7 +17399,7 @@
 
 [section:close basic_socket_acceptor::close]
 
-Close the acceptor.
+[indexterm2 close..basic_socket_acceptor] Close the acceptor.
 
   void ``[link boost_asio.reference.basic_socket_acceptor.close.overload1 close]``();
 
@@ -17524,7 +17485,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to enable socket-level debugging.
+[indexterm2 debug..basic_socket_acceptor] Socket option to enable socket-level debugging.
 
   typedef implementation_defined debug;
 
@@ -17567,7 +17528,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to prevent routing, use local interfaces only.
+[indexterm2 do_not_route..basic_socket_acceptor] Socket option to prevent routing, use local interfaces only.
 
   typedef implementation_defined do_not_route;
 
@@ -17610,7 +17571,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to report aborted connections on accept.
+[indexterm2 enable_connection_aborted..basic_socket_acceptor] Socket option to report aborted connections on accept.
 
   typedef implementation_defined enable_connection_aborted;
 
@@ -17650,7 +17611,7 @@
 
 [section:endpoint_type basic_socket_acceptor::endpoint_type]
 
-The endpoint type.
+[indexterm2 endpoint_type..basic_socket_acceptor] The endpoint type.
 
   typedef Protocol::endpoint endpoint_type;
 
@@ -17666,7 +17627,7 @@
 
 ['Inherited from basic_io_object.]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..basic_socket_acceptor] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -17685,7 +17646,7 @@
 
 [section:get_option basic_socket_acceptor::get_option]
 
-Get an option from the acceptor.
+[indexterm2 get_option..basic_socket_acceptor] Get an option from the acceptor.
 
   template<
       typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
@@ -17805,7 +17766,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation of the I/O object.
+[indexterm2 implementation..basic_socket_acceptor] The underlying implementation of the I/O object.
 
   implementation_type implementation;
 
@@ -17820,7 +17781,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation type of I/O object.
+[indexterm2 implementation_type..basic_socket_acceptor] The underlying implementation type of I/O object.
 
   typedef service_type::implementation_type implementation_type;
 
@@ -17836,7 +17797,7 @@
 
 ['Inherited from basic_io_object.]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..basic_socket_acceptor] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -17856,7 +17817,7 @@
 
 [section:is_open basic_socket_acceptor::is_open]
 
-Determine whether the acceptor is open.
+[indexterm2 is_open..basic_socket_acceptor] Determine whether the acceptor is open.
 
   bool is_open() const;
 
@@ -17871,7 +17832,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to send keep-alives.
+[indexterm2 keep_alive..basic_socket_acceptor] Socket option to send keep-alives.
 
   typedef implementation_defined keep_alive;
 
@@ -17914,7 +17875,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to specify whether the socket lingers on close if unsent data is present.
+[indexterm2 linger..basic_socket_acceptor] Socket option to specify whether the socket lingers on close if unsent data is present.
 
   typedef implementation_defined linger;
 
@@ -17954,7 +17915,7 @@
 
 [section:listen basic_socket_acceptor::listen]
 
-Place the acceptor into the state where it will listen for new connections.
+[indexterm2 listen..basic_socket_acceptor] Place the acceptor into the state where it will listen for new connections.
 
   void ``[link boost_asio.reference.basic_socket_acceptor.listen.overload1 listen]``(
       int backlog = socket_base::max_connections);
@@ -18047,7 +18008,7 @@
 
 [section:local_endpoint basic_socket_acceptor::local_endpoint]
 
-Get the local endpoint of the acceptor.
+[indexterm2 local_endpoint..basic_socket_acceptor] Get the local endpoint of the acceptor.
 
   endpoint_type ``[link boost_asio.reference.basic_socket_acceptor.local_endpoint.overload1 local_endpoint]``() const;
 
@@ -18148,7 +18109,7 @@
 
 ['Inherited from socket_base.]
 
-The maximum length of the queue of pending incoming connections.
+[indexterm2 max_connections..basic_socket_acceptor] The maximum length of the queue of pending incoming connections.
 
   static const int max_connections = implementation_defined;
 
@@ -18163,7 +18124,7 @@
 
 ['Inherited from socket_base.]
 
-Specify that the data should not be subject to routing.
+[indexterm2 message_do_not_route..basic_socket_acceptor] Specify that the data should not be subject to routing.
 
   static const int message_do_not_route = implementation_defined;
 
@@ -18178,7 +18139,7 @@
 
 ['Inherited from socket_base.]
 
-Bitmask type for flags that can be passed to send and receive operations.
+[indexterm2 message_flags..basic_socket_acceptor] Bitmask type for flags that can be passed to send and receive operations.
 
   typedef int message_flags;
 
@@ -18194,7 +18155,7 @@
 
 ['Inherited from socket_base.]
 
-Process out-of-band data.
+[indexterm2 message_out_of_band..basic_socket_acceptor] Process out-of-band data.
 
   static const int message_out_of_band = implementation_defined;
 
@@ -18209,7 +18170,7 @@
 
 ['Inherited from socket_base.]
 
-Peek at incoming data without removing it from the input queue.
+[indexterm2 message_peek..basic_socket_acceptor] Peek at incoming data without removing it from the input queue.
 
   static const int message_peek = implementation_defined;
 
@@ -18221,7 +18182,7 @@
 
 [section:native basic_socket_acceptor::native]
 
-Get the native acceptor representation.
+[indexterm2 native..basic_socket_acceptor] Get the native acceptor representation.
 
   native_type native();
 
@@ -18235,7 +18196,7 @@
 
 [section:native_type basic_socket_acceptor::native_type]
 
-The native representation of an acceptor.
+[indexterm2 native_type..basic_socket_acceptor] The native representation of an acceptor.
 
   typedef SocketAcceptorService::native_type native_type;
 
@@ -18251,7 +18212,7 @@
 
 ['Inherited from socket_base.]
 
-IO control command to set the blocking mode of the socket.
+[indexterm2 non_blocking_io..basic_socket_acceptor] IO control command to set the blocking mode of the socket.
 
   typedef implementation_defined non_blocking_io;
 
@@ -18279,7 +18240,7 @@
 
 [section:open basic_socket_acceptor::open]
 
-Open the acceptor using the specified protocol.
+[indexterm2 open..basic_socket_acceptor] Open the acceptor using the specified protocol.
 
   void ``[link boost_asio.reference.basic_socket_acceptor.open.overload1 open]``(
       const protocol_type & protocol = protocol_type());
@@ -18382,7 +18343,7 @@
 
 [section:protocol_type basic_socket_acceptor::protocol_type]
 
-The protocol type.
+[indexterm2 protocol_type..basic_socket_acceptor] The protocol type.
 
   typedef Protocol protocol_type;
 
@@ -18398,7 +18359,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the receive buffer size of a socket.
+[indexterm2 receive_buffer_size..basic_socket_acceptor] Socket option for the receive buffer size of a socket.
 
   typedef implementation_defined receive_buffer_size;
 
@@ -18441,7 +18402,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the receive low watermark.
+[indexterm2 receive_low_watermark..basic_socket_acceptor] Socket option for the receive low watermark.
 
   typedef implementation_defined receive_low_watermark;
 
@@ -18484,7 +18445,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to allow the socket to be bound to an address that is already in use.
+[indexterm2 reuse_address..basic_socket_acceptor] Socket option to allow the socket to be bound to an address that is already in use.
 
   typedef implementation_defined reuse_address;
 
@@ -18527,7 +18488,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the send buffer size of a socket.
+[indexterm2 send_buffer_size..basic_socket_acceptor] Socket option for the send buffer size of a socket.
 
   typedef implementation_defined send_buffer_size;
 
@@ -18570,7 +18531,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the send low watermark.
+[indexterm2 send_low_watermark..basic_socket_acceptor] Socket option for the send low watermark.
 
   typedef implementation_defined send_low_watermark;
 
@@ -18613,7 +18574,7 @@
 
 ['Inherited from basic_io_object.]
 
-The service associated with the I/O object.
+[indexterm2 service..basic_socket_acceptor] The service associated with the I/O object.
 
   service_type & service;
 
@@ -18628,7 +18589,7 @@
 
 ['Inherited from basic_io_object.]
 
-The type of the service that will be used to provide I/O operations.
+[indexterm2 service_type..basic_socket_acceptor] The type of the service that will be used to provide I/O operations.
 
   typedef SocketAcceptorService service_type;
 
@@ -18640,7 +18601,7 @@
 
 [section:set_option basic_socket_acceptor::set_option]
 
-Set an option on the acceptor.
+[indexterm2 set_option..basic_socket_acceptor] Set an option on the acceptor.
 
   template<
       typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
@@ -18758,7 +18719,7 @@
 
 ['Inherited from socket_base.]
 
-Different ways a socket may be shutdown.
+[indexterm2 shutdown_type..basic_socket_acceptor] Different ways a socket may be shutdown.
 
   enum shutdown_type
 
@@ -18828,7 +18789,7 @@
 
 [section:basic_socket_iostream basic_socket_iostream::basic_socket_iostream]
 
-Construct a basic_socket_iostream without establishing a connection.
+[indexterm2 basic_socket_iostream..basic_socket_iostream] Construct a basic_socket_iostream without establishing a connection.
 
   ``[link boost_asio.reference.basic_socket_iostream.basic_socket_iostream.overload1 basic_socket_iostream]``();
 
@@ -18879,7 +18840,7 @@
 
 [section:close basic_socket_iostream::close]
 
-Close the connection.
+[indexterm2 close..basic_socket_iostream] Close the connection.
 
   void close();
 
@@ -18891,7 +18852,7 @@
 
 [section:connect basic_socket_iostream::connect]
 
-Establish a connection to an endpoint corresponding to a resolver query.
+[indexterm2 connect..basic_socket_iostream] Establish a connection to an endpoint corresponding to a resolver query.
 
   template<
       typename T1,
@@ -18912,7 +18873,7 @@
 
 [section:rdbuf basic_socket_iostream::rdbuf]
 
-Return a pointer to the underlying streambuf.
+[indexterm2 rdbuf..basic_socket_iostream] Return a pointer to the underlying streambuf.
 
   basic_socket_streambuf< Protocol, StreamSocketService > * rdbuf() const;
 
@@ -19274,7 +19235,7 @@
 
 [section:assign basic_socket_streambuf::assign]
 
-Assign an existing native socket to the socket.
+[indexterm2 assign..basic_socket_streambuf] Assign an existing native socket to the socket.
 
   void ``[link boost_asio.reference.basic_socket_streambuf.assign.overload1 assign]``(
       const protocol_type & protocol,
@@ -19328,7 +19289,7 @@
 
 ['Inherited from basic_socket.]
 
-Start an asynchronous connect.
+[indexterm2 async_connect..basic_socket_streambuf] Start an asynchronous connect.
 
   void async_connect(
       const endpoint_type & peer_endpoint,
@@ -19337,7 +19298,7 @@
 
 This function is used to asynchronously connect a socket to the specified remote endpoint. The function call always returns immediately.
 
-The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is returned to the closed state.
+The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is not returned to the closed state.
 
 
 [heading Parameters]
@@ -19352,7 +19313,6 @@
    void handler(
      const boost::system::error_code& error // Result of operation
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -19387,7 +19347,7 @@
 
 [section:at_mark basic_socket_streambuf::at_mark]
 
-Determine whether the socket is at the out-of-band data mark.
+[indexterm2 at_mark..basic_socket_streambuf] Determine whether the socket is at the out-of-band data mark.
 
   bool ``[link boost_asio.reference.basic_socket_streambuf.at_mark.overload1 at_mark]``() const;
 
@@ -19463,7 +19423,7 @@
 
 [section:available basic_socket_streambuf::available]
 
-Determine the number of bytes available for reading.
+[indexterm2 available..basic_socket_streambuf] Determine the number of bytes available for reading.
 
   std::size_t ``[link boost_asio.reference.basic_socket_streambuf.available.overload1 available]``() const;
 
@@ -19540,7 +19500,7 @@
 
 [section:basic_socket_streambuf basic_socket_streambuf::basic_socket_streambuf]
 
-Construct a basic_socket_streambuf without establishing a connection.
+[indexterm2 basic_socket_streambuf..basic_socket_streambuf] Construct a basic_socket_streambuf without establishing a connection.
 
   basic_socket_streambuf();
 
@@ -19551,7 +19511,7 @@
 
 [section:bind basic_socket_streambuf::bind]
 
-Bind the socket to the given local endpoint.
+[indexterm2 bind..basic_socket_streambuf] Bind the socket to the given local endpoint.
 
   void ``[link boost_asio.reference.basic_socket_streambuf.bind.overload1 bind]``(
       const endpoint_type & endpoint);
@@ -19667,7 +19627,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to permit sending of broadcast messages.
+[indexterm2 broadcast..basic_socket_streambuf] Socket option to permit sending of broadcast messages.
 
   typedef implementation_defined broadcast;
 
@@ -19710,7 +19670,7 @@
 
 ['Inherited from socket_base.]
 
-IO control command to get the amount of data that can be read without blocking.
+[indexterm2 bytes_readable..basic_socket_streambuf] IO control command to get the amount of data that can be read without blocking.
 
   typedef implementation_defined bytes_readable;
 
@@ -19739,7 +19699,7 @@
 
 [section:cancel basic_socket_streambuf::cancel]
 
-Cancel all asynchronous operations associated with the socket.
+[indexterm2 cancel..basic_socket_streambuf] Cancel all asynchronous operations associated with the socket.
 
   void ``[link boost_asio.reference.basic_socket_streambuf.cancel.overload1 cancel]``();
 
@@ -19839,7 +19799,7 @@
 
 [section:close basic_socket_streambuf::close]
 
-Close the connection.
+[indexterm2 close..basic_socket_streambuf] Close the connection.
 
   basic_socket_streambuf< Protocol, StreamSocketService > * ``[link boost_asio.reference.basic_socket_streambuf.close.overload1 close]``();
 
@@ -19857,7 +19817,7 @@
 
 [heading Return Value]
       
-this if a connection was successfully established, a null pointer otherwise.
+`this` if a connection was successfully established, a null pointer otherwise.
 
 
 
@@ -19917,7 +19877,7 @@
 
 [section:connect basic_socket_streambuf::connect]
 
-Establish a connection.
+[indexterm2 connect..basic_socket_streambuf] Establish a connection.
 
   basic_socket_streambuf< Protocol, StreamSocketService > * ``[link boost_asio.reference.basic_socket_streambuf.connect.overload1 connect]``(
       const endpoint_type & endpoint);
@@ -19949,7 +19909,7 @@
 
 [heading Return Value]
       
-this if a connection was successfully established, a null pointer otherwise.
+`this` if a connection was successfully established, a null pointer otherwise.
 
 
 
@@ -19976,7 +19936,7 @@
 
 [heading Return Value]
       
-this if a connection was successfully established, a null pointer otherwise.
+`this` if a connection was successfully established, a null pointer otherwise.
 
 
 
@@ -19998,7 +19958,7 @@
 
 This function is used to connect a socket to the specified remote endpoint. The function call will block until the connection is successfully made or an error occurs.
 
-The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is returned to the closed state.
+The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is not returned to the closed state.
 
 
 [heading Parameters]
@@ -20042,7 +20002,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to enable socket-level debugging.
+[indexterm2 debug..basic_socket_streambuf] Socket option to enable socket-level debugging.
 
   typedef implementation_defined debug;
 
@@ -20085,7 +20045,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to prevent routing, use local interfaces only.
+[indexterm2 do_not_route..basic_socket_streambuf] Socket option to prevent routing, use local interfaces only.
 
   typedef implementation_defined do_not_route;
 
@@ -20128,7 +20088,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to report aborted connections on accept.
+[indexterm2 enable_connection_aborted..basic_socket_streambuf] Socket option to report aborted connections on accept.
 
   typedef implementation_defined enable_connection_aborted;
 
@@ -20168,7 +20128,7 @@
 
 [section:endpoint_type basic_socket_streambuf::endpoint_type]
 
-The endpoint type.
+[indexterm2 endpoint_type..basic_socket_streambuf] The endpoint type.
 
   typedef Protocol::endpoint endpoint_type;
 
@@ -20184,7 +20144,7 @@
 
 ['Inherited from basic_io_object.]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..basic_socket_streambuf] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -20203,7 +20163,7 @@
 
 [section:get_option basic_socket_streambuf::get_option]
 
-Get an option from the socket.
+[indexterm2 get_option..basic_socket_streambuf] Get an option from the socket.
 
   void ``[link boost_asio.reference.basic_socket_streambuf.get_option.overload1 get_option]``(
       GettableSocketOption & option) const;
@@ -20321,7 +20281,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation of the I/O object.
+[indexterm2 implementation..basic_socket_streambuf] The underlying implementation of the I/O object.
 
   implementation_type implementation;
 
@@ -20336,7 +20296,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation type of I/O object.
+[indexterm2 implementation_type..basic_socket_streambuf] The underlying implementation type of I/O object.
 
   typedef service_type::implementation_type implementation_type;
 
@@ -20348,7 +20308,7 @@
 
 [section:io_control basic_socket_streambuf::io_control]
 
-Perform an IO control command on the socket.
+[indexterm2 io_control..basic_socket_streambuf] Perform an IO control command on the socket.
 
   void ``[link boost_asio.reference.basic_socket_streambuf.io_control.overload1 io_control]``(
       IoControlCommand & command);
@@ -20466,7 +20426,7 @@
 
 ['Inherited from basic_io_object.]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..basic_socket_streambuf] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -20489,7 +20449,7 @@
 
 ['Inherited from basic_socket.]
 
-Determine whether the socket is open.
+[indexterm2 is_open..basic_socket_streambuf] Determine whether the socket is open.
 
   bool is_open() const;
 
@@ -20504,7 +20464,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to send keep-alives.
+[indexterm2 keep_alive..basic_socket_streambuf] Socket option to send keep-alives.
 
   typedef implementation_defined keep_alive;
 
@@ -20547,7 +20507,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to specify whether the socket lingers on close if unsent data is present.
+[indexterm2 linger..basic_socket_streambuf] Socket option to specify whether the socket lingers on close if unsent data is present.
 
   typedef implementation_defined linger;
 
@@ -20587,7 +20547,7 @@
 
 [section:local_endpoint basic_socket_streambuf::local_endpoint]
 
-Get the local endpoint of the socket.
+[indexterm2 local_endpoint..basic_socket_streambuf] Get the local endpoint of the socket.
 
   endpoint_type ``[link boost_asio.reference.basic_socket_streambuf.local_endpoint.overload1 local_endpoint]``() const;
 
@@ -20694,7 +20654,7 @@
 
 ['Inherited from basic_socket.]
 
-Get a reference to the lowest layer.
+[indexterm2 lowest_layer..basic_socket_streambuf] Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -20717,7 +20677,7 @@
 
 ['Inherited from basic_socket.]
 
-A basic_socket is always the lowest layer.
+[indexterm2 lowest_layer_type..basic_socket_streambuf] A basic_socket is always the lowest layer.
 
   typedef basic_socket< Protocol, StreamSocketService > lowest_layer_type;
 
@@ -21060,7 +21020,7 @@
 
 ['Inherited from socket_base.]
 
-The maximum length of the queue of pending incoming connections.
+[indexterm2 max_connections..basic_socket_streambuf] The maximum length of the queue of pending incoming connections.
 
   static const int max_connections = implementation_defined;
 
@@ -21075,7 +21035,7 @@
 
 ['Inherited from socket_base.]
 
-Specify that the data should not be subject to routing.
+[indexterm2 message_do_not_route..basic_socket_streambuf] Specify that the data should not be subject to routing.
 
   static const int message_do_not_route = implementation_defined;
 
@@ -21090,7 +21050,7 @@
 
 ['Inherited from socket_base.]
 
-Bitmask type for flags that can be passed to send and receive operations.
+[indexterm2 message_flags..basic_socket_streambuf] Bitmask type for flags that can be passed to send and receive operations.
 
   typedef int message_flags;
 
@@ -21106,7 +21066,7 @@
 
 ['Inherited from socket_base.]
 
-Process out-of-band data.
+[indexterm2 message_out_of_band..basic_socket_streambuf] Process out-of-band data.
 
   static const int message_out_of_band = implementation_defined;
 
@@ -21121,7 +21081,7 @@
 
 ['Inherited from socket_base.]
 
-Peek at incoming data without removing it from the input queue.
+[indexterm2 message_peek..basic_socket_streambuf] Peek at incoming data without removing it from the input queue.
 
   static const int message_peek = implementation_defined;
 
@@ -21136,7 +21096,7 @@
 
 ['Inherited from basic_socket.]
 
-Get the native socket representation.
+[indexterm2 native..basic_socket_streambuf] Get the native socket representation.
 
   native_type native();
 
@@ -21153,7 +21113,7 @@
 
 ['Inherited from basic_socket.]
 
-The native representation of a socket.
+[indexterm2 native_type..basic_socket_streambuf] The native representation of a socket.
 
   typedef StreamSocketService::native_type native_type;
 
@@ -21169,7 +21129,7 @@
 
 ['Inherited from socket_base.]
 
-IO control command to set the blocking mode of the socket.
+[indexterm2 non_blocking_io..basic_socket_streambuf] IO control command to set the blocking mode of the socket.
 
   typedef implementation_defined non_blocking_io;
 
@@ -21197,7 +21157,7 @@
 
 [section:open basic_socket_streambuf::open]
 
-Open the socket using the specified protocol.
+[indexterm2 open..basic_socket_streambuf] Open the socket using the specified protocol.
 
   void ``[link boost_asio.reference.basic_socket_streambuf.open.overload1 open]``(
       const protocol_type & protocol = protocol_type());
@@ -21306,7 +21266,7 @@
 
 [section:overflow basic_socket_streambuf::overflow]
 
-
+[indexterm2 overflow..basic_socket_streambuf]
 
   int_type overflow(
       int_type c);
@@ -21322,7 +21282,7 @@
 
 ['Inherited from basic_socket.]
 
-The protocol type.
+[indexterm2 protocol_type..basic_socket_streambuf] The protocol type.
 
   typedef Protocol protocol_type;
 
@@ -21338,7 +21298,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the receive buffer size of a socket.
+[indexterm2 receive_buffer_size..basic_socket_streambuf] Socket option for the receive buffer size of a socket.
 
   typedef implementation_defined receive_buffer_size;
 
@@ -21381,7 +21341,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the receive low watermark.
+[indexterm2 receive_low_watermark..basic_socket_streambuf] Socket option for the receive low watermark.
 
   typedef implementation_defined receive_low_watermark;
 
@@ -21420,7 +21380,7 @@
 
 [section:remote_endpoint basic_socket_streambuf::remote_endpoint]
 
-Get the remote endpoint of the socket.
+[indexterm2 remote_endpoint..basic_socket_streambuf] Get the remote endpoint of the socket.
 
   endpoint_type ``[link boost_asio.reference.basic_socket_streambuf.remote_endpoint.overload1 remote_endpoint]``() const;
 
@@ -21527,7 +21487,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to allow the socket to be bound to an address that is already in use.
+[indexterm2 reuse_address..basic_socket_streambuf] Socket option to allow the socket to be bound to an address that is already in use.
 
   typedef implementation_defined reuse_address;
 
@@ -21570,7 +21530,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the send buffer size of a socket.
+[indexterm2 send_buffer_size..basic_socket_streambuf] Socket option for the send buffer size of a socket.
 
   typedef implementation_defined send_buffer_size;
 
@@ -21613,7 +21573,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the send low watermark.
+[indexterm2 send_low_watermark..basic_socket_streambuf] Socket option for the send low watermark.
 
   typedef implementation_defined send_low_watermark;
 
@@ -21656,7 +21616,7 @@
 
 ['Inherited from basic_io_object.]
 
-The service associated with the I/O object.
+[indexterm2 service..basic_socket_streambuf] The service associated with the I/O object.
 
   service_type & service;
 
@@ -21671,7 +21631,7 @@
 
 ['Inherited from basic_io_object.]
 
-The type of the service that will be used to provide I/O operations.
+[indexterm2 service_type..basic_socket_streambuf] The type of the service that will be used to provide I/O operations.
 
   typedef StreamSocketService service_type;
 
@@ -21683,7 +21643,7 @@
 
 [section:set_option basic_socket_streambuf::set_option]
 
-Set an option on the socket.
+[indexterm2 set_option..basic_socket_streambuf] Set an option on the socket.
 
   void ``[link boost_asio.reference.basic_socket_streambuf.set_option.overload1 set_option]``(
       const SettableSocketOption & option);
@@ -21796,7 +21756,7 @@
 
 [section:setbuf basic_socket_streambuf::setbuf]
 
-
+[indexterm2 setbuf..basic_socket_streambuf]
 
   std::streambuf * setbuf(
       char_type * s,
@@ -21809,7 +21769,7 @@
 
 [section:shutdown basic_socket_streambuf::shutdown]
 
-Disable sends or receives on the socket.
+[indexterm2 shutdown..basic_socket_streambuf] Disable sends or receives on the socket.
 
   void ``[link boost_asio.reference.basic_socket_streambuf.shutdown.overload1 shutdown]``(
       shutdown_type what);
@@ -21923,7 +21883,7 @@
 
 ['Inherited from socket_base.]
 
-Different ways a socket may be shutdown.
+[indexterm2 shutdown_type..basic_socket_streambuf] Different ways a socket may be shutdown.
 
   enum shutdown_type
 
@@ -21955,7 +21915,7 @@
 
 [section:sync basic_socket_streambuf::sync]
 
-
+[indexterm2 sync..basic_socket_streambuf]
 
   int sync();
 
@@ -21967,7 +21927,7 @@
 
 [section:underflow basic_socket_streambuf::underflow]
 
-
+[indexterm2 underflow..basic_socket_streambuf]
 
   int_type underflow();
 
@@ -21979,7 +21939,7 @@
 
 [section:_basic_socket_streambuf basic_socket_streambuf::~basic_socket_streambuf]
 
-Destructor flushes buffered data.
+[indexterm2 ~basic_socket_streambuf..basic_socket_streambuf] Destructor flushes buffered data.
 
   virtual ~basic_socket_streambuf();
 
@@ -22360,7 +22320,7 @@
 
 [section:assign basic_stream_socket::assign]
 
-Assign an existing native socket to the socket.
+[indexterm2 assign..basic_stream_socket] Assign an existing native socket to the socket.
 
   void ``[link boost_asio.reference.basic_stream_socket.assign.overload1 assign]``(
       const protocol_type & protocol,
@@ -22414,7 +22374,7 @@
 
 ['Inherited from basic_socket.]
 
-Start an asynchronous connect.
+[indexterm2 async_connect..basic_stream_socket] Start an asynchronous connect.
 
   void async_connect(
       const endpoint_type & peer_endpoint,
@@ -22423,7 +22383,7 @@
 
 This function is used to asynchronously connect a socket to the specified remote endpoint. The function call always returns immediately.
 
-The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is returned to the closed state.
+The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is not returned to the closed state.
 
 
 [heading Parameters]
@@ -22438,7 +22398,6 @@
    void handler(
      const boost::system::error_code& error // Result of operation
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -22474,7 +22433,7 @@
 
 [section:async_read_some basic_stream_socket::async_read_some]
 
-Start an asynchronous read.
+[indexterm2 async_read_some..basic_stream_socket] Start an asynchronous read.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -22500,7 +22459,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes read.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -22529,7 +22487,7 @@
 
 [section:async_receive basic_stream_socket::async_receive]
 
-Start an asynchronous receive.
+[indexterm2 async_receive..basic_stream_socket] Start an asynchronous receive.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -22575,7 +22533,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes received.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -22634,7 +22591,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes received.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -22665,7 +22621,7 @@
 
 [section:async_send basic_stream_socket::async_send]
 
-Start an asynchronous send.
+[indexterm2 async_send..basic_stream_socket] Start an asynchronous send.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -22711,7 +22667,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes sent.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -22770,7 +22725,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes sent.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -22802,7 +22756,7 @@
 
 [section:async_write_some basic_stream_socket::async_write_some]
 
-Start an asynchronous write.
+[indexterm2 async_write_some..basic_stream_socket] Start an asynchronous write.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -22828,7 +22782,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes written.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -22857,7 +22810,7 @@
 
 [section:at_mark basic_stream_socket::at_mark]
 
-Determine whether the socket is at the out-of-band data mark.
+[indexterm2 at_mark..basic_stream_socket] Determine whether the socket is at the out-of-band data mark.
 
   bool ``[link boost_asio.reference.basic_stream_socket.at_mark.overload1 at_mark]``() const;
 
@@ -22933,7 +22886,7 @@
 
 [section:available basic_stream_socket::available]
 
-Determine the number of bytes available for reading.
+[indexterm2 available..basic_stream_socket] Determine the number of bytes available for reading.
 
   std::size_t ``[link boost_asio.reference.basic_stream_socket.available.overload1 available]``() const;
 
@@ -23009,7 +22962,7 @@
 
 [section:basic_stream_socket basic_stream_socket::basic_stream_socket]
 
-Construct a basic_stream_socket without opening it.
+[indexterm2 basic_stream_socket..basic_stream_socket] Construct a basic_stream_socket without opening it.
 
   ``[link boost_asio.reference.basic_stream_socket.basic_stream_socket.overload1 basic_stream_socket]``(
       boost::asio::io_service & io_service);
@@ -23174,7 +23127,7 @@
 
 [section:bind basic_stream_socket::bind]
 
-Bind the socket to the given local endpoint.
+[indexterm2 bind..basic_stream_socket] Bind the socket to the given local endpoint.
 
   void ``[link boost_asio.reference.basic_stream_socket.bind.overload1 bind]``(
       const endpoint_type & endpoint);
@@ -23290,7 +23243,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to permit sending of broadcast messages.
+[indexterm2 broadcast..basic_stream_socket] Socket option to permit sending of broadcast messages.
 
   typedef implementation_defined broadcast;
 
@@ -23333,7 +23286,7 @@
 
 ['Inherited from socket_base.]
 
-IO control command to get the amount of data that can be read without blocking.
+[indexterm2 bytes_readable..basic_stream_socket] IO control command to get the amount of data that can be read without blocking.
 
   typedef implementation_defined bytes_readable;
 
@@ -23362,7 +23315,7 @@
 
 [section:cancel basic_stream_socket::cancel]
 
-Cancel all asynchronous operations associated with the socket.
+[indexterm2 cancel..basic_stream_socket] Cancel all asynchronous operations associated with the socket.
 
   void ``[link boost_asio.reference.basic_stream_socket.cancel.overload1 cancel]``();
 
@@ -23462,7 +23415,7 @@
 
 [section:close basic_stream_socket::close]
 
-Close the socket.
+[indexterm2 close..basic_stream_socket] Close the socket.
 
   void ``[link boost_asio.reference.basic_stream_socket.close.overload1 close]``();
 
@@ -23554,7 +23507,7 @@
 
 [section:connect basic_stream_socket::connect]
 
-Connect the socket to the specified endpoint.
+[indexterm2 connect..basic_stream_socket] Connect the socket to the specified endpoint.
 
   void ``[link boost_asio.reference.basic_stream_socket.connect.overload1 connect]``(
       const endpoint_type & peer_endpoint);
@@ -23577,7 +23530,7 @@
 
 This function is used to connect a socket to the specified remote endpoint. The function call will block until the connection is successfully made or an error occurs.
 
-The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is returned to the closed state.
+The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is not returned to the closed state.
 
 
 [heading Parameters]
@@ -23630,7 +23583,7 @@
 
 This function is used to connect a socket to the specified remote endpoint. The function call will block until the connection is successfully made or an error occurs.
 
-The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is returned to the closed state.
+The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is not returned to the closed state.
 
 
 [heading Parameters]
@@ -23674,7 +23627,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to enable socket-level debugging.
+[indexterm2 debug..basic_stream_socket] Socket option to enable socket-level debugging.
 
   typedef implementation_defined debug;
 
@@ -23717,7 +23670,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to prevent routing, use local interfaces only.
+[indexterm2 do_not_route..basic_stream_socket] Socket option to prevent routing, use local interfaces only.
 
   typedef implementation_defined do_not_route;
 
@@ -23760,7 +23713,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to report aborted connections on accept.
+[indexterm2 enable_connection_aborted..basic_stream_socket] Socket option to report aborted connections on accept.
 
   typedef implementation_defined enable_connection_aborted;
 
@@ -23800,7 +23753,7 @@
 
 [section:endpoint_type basic_stream_socket::endpoint_type]
 
-The endpoint type.
+[indexterm2 endpoint_type..basic_stream_socket] The endpoint type.
 
   typedef Protocol::endpoint endpoint_type;
 
@@ -23816,7 +23769,7 @@
 
 ['Inherited from basic_io_object.]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..basic_stream_socket] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -23835,7 +23788,7 @@
 
 [section:get_option basic_stream_socket::get_option]
 
-Get an option from the socket.
+[indexterm2 get_option..basic_stream_socket] Get an option from the socket.
 
   void ``[link boost_asio.reference.basic_stream_socket.get_option.overload1 get_option]``(
       GettableSocketOption & option) const;
@@ -23953,7 +23906,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation of the I/O object.
+[indexterm2 implementation..basic_stream_socket] The underlying implementation of the I/O object.
 
   implementation_type implementation;
 
@@ -23968,7 +23921,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation type of I/O object.
+[indexterm2 implementation_type..basic_stream_socket] The underlying implementation type of I/O object.
 
   typedef service_type::implementation_type implementation_type;
 
@@ -23980,7 +23933,7 @@
 
 [section:io_control basic_stream_socket::io_control]
 
-Perform an IO control command on the socket.
+[indexterm2 io_control..basic_stream_socket] Perform an IO control command on the socket.
 
   void ``[link boost_asio.reference.basic_stream_socket.io_control.overload1 io_control]``(
       IoControlCommand & command);
@@ -24098,7 +24051,7 @@
 
 ['Inherited from basic_io_object.]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..basic_stream_socket] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -24121,7 +24074,7 @@
 
 ['Inherited from basic_socket.]
 
-Determine whether the socket is open.
+[indexterm2 is_open..basic_stream_socket] Determine whether the socket is open.
 
   bool is_open() const;
 
@@ -24136,7 +24089,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to send keep-alives.
+[indexterm2 keep_alive..basic_stream_socket] Socket option to send keep-alives.
 
   typedef implementation_defined keep_alive;
 
@@ -24179,7 +24132,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to specify whether the socket lingers on close if unsent data is present.
+[indexterm2 linger..basic_stream_socket] Socket option to specify whether the socket lingers on close if unsent data is present.
 
   typedef implementation_defined linger;
 
@@ -24219,7 +24172,7 @@
 
 [section:local_endpoint basic_stream_socket::local_endpoint]
 
-Get the local endpoint of the socket.
+[indexterm2 local_endpoint..basic_stream_socket] Get the local endpoint of the socket.
 
   endpoint_type ``[link boost_asio.reference.basic_stream_socket.local_endpoint.overload1 local_endpoint]``() const;
 
@@ -24326,7 +24279,7 @@
 
 ['Inherited from basic_socket.]
 
-Get a reference to the lowest layer.
+[indexterm2 lowest_layer..basic_stream_socket] Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -24349,7 +24302,7 @@
 
 ['Inherited from basic_socket.]
 
-A basic_socket is always the lowest layer.
+[indexterm2 lowest_layer_type..basic_stream_socket] A basic_socket is always the lowest layer.
 
   typedef basic_socket< Protocol, StreamSocketService > lowest_layer_type;
 
@@ -24692,7 +24645,7 @@
 
 ['Inherited from socket_base.]
 
-The maximum length of the queue of pending incoming connections.
+[indexterm2 max_connections..basic_stream_socket] The maximum length of the queue of pending incoming connections.
 
   static const int max_connections = implementation_defined;
 
@@ -24707,7 +24660,7 @@
 
 ['Inherited from socket_base.]
 
-Specify that the data should not be subject to routing.
+[indexterm2 message_do_not_route..basic_stream_socket] Specify that the data should not be subject to routing.
 
   static const int message_do_not_route = implementation_defined;
 
@@ -24722,7 +24675,7 @@
 
 ['Inherited from socket_base.]
 
-Bitmask type for flags that can be passed to send and receive operations.
+[indexterm2 message_flags..basic_stream_socket] Bitmask type for flags that can be passed to send and receive operations.
 
   typedef int message_flags;
 
@@ -24738,7 +24691,7 @@
 
 ['Inherited from socket_base.]
 
-Process out-of-band data.
+[indexterm2 message_out_of_band..basic_stream_socket] Process out-of-band data.
 
   static const int message_out_of_band = implementation_defined;
 
@@ -24753,7 +24706,7 @@
 
 ['Inherited from socket_base.]
 
-Peek at incoming data without removing it from the input queue.
+[indexterm2 message_peek..basic_stream_socket] Peek at incoming data without removing it from the input queue.
 
   static const int message_peek = implementation_defined;
 
@@ -24768,7 +24721,7 @@
 
 ['Inherited from basic_socket.]
 
-Get the native socket representation.
+[indexterm2 native..basic_stream_socket] Get the native socket representation.
 
   native_type native();
 
@@ -24782,7 +24735,7 @@
 
 [section:native_type basic_stream_socket::native_type]
 
-The native representation of a socket.
+[indexterm2 native_type..basic_stream_socket] The native representation of a socket.
 
   typedef StreamSocketService::native_type native_type;
 
@@ -24798,7 +24751,7 @@
 
 ['Inherited from socket_base.]
 
-IO control command to set the blocking mode of the socket.
+[indexterm2 non_blocking_io..basic_stream_socket] IO control command to set the blocking mode of the socket.
 
   typedef implementation_defined non_blocking_io;
 
@@ -24826,7 +24779,7 @@
 
 [section:open basic_stream_socket::open]
 
-Open the socket using the specified protocol.
+[indexterm2 open..basic_stream_socket] Open the socket using the specified protocol.
 
   void ``[link boost_asio.reference.basic_stream_socket.open.overload1 open]``(
       const protocol_type & protocol = protocol_type());
@@ -24935,7 +24888,7 @@
 
 [section:protocol_type basic_stream_socket::protocol_type]
 
-The protocol type.
+[indexterm2 protocol_type..basic_stream_socket] The protocol type.
 
   typedef Protocol protocol_type;
 
@@ -24947,7 +24900,7 @@
 
 [section:read_some basic_stream_socket::read_some]
 
-Read some data from the socket.
+[indexterm2 read_some..basic_stream_socket] Read some data from the socket.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -25061,7 +25014,7 @@
 
 [section:receive basic_stream_socket::receive]
 
-Receive some data on the socket.
+[indexterm2 receive..basic_stream_socket] Receive some data on the socket.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -25249,7 +25202,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the receive buffer size of a socket.
+[indexterm2 receive_buffer_size..basic_stream_socket] Socket option for the receive buffer size of a socket.
 
   typedef implementation_defined receive_buffer_size;
 
@@ -25292,7 +25245,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the receive low watermark.
+[indexterm2 receive_low_watermark..basic_stream_socket] Socket option for the receive low watermark.
 
   typedef implementation_defined receive_low_watermark;
 
@@ -25331,7 +25284,7 @@
 
 [section:remote_endpoint basic_stream_socket::remote_endpoint]
 
-Get the remote endpoint of the socket.
+[indexterm2 remote_endpoint..basic_stream_socket] Get the remote endpoint of the socket.
 
   endpoint_type ``[link boost_asio.reference.basic_stream_socket.remote_endpoint.overload1 remote_endpoint]``() const;
 
@@ -25438,7 +25391,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to allow the socket to be bound to an address that is already in use.
+[indexterm2 reuse_address..basic_stream_socket] Socket option to allow the socket to be bound to an address that is already in use.
 
   typedef implementation_defined reuse_address;
 
@@ -25477,7 +25430,7 @@
 
 [section:send basic_stream_socket::send]
 
-Send some data on the socket.
+[indexterm2 send..basic_stream_socket] Send some data on the socket.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -25665,7 +25618,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the send buffer size of a socket.
+[indexterm2 send_buffer_size..basic_stream_socket] Socket option for the send buffer size of a socket.
 
   typedef implementation_defined send_buffer_size;
 
@@ -25708,7 +25661,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the send low watermark.
+[indexterm2 send_low_watermark..basic_stream_socket] Socket option for the send low watermark.
 
   typedef implementation_defined send_low_watermark;
 
@@ -25751,7 +25704,7 @@
 
 ['Inherited from basic_io_object.]
 
-The service associated with the I/O object.
+[indexterm2 service..basic_stream_socket] The service associated with the I/O object.
 
   service_type & service;
 
@@ -25766,7 +25719,7 @@
 
 ['Inherited from basic_io_object.]
 
-The type of the service that will be used to provide I/O operations.
+[indexterm2 service_type..basic_stream_socket] The type of the service that will be used to provide I/O operations.
 
   typedef StreamSocketService service_type;
 
@@ -25778,7 +25731,7 @@
 
 [section:set_option basic_stream_socket::set_option]
 
-Set an option on the socket.
+[indexterm2 set_option..basic_stream_socket] Set an option on the socket.
 
   void ``[link boost_asio.reference.basic_stream_socket.set_option.overload1 set_option]``(
       const SettableSocketOption & option);
@@ -25890,7 +25843,7 @@
 
 [section:shutdown basic_stream_socket::shutdown]
 
-Disable sends or receives on the socket.
+[indexterm2 shutdown..basic_stream_socket] Disable sends or receives on the socket.
 
   void ``[link boost_asio.reference.basic_stream_socket.shutdown.overload1 shutdown]``(
       shutdown_type what);
@@ -26004,7 +25957,7 @@
 
 ['Inherited from socket_base.]
 
-Different ways a socket may be shutdown.
+[indexterm2 shutdown_type..basic_stream_socket] Different ways a socket may be shutdown.
 
   enum shutdown_type
 
@@ -26035,7 +25988,7 @@
 
 [section:write_some basic_stream_socket::write_some]
 
-Write some data to the socket.
+[indexterm2 write_some..basic_stream_socket] Write some data to the socket.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -26245,7 +26198,7 @@
 
 [section:basic_streambuf basic_streambuf::basic_streambuf]
 
-Construct a buffer with a specified maximum size.
+[indexterm2 basic_streambuf..basic_streambuf] Construct a buffer with a specified maximum size.
 
   basic_streambuf(
       std::size_t max_size = (std::numeric_limits< std::size_t >::max)(),
@@ -26259,7 +26212,7 @@
 
 [section:commit basic_streambuf::commit]
 
-Move the start of the put area by the specified number of characters.
+[indexterm2 commit..basic_streambuf] Move the start of the put area by the specified number of characters.
 
   void commit(
       std::size_t n);
@@ -26272,7 +26225,7 @@
 
 [section:const_buffers_type basic_streambuf::const_buffers_type]
 
-The type used to represent the get area as a list of buffers.
+[indexterm2 const_buffers_type..basic_streambuf] The type used to represent the get area as a list of buffers.
 
   typedef implementation_defined const_buffers_type;
 
@@ -26285,7 +26238,7 @@
 
 [section:consume basic_streambuf::consume]
 
-Move the start of the get area by the specified number of characters.
+[indexterm2 consume..basic_streambuf] Move the start of the get area by the specified number of characters.
 
   void consume(
       std::size_t n);
@@ -26298,7 +26251,7 @@
 
 [section:data basic_streambuf::data]
 
-Get a list of buffers that represents the get area.
+[indexterm2 data..basic_streambuf] Get a list of buffers that represents the get area.
 
   const_buffers_type data() const;
 
@@ -26310,7 +26263,7 @@
 
 [section:max_size basic_streambuf::max_size]
 
-Return the maximum size of the buffer.
+[indexterm2 max_size..basic_streambuf] Return the maximum size of the buffer.
 
   std::size_t max_size() const;
 
@@ -26322,7 +26275,7 @@
 
 [section:mutable_buffers_type basic_streambuf::mutable_buffers_type]
 
-The type used to represent the put area as a list of buffers.
+[indexterm2 mutable_buffers_type..basic_streambuf] The type used to represent the put area as a list of buffers.
 
   typedef implementation_defined mutable_buffers_type;
 
@@ -26335,7 +26288,7 @@
 
 [section:overflow basic_streambuf::overflow]
 
-
+[indexterm2 overflow..basic_streambuf]
 
   int_type overflow(
       int_type c);
@@ -26348,7 +26301,7 @@
 
 [section:prepare basic_streambuf::prepare]
 
-Get a list of buffers that represents the put area, with the given size.
+[indexterm2 prepare..basic_streambuf] Get a list of buffers that represents the put area, with the given size.
 
   mutable_buffers_type prepare(
       std::size_t size);
@@ -26361,7 +26314,7 @@
 
 [section:reserve basic_streambuf::reserve]
 
-
+[indexterm2 reserve..basic_streambuf]
 
   void reserve(
       std::size_t n);
@@ -26374,7 +26327,7 @@
 
 [section:size basic_streambuf::size]
 
-Return the size of the get area in characters.
+[indexterm2 size..basic_streambuf] Return the size of the get area in characters.
 
   std::size_t size() const;
 
@@ -26386,7 +26339,7 @@
 
 [section:underflow basic_streambuf::underflow]
 
-
+[indexterm2 underflow..basic_streambuf]
 
   int_type underflow();
 
@@ -26400,8 +26353,8 @@
 
 [section:buffer buffer]
 
-Create a new modifiable buffer from an existing buffer.
-
+[indexterm1 buffer] The boost::asio::buffer function is used to create a buffer object to represent raw memory, an array of POD elements, a vector of POD elements, or a std::string.
+
   mutable_buffers_1 ``[link boost_asio.reference.buffer.overload1 buffer]``(
       const mutable_buffer & b);
 
@@ -26522,11 +26475,13 @@
       const std::string & data,
       std::size_t max_size_in_bytes);
 
+A buffer object represents a contiguous region of memory as a 2-tuple consisting of a pointer and size in bytes. A tuple of the form `{void*, size_t}` specifies a mutable (modifiable) region of memory. Similarly, a tuple of the form `{const void*, size_t}` specifies a const (non-modifiable) region of memory. These two forms correspond to the classes mutable_buffer and const_buffer, respectively. To mirror C++'s conversion rules, a mutable_buffer is implicitly convertible to a const_buffer, and the opposite conversion is not permitted.
+
 The simplest use case involves reading or writing a single buffer of a specified size:
 
 
 
- sock.write(boost::asio::buffer(data, size));
+ sock.send(boost::asio::buffer(data, size));
 
 
 
@@ -26538,17 +26493,113 @@
 
 
    char d1[128];
- size_t bytes_transferred = sock.read(boost::asio::buffer(d1));
+ size_t bytes_transferred = sock.receive(boost::asio::buffer(d1));
 
    std::vector<char> d2(128);
- bytes_transferred = sock.read(boost::asio::buffer(d2));
+ bytes_transferred = sock.receive(boost::asio::buffer(d2));
 
    boost::array<char, 128> d3;
- bytes_transferred = sock.read(boost::asio::buffer(d3));
+ bytes_transferred = sock.receive(boost::asio::buffer(d3));
+
+
+
+
+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]
+
+
+
+The contents of a buffer may be accessed using the boost::asio::buffer\_size and boost::asio::buffer\_cast functions:
+
+
+
+ boost::asio::mutable_buffer b1 = ...;
+ std::size_t s1 = boost::asio::buffer_size(b1);
+ unsigned char* p1 = boost::asio::buffer_cast<unsigned char*>(b1);
+
+ boost::asio::const_buffer b2 = ...;
+ std::size_t s2 = boost::asio::buffer_size(b2);
+ const void* p2 = boost::asio::buffer_cast<const void*>(b2);
+
+
+
+
+The boost::asio::buffer\_cast function permits violations of type safety, so uses of it in application code should be carefully considered.
+
+
+[heading Buffer Invalidation]
+
+
+
+A buffer object does not have any ownership of the memory it refers to. It is the responsibility of the application to ensure the memory region remains valid until it is no longer required for an I/O operation. When the memory is no longer available, the buffer is said to have been invalidated.
+
+For the boost::asio::buffer overloads that accept an argument of type std::vector, the buffer objects returned are invalidated by any vector operation that also invalidates all references, pointers and iterators referring to the elements in the sequence (C++ Std, 23.2.4)
+
+For the boost::asio::buffer overloads that accept an argument of type std::string, the buffer objects returned are invalidated according to the rules defined for invalidation of references, pointers and iterators referring to elements of the sequence (C++ Std, 21.3).
+
+
+[heading Buffer Arithmetic]
+
+
+
+Buffer objects may be manipulated using simple arithmetic in a safe way which helps prevent buffer overruns. Consider an array initialised as follows:
+
+
 
+ boost::array<char, 6> a = { 'a', 'b', 'c', 'd', 'e' };
 
 
 
+
+A buffer object `b1` created using:
+
+
+
+ b1 = boost::asio::buffer(a);
+
+
+
+
+represents the entire array, `{ 'a', 'b', 'c', 'd', 'e' }`. An optional second argument to the boost::asio::buffer function may be used to limit the size, in bytes, of the buffer:
+
+
+
+ b2 = boost::asio::buffer(a, 3);
+
+
+
+
+such that `b2` represents the data `{ 'a', 'b', 'c' }`. Even if the size argument exceeds the actual size of the array, the size of the buffer object created will be limited to the array size.
+
+An offset may be applied to an existing buffer to create a new one:
+
+
+
+ b3 = b1 + 2;
+
+
+
+
+where `b3` will set to represent `{ 'c', 'd', 'e' }`. If the offset exceeds the size of the existing buffer, the newly created buffer will be empty.
+
+Both an offset and size may be specified to create a buffer that corresponds to a specific range of bytes within an existing buffer:
+
+
+
+ b4 = boost::asio::buffer(b1 + 1, 3);
+
+
+
+
+so that `b4` will refer to the bytes `{ 'b', 'c', 'd' }`.
+
+
+[heading Buffers and Scatter-Gather I/O]
+
+
+
 To read or write using multiple buffers (i.e. scatter-gather I/O), multiple buffer objects may be assigned into a container that supports the MutableBufferSequence (for read) or ConstBufferSequence (for write) concepts:
 
 
@@ -26561,13 +26612,13 @@
      boost::asio::buffer(d1),
      boost::asio::buffer(d2),
      boost::asio::buffer(d3) };
- bytes_transferred = sock.read(bufs1);
+ bytes_transferred = sock.receive(bufs1);
 
    std::vector<const_buffer> bufs2;
    bufs2.push_back(boost::asio::buffer(d1));
    bufs2.push_back(boost::asio::buffer(d2));
    bufs2.push_back(boost::asio::buffer(d3));
- bytes_transferred = sock.write(bufs2);
+ bytes_transferred = sock.send(bufs2);
 
 
 
@@ -26582,6 +26633,12 @@
 
 
 
+[heading Return Value]
+
+`mutable_buffers_1(b)`.
+
+
+
 [endsect]
 
 
@@ -26596,6 +26653,19 @@
 
 
 
+[heading Return Value]
+
+A mutable_buffers_1 value equivalent to:
+
+ mutable_buffers_1(
+ buffer_cast<void*>(b),
+ min(buffer_size(b), max_size_in_bytes));
+
+
+
+
+
+
 [endsect]
 
 
@@ -26609,6 +26679,12 @@
 
 
 
+[heading Return Value]
+
+`const_buffers_1(b)`.
+
+
+
 [endsect]
 
 
@@ -26623,6 +26699,19 @@
 
 
 
+[heading Return Value]
+
+A const_buffers_1 value equivalent to:
+
+ const_buffers_1(
+ buffer_cast<const void*>(b),
+ min(buffer_size(b), max_size_in_bytes));
+
+
+
+
+
+
 [endsect]
 
 
@@ -26637,6 +26726,12 @@
 
 
 
+[heading Return Value]
+
+`mutable_buffers_1(data, size_in_bytes)`.
+
+
+
 [endsect]
 
 
@@ -26651,6 +26746,12 @@
 
 
 
+[heading Return Value]
+
+`const_buffers_1(data, size_in_bytes)`.
+
+
+
 [endsect]
 
 
@@ -26667,6 +26768,19 @@
 
 
 
+[heading Return Value]
+
+A mutable_buffers_1 value equivalent to:
+
+ mutable_buffers_1(
+ static_cast<void*>(data),
+ N * sizeof(PodType));
+
+
+
+
+
+
 [endsect]
 
 
@@ -26684,6 +26798,19 @@
 
 
 
+[heading Return Value]
+
+A mutable_buffers_1 value equivalent to:
+
+ mutable_buffers_1(
+ static_cast<void*>(data),
+ min(N * sizeof(PodType), max_size_in_bytes));
+
+
+
+
+
+
 [endsect]
 
 
@@ -26700,6 +26827,19 @@
 
 
 
+[heading Return Value]
+
+A const_buffers_1 value equivalent to:
+
+ const_buffers_1(
+ static_cast<const void*>(data),
+ N * sizeof(PodType));
+
+
+
+
+
+
 [endsect]
 
 
@@ -26717,6 +26857,19 @@
 
 
 
+[heading Return Value]
+
+A const_buffers_1 value equivalent to:
+
+ const_buffers_1(
+ static_cast<const void*>(data),
+ min(N * sizeof(PodType), max_size_in_bytes));
+
+
+
+
+
+
 [endsect]
 
 
@@ -26733,6 +26886,19 @@
 
 
 
+[heading Return Value]
+
+A mutable_buffers_1 value equivalent to:
+
+ mutable_buffers_1(
+ data.data(),
+ data.size() * sizeof(PodType));
+
+
+
+
+
+
 [endsect]
 
 
@@ -26750,6 +26916,19 @@
 
 
 
+[heading Return Value]
+
+A mutable_buffers_1 value equivalent to:
+
+ mutable_buffers_1(
+ data.data(),
+ min(data.size() * sizeof(PodType), max_size_in_bytes));
+
+
+
+
+
+
 [endsect]
 
 
@@ -26766,6 +26945,19 @@
 
 
 
+[heading Return Value]
+
+A const_buffers_1 value equivalent to:
+
+ const_buffers_1(
+ data.data(),
+ data.size() * sizeof(PodType));
+
+
+
+
+
+
 [endsect]
 
 
@@ -26783,6 +26975,19 @@
 
 
 
+[heading Return Value]
+
+A const_buffers_1 value equivalent to:
+
+ const_buffers_1(
+ data.data(),
+ min(data.size() * sizeof(PodType), max_size_in_bytes));
+
+
+
+
+
+
 [endsect]
 
 
@@ -26799,6 +27004,19 @@
 
 
 
+[heading Return Value]
+
+A const_buffers_1 value equivalent to:
+
+ const_buffers_1(
+ data.data(),
+ data.size() * sizeof(PodType));
+
+
+
+
+
+
 [endsect]
 
 
@@ -26816,6 +27034,19 @@
 
 
 
+[heading Return Value]
+
+A const_buffers_1 value equivalent to:
+
+ const_buffers_1(
+ data.data(),
+ min(data.size() * sizeof(PodType), max_size_in_bytes));
+
+
+
+
+
+
 [endsect]
 
 
@@ -26832,6 +27063,17 @@
 
 
 
+[heading Return Value]
+
+A mutable_buffers_1 value equivalent to:
+
+ mutable_buffers_1(
+ data.size() ? &data[0] : 0,
+ data.size() * sizeof(PodType));
+
+
+
+
 [heading Remarks]
       
 The buffer is invalidated by any vector operation that would also invalidate iterators.
@@ -26855,6 +27097,17 @@
 
 
 
+[heading Return Value]
+
+A mutable_buffers_1 value equivalent to:
+
+ mutable_buffers_1(
+ data.size() ? &data[0] : 0,
+ min(data.size() * sizeof(PodType), max_size_in_bytes));
+
+
+
+
 [heading Remarks]
       
 The buffer is invalidated by any vector operation that would also invalidate iterators.
@@ -26877,6 +27130,17 @@
 
 
 
+[heading Return Value]
+
+A const_buffers_1 value equivalent to:
+
+ const_buffers_1(
+ data.size() ? &data[0] : 0,
+ data.size() * sizeof(PodType));
+
+
+
+
 [heading Remarks]
       
 The buffer is invalidated by any vector operation that would also invalidate iterators.
@@ -26900,6 +27164,17 @@
 
 
 
+[heading Return Value]
+
+A const_buffers_1 value equivalent to:
+
+ const_buffers_1(
+ data.size() ? &data[0] : 0,
+ min(data.size() * sizeof(PodType), max_size_in_bytes));
+
+
+
+
 [heading Remarks]
       
 The buffer is invalidated by any vector operation that would also invalidate iterators.
@@ -26919,6 +27194,10 @@
 
 
 
+[heading Return Value]
+
+`const_buffers_1(data.data(), data.size())`.
+
 [heading Remarks]
       
 The buffer is invalidated by any non-const operation called on the given string object.
@@ -26939,6 +27218,17 @@
 
 
 
+[heading Return Value]
+
+A const_buffers_1 value equivalent to:
+
+ const_buffers_1(
+ data.data(),
+ min(data.size(), max_size_in_bytes));
+
+
+
+
 [heading Remarks]
       
 The buffer is invalidated by any non-const operation called on the given string object.
@@ -27080,7 +27370,7 @@
 
 [section:async_fill buffered_read_stream::async_fill]
 
-Start an asynchronous fill.
+[indexterm2 async_fill..buffered_read_stream] Start an asynchronous fill.
 
   template<
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
@@ -27095,7 +27385,7 @@
 
 [section:async_read_some buffered_read_stream::async_read_some]
 
-Start an asynchronous read. The buffer into which the data will be read must be valid for the lifetime of the asynchronous operation.
+[indexterm2 async_read_some..buffered_read_stream] Start an asynchronous read. The buffer into which the data will be read must be valid for the lifetime of the asynchronous operation.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -27112,7 +27402,7 @@
 
 [section:async_write_some buffered_read_stream::async_write_some]
 
-Start an asynchronous write. The data being written must be valid for the lifetime of the asynchronous operation.
+[indexterm2 async_write_some..buffered_read_stream] Start an asynchronous write. The data being written must be valid for the lifetime of the asynchronous operation.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -27128,7 +27418,7 @@
 
 [section:buffered_read_stream buffered_read_stream::buffered_read_stream]
 
-Construct, passing the specified argument to initialise the next layer.
+[indexterm2 buffered_read_stream..buffered_read_stream] Construct, passing the specified argument to initialise the next layer.
 
   template<
       typename Arg>
@@ -27176,7 +27466,7 @@
 
 [section:close buffered_read_stream::close]
 
-Close the stream.
+[indexterm2 close..buffered_read_stream] Close the stream.
 
   void ``[link boost_asio.reference.buffered_read_stream.close.overload1 close]``();
 
@@ -27213,7 +27503,7 @@
 
 [section:default_buffer_size buffered_read_stream::default_buffer_size]
 
-The default buffer size.
+[indexterm2 default_buffer_size..buffered_read_stream] The default buffer size.
 
   static const std::size_t default_buffer_size = implementation_defined;
 
@@ -27224,7 +27514,7 @@
 
 [section:fill buffered_read_stream::fill]
 
-Fill the buffer with some data. Returns the number of bytes placed in the buffer as a result of the operation. Throws an exception on failure.
+[indexterm2 fill..buffered_read_stream] Fill the buffer with some data. Returns the number of bytes placed in the buffer as a result of the operation. Throws an exception on failure.
 
   std::size_t ``[link boost_asio.reference.buffered_read_stream.fill.overload1 fill]``();
 
@@ -27261,7 +27551,7 @@
 
 [section:get_io_service buffered_read_stream::get_io_service]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..buffered_read_stream] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -27272,7 +27562,7 @@
 
 [section:in_avail buffered_read_stream::in_avail]
 
-Determine the amount of data that may be read without blocking.
+[indexterm2 in_avail..buffered_read_stream] Determine the amount of data that may be read without blocking.
 
   std::size_t ``[link boost_asio.reference.buffered_read_stream.in_avail.overload1 in_avail]``();
 
@@ -27309,7 +27599,7 @@
 
 [section:io_service buffered_read_stream::io_service]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..buffered_read_stream] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -27321,7 +27611,7 @@
 
 [section:lowest_layer buffered_read_stream::lowest_layer]
 
-Get a reference to the lowest layer.
+[indexterm2 lowest_layer..buffered_read_stream] Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -27333,7 +27623,7 @@
 
 [section:lowest_layer_type buffered_read_stream::lowest_layer_type]
 
-The type of the lowest layer.
+[indexterm2 lowest_layer_type..buffered_read_stream] The type of the lowest layer.
 
   typedef next_layer_type::lowest_layer_type lowest_layer_type;
 
@@ -27346,7 +27636,7 @@
 
 [section:next_layer buffered_read_stream::next_layer]
 
-Get a reference to the next layer.
+[indexterm2 next_layer..buffered_read_stream] Get a reference to the next layer.
 
   next_layer_type & next_layer();
 
@@ -27358,7 +27648,7 @@
 
 [section:next_layer_type buffered_read_stream::next_layer_type]
 
-The type of the next layer.
+[indexterm2 next_layer_type..buffered_read_stream] The type of the next layer.
 
   typedef boost::remove_reference< Stream >::type next_layer_type;
 
@@ -27370,7 +27660,7 @@
 
 [section:peek buffered_read_stream::peek]
 
-Peek at the incoming data on the stream. Returns the number of bytes read. Throws an exception on failure.
+[indexterm2 peek..buffered_read_stream] Peek at the incoming data on the stream. Returns the number of bytes read. Throws an exception on failure.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -27418,7 +27708,7 @@
 
 [section:read_some buffered_read_stream::read_some]
 
-Read some data from the stream. Returns the number of bytes read. Throws an exception on failure.
+[indexterm2 read_some..buffered_read_stream] Read some data from the stream. Returns the number of bytes read. Throws an exception on failure.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -27466,7 +27756,7 @@
 
 [section:write_some buffered_read_stream::write_some]
 
-Write the given data to the stream. Returns the number of bytes written. Throws an exception on failure.
+[indexterm2 write_some..buffered_read_stream] Write the given data to the stream. Returns the number of bytes written. Throws an exception on failure.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -27644,7 +27934,7 @@
 
 [section:async_fill buffered_stream::async_fill]
 
-Start an asynchronous fill.
+[indexterm2 async_fill..buffered_stream] Start an asynchronous fill.
 
   template<
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
@@ -27659,7 +27949,7 @@
 
 [section:async_flush buffered_stream::async_flush]
 
-Start an asynchronous flush.
+[indexterm2 async_flush..buffered_stream] Start an asynchronous flush.
 
   template<
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
@@ -27674,7 +27964,7 @@
 
 [section:async_read_some buffered_stream::async_read_some]
 
-Start an asynchronous read. The buffer into which the data will be read must be valid for the lifetime of the asynchronous operation.
+[indexterm2 async_read_some..buffered_stream] Start an asynchronous read. The buffer into which the data will be read must be valid for the lifetime of the asynchronous operation.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -27691,7 +27981,7 @@
 
 [section:async_write_some buffered_stream::async_write_some]
 
-Start an asynchronous write. The data being written must be valid for the lifetime of the asynchronous operation.
+[indexterm2 async_write_some..buffered_stream] Start an asynchronous write. The data being written must be valid for the lifetime of the asynchronous operation.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -27707,7 +27997,7 @@
 
 [section:buffered_stream buffered_stream::buffered_stream]
 
-Construct, passing the specified argument to initialise the next layer.
+[indexterm2 buffered_stream..buffered_stream] Construct, passing the specified argument to initialise the next layer.
 
   template<
       typename Arg>
@@ -27757,7 +28047,7 @@
 
 [section:close buffered_stream::close]
 
-Close the stream.
+[indexterm2 close..buffered_stream] Close the stream.
 
   void ``[link boost_asio.reference.buffered_stream.close.overload1 close]``();
 
@@ -27793,7 +28083,7 @@
 
 [section:fill buffered_stream::fill]
 
-Fill the buffer with some data. Returns the number of bytes placed in the buffer as a result of the operation. Throws an exception on failure.
+[indexterm2 fill..buffered_stream] Fill the buffer with some data. Returns the number of bytes placed in the buffer as a result of the operation. Throws an exception on failure.
 
   std::size_t ``[link boost_asio.reference.buffered_stream.fill.overload1 fill]``();
 
@@ -27829,7 +28119,7 @@
 
 [section:flush buffered_stream::flush]
 
-Flush all data from the buffer to the next layer. Returns the number of bytes written to the next layer on the last write operation. Throws an exception on failure.
+[indexterm2 flush..buffered_stream] Flush all data from the buffer to the next layer. Returns the number of bytes written to the next layer on the last write operation. Throws an exception on failure.
 
   std::size_t ``[link boost_asio.reference.buffered_stream.flush.overload1 flush]``();
 
@@ -27866,7 +28156,7 @@
 
 [section:get_io_service buffered_stream::get_io_service]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..buffered_stream] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -27877,7 +28167,7 @@
 
 [section:in_avail buffered_stream::in_avail]
 
-Determine the amount of data that may be read without blocking.
+[indexterm2 in_avail..buffered_stream] Determine the amount of data that may be read without blocking.
 
   std::size_t ``[link boost_asio.reference.buffered_stream.in_avail.overload1 in_avail]``();
 
@@ -27914,7 +28204,7 @@
 
 [section:io_service buffered_stream::io_service]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..buffered_stream] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -27926,7 +28216,7 @@
 
 [section:lowest_layer buffered_stream::lowest_layer]
 
-Get a reference to the lowest layer.
+[indexterm2 lowest_layer..buffered_stream] Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -27938,7 +28228,7 @@
 
 [section:lowest_layer_type buffered_stream::lowest_layer_type]
 
-The type of the lowest layer.
+[indexterm2 lowest_layer_type..buffered_stream] The type of the lowest layer.
 
   typedef next_layer_type::lowest_layer_type lowest_layer_type;
 
@@ -27951,7 +28241,7 @@
 
 [section:next_layer buffered_stream::next_layer]
 
-Get a reference to the next layer.
+[indexterm2 next_layer..buffered_stream] Get a reference to the next layer.
 
   next_layer_type & next_layer();
 
@@ -27963,7 +28253,7 @@
 
 [section:next_layer_type buffered_stream::next_layer_type]
 
-The type of the next layer.
+[indexterm2 next_layer_type..buffered_stream] The type of the next layer.
 
   typedef boost::remove_reference< Stream >::type next_layer_type;
 
@@ -27975,7 +28265,7 @@
 
 [section:peek buffered_stream::peek]
 
-Peek at the incoming data on the stream. Returns the number of bytes read. Throws an exception on failure.
+[indexterm2 peek..buffered_stream] Peek at the incoming data on the stream. Returns the number of bytes read. Throws an exception on failure.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -28023,7 +28313,7 @@
 
 [section:read_some buffered_stream::read_some]
 
-Read some data from the stream. Returns the number of bytes read. Throws an exception on failure.
+[indexterm2 read_some..buffered_stream] Read some data from the stream. Returns the number of bytes read. Throws an exception on failure.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -28071,7 +28361,7 @@
 
 [section:write_some buffered_stream::write_some]
 
-Write the given data to the stream. Returns the number of bytes written. Throws an exception on failure.
+[indexterm2 write_some..buffered_stream] Write the given data to the stream. Returns the number of bytes written. Throws an exception on failure.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -28250,7 +28540,7 @@
 
 [section:async_flush buffered_write_stream::async_flush]
 
-Start an asynchronous flush.
+[indexterm2 async_flush..buffered_write_stream] Start an asynchronous flush.
 
   template<
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
@@ -28265,7 +28555,7 @@
 
 [section:async_read_some buffered_write_stream::async_read_some]
 
-Start an asynchronous read. The buffer into which the data will be read must be valid for the lifetime of the asynchronous operation.
+[indexterm2 async_read_some..buffered_write_stream] Start an asynchronous read. The buffer into which the data will be read must be valid for the lifetime of the asynchronous operation.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -28282,7 +28572,7 @@
 
 [section:async_write_some buffered_write_stream::async_write_some]
 
-Start an asynchronous write. The data being written must be valid for the lifetime of the asynchronous operation.
+[indexterm2 async_write_some..buffered_write_stream] Start an asynchronous write. The data being written must be valid for the lifetime of the asynchronous operation.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -28298,7 +28588,7 @@
 
 [section:buffered_write_stream buffered_write_stream::buffered_write_stream]
 
-Construct, passing the specified argument to initialise the next layer.
+[indexterm2 buffered_write_stream..buffered_write_stream] Construct, passing the specified argument to initialise the next layer.
 
   template<
       typename Arg>
@@ -28346,7 +28636,7 @@
 
 [section:close buffered_write_stream::close]
 
-Close the stream.
+[indexterm2 close..buffered_write_stream] Close the stream.
 
   void ``[link boost_asio.reference.buffered_write_stream.close.overload1 close]``();
 
@@ -28383,7 +28673,7 @@
 
 [section:default_buffer_size buffered_write_stream::default_buffer_size]
 
-The default buffer size.
+[indexterm2 default_buffer_size..buffered_write_stream] The default buffer size.
 
   static const std::size_t default_buffer_size = implementation_defined;
 
@@ -28394,7 +28684,7 @@
 
 [section:flush buffered_write_stream::flush]
 
-Flush all data from the buffer to the next layer. Returns the number of bytes written to the next layer on the last write operation. Throws an exception on failure.
+[indexterm2 flush..buffered_write_stream] Flush all data from the buffer to the next layer. Returns the number of bytes written to the next layer on the last write operation. Throws an exception on failure.
 
   std::size_t ``[link boost_asio.reference.buffered_write_stream.flush.overload1 flush]``();
 
@@ -28431,7 +28721,7 @@
 
 [section:get_io_service buffered_write_stream::get_io_service]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..buffered_write_stream] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -28442,7 +28732,7 @@
 
 [section:in_avail buffered_write_stream::in_avail]
 
-Determine the amount of data that may be read without blocking.
+[indexterm2 in_avail..buffered_write_stream] Determine the amount of data that may be read without blocking.
 
   std::size_t ``[link boost_asio.reference.buffered_write_stream.in_avail.overload1 in_avail]``();
 
@@ -28479,7 +28769,7 @@
 
 [section:io_service buffered_write_stream::io_service]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..buffered_write_stream] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -28491,7 +28781,7 @@
 
 [section:lowest_layer buffered_write_stream::lowest_layer]
 
-Get a reference to the lowest layer.
+[indexterm2 lowest_layer..buffered_write_stream] Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -28503,7 +28793,7 @@
 
 [section:lowest_layer_type buffered_write_stream::lowest_layer_type]
 
-The type of the lowest layer.
+[indexterm2 lowest_layer_type..buffered_write_stream] The type of the lowest layer.
 
   typedef next_layer_type::lowest_layer_type lowest_layer_type;
 
@@ -28516,7 +28806,7 @@
 
 [section:next_layer buffered_write_stream::next_layer]
 
-Get a reference to the next layer.
+[indexterm2 next_layer..buffered_write_stream] Get a reference to the next layer.
 
   next_layer_type & next_layer();
 
@@ -28528,7 +28818,7 @@
 
 [section:next_layer_type buffered_write_stream::next_layer_type]
 
-The type of the next layer.
+[indexterm2 next_layer_type..buffered_write_stream] The type of the next layer.
 
   typedef boost::remove_reference< Stream >::type next_layer_type;
 
@@ -28540,7 +28830,7 @@
 
 [section:peek buffered_write_stream::peek]
 
-Peek at the incoming data on the stream. Returns the number of bytes read. Throws an exception on failure.
+[indexterm2 peek..buffered_write_stream] Peek at the incoming data on the stream. Returns the number of bytes read. Throws an exception on failure.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -28588,7 +28878,7 @@
 
 [section:read_some buffered_write_stream::read_some]
 
-Read some data from the stream. Returns the number of bytes read. Throws an exception on failure.
+[indexterm2 read_some..buffered_write_stream] Read some data from the stream. Returns the number of bytes read. Throws an exception on failure.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -28636,7 +28926,7 @@
 
 [section:write_some buffered_write_stream::write_some]
 
-Write the given data to the stream. Returns the number of bytes written. Throws an exception on failure.
+[indexterm2 write_some..buffered_write_stream] Write the given data to the stream. Returns the number of bytes written. Throws an exception on failure.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -28688,10 +28978,10 @@
 
 [section:buffers_begin buffers_begin]
 
-Construct an iterator representing the beginning of the buffers' data.
+[indexterm1 buffers_begin] Construct an iterator representing the beginning of the buffers' data.
 
   template<
- typename ``[link boost_asio.reference.BufferSequence BufferSequence]``>
+ typename BufferSequence>
   buffers_iterator< BufferSequence > buffers_begin(
       const BufferSequence & buffers);
 
@@ -28703,10 +28993,10 @@
 
 [section:buffers_end buffers_end]
 
-Construct an iterator representing the end of the buffers' data.
+[indexterm1 buffers_end] Construct an iterator representing the end of the buffers' data.
 
   template<
- typename ``[link boost_asio.reference.BufferSequence BufferSequence]``>
+ typename BufferSequence>
   buffers_iterator< BufferSequence > buffers_end(
       const BufferSequence & buffers);
 
@@ -28720,8 +29010,8 @@
 A random access iterator over the bytes in a buffer sequence.
 
   template<
- typename ``[link boost_asio.reference.BufferSequence BufferSequence]``,
- typename ``[link boost_asio.reference.ByteType ByteType]`` = char>
+ typename BufferSequence,
+ typename ByteType = char>
   class buffers_iterator
 
 
@@ -28749,7 +29039,7 @@
 
 [section:begin buffers_iterator::begin]
 
-Construct an iterator representing the beginning of the buffers' data.
+[indexterm2 begin..buffers_iterator] Construct an iterator representing the beginning of the buffers' data.
 
   static buffers_iterator begin(
       const BufferSequence & buffers);
@@ -28762,7 +29052,7 @@
 
 [section:buffers_iterator buffers_iterator::buffers_iterator]
 
-Default constructor. Creates an iterator in an undefined state.
+[indexterm2 buffers_iterator..buffers_iterator] Default constructor. Creates an iterator in an undefined state.
 
   buffers_iterator();
 
@@ -28774,7 +29064,7 @@
 
 [section:end buffers_iterator::end]
 
-Construct an iterator representing the end of the buffers' data.
+[indexterm2 end..buffers_iterator] Construct an iterator representing the end of the buffers' data.
 
   static buffers_iterator end(
       const BufferSequence & buffers);
@@ -28831,10 +29121,10 @@
 
 [section:buffer_cast const_buffer::buffer_cast]
 
-Cast a non-modifiable buffer to a specified pointer to POD type.
+[indexterm2 buffer_cast..const_buffer] Cast a non-modifiable buffer to a specified pointer to POD type.
 
   template<
- typename ``[link boost_asio.reference.PointerToPodType PointerToPodType]``>
+ typename PointerToPodType>
   PointerToPodType buffer_cast(
       const const_buffer & b);
 
@@ -28846,7 +29136,7 @@
 
 [section:buffer_size const_buffer::buffer_size]
 
-Get the number of bytes in a non-modifiable buffer.
+[indexterm2 buffer_size..const_buffer] Get the number of bytes in a non-modifiable buffer.
 
   std::size_t buffer_size(
       const const_buffer & b);
@@ -28858,7 +29148,7 @@
 
 [section:const_buffer const_buffer::const_buffer]
 
-Construct an empty buffer.
+[indexterm2 const_buffer..const_buffer] Construct an empty buffer.
 
   ``[link boost_asio.reference.const_buffer.const_buffer.overload1 const_buffer]``();
 
@@ -28912,7 +29202,7 @@
 
 [section:operator_plus_ const_buffer::operator+]
 
-Create a new non-modifiable buffer that is offset from the start of another.
+[indexterm2 operator+..const_buffer] Create a new non-modifiable buffer that is offset from the start of another.
 
   const_buffer ``[link boost_asio.reference.const_buffer.operator_plus_.overload1 operator+]``(
       const const_buffer & b,
@@ -28994,7 +29284,7 @@
   
   [
     [[link boost_asio.reference.const_buffers_1.const_buffers_1 [*const_buffers_1]]]
- [Construct to represent a single non-modifiable buffer. ]
+ [Construct to represent a given memory range. ]
   ]
   
   [
@@ -29028,7 +29318,7 @@
 
 [section:begin const_buffers_1::begin]
 
-Get a random-access iterator to the first element.
+[indexterm2 begin..const_buffers_1] Get a random-access iterator to the first element.
 
   const_iterator begin() const;
 
@@ -29043,10 +29333,10 @@
 
 ['Inherited from const_buffer.]
 
-Cast a non-modifiable buffer to a specified pointer to POD type.
+[indexterm2 buffer_cast..const_buffers_1] Cast a non-modifiable buffer to a specified pointer to POD type.
 
   template<
- typename ``[link boost_asio.reference.PointerToPodType PointerToPodType]``>
+ typename PointerToPodType>
   PointerToPodType buffer_cast(
       const const_buffer & b);
 
@@ -29061,7 +29351,7 @@
 
 ['Inherited from const_buffer.]
 
-Get the number of bytes in a non-modifiable buffer.
+[indexterm2 buffer_size..const_buffers_1] Get the number of bytes in a non-modifiable buffer.
 
   std::size_t buffer_size(
       const const_buffer & b);
@@ -29071,9 +29361,34 @@
 [endsect]
 
 
-
 [section:const_buffers_1 const_buffers_1::const_buffers_1]
 
+[indexterm2 const_buffers_1..const_buffers_1] Construct to represent a given memory range.
+
+ ``[link boost_asio.reference.const_buffers_1.const_buffers_1.overload1 const_buffers_1]``(
+ const void * data,
+ std::size_t size);
+
+ ``[link boost_asio.reference.const_buffers_1.const_buffers_1.overload2 const_buffers_1]``(
+ const const_buffer & b);
+
+
+[section:overload1 const_buffers_1::const_buffers_1 (1 of 2 overloads)]
+
+Construct to represent a given memory range.
+
+ const_buffers_1(
+ const void * data,
+ std::size_t size);
+
+
+
+[endsect]
+
+
+
+[section:overload2 const_buffers_1::const_buffers_1 (2 of 2 overloads)]
+
 Construct to represent a single non-modifiable buffer.
 
   const_buffers_1(
@@ -29084,10 +29399,12 @@
 [endsect]
 
 
+[endsect]
+
 
 [section:const_iterator const_buffers_1::const_iterator]
 
-A random-access iterator type that may be used to read elements.
+[indexterm2 const_iterator..const_buffers_1] A random-access iterator type that may be used to read elements.
 
   typedef const const_buffer * const_iterator;
 
@@ -29100,7 +29417,7 @@
 
 [section:end const_buffers_1::end]
 
-Get a random-access iterator for one past the last element.
+[indexterm2 end..const_buffers_1] Get a random-access iterator for one past the last element.
 
   const_iterator end() const;
 
@@ -29111,7 +29428,7 @@
 
 [section:operator_plus_ const_buffers_1::operator+]
 
-Create a new non-modifiable buffer that is offset from the start of another.
+[indexterm2 operator+..const_buffers_1] Create a new non-modifiable buffer that is offset from the start of another.
 
   const_buffer ``[link boost_asio.reference.const_buffers_1.operator_plus_.overload1 operator+]``(
       const const_buffer & b,
@@ -29160,7 +29477,7 @@
 
 [section:value_type const_buffers_1::value_type]
 
-The type for each element in the list of buffers.
+[indexterm2 value_type..const_buffers_1] The type for each element in the list of buffers.
 
   typedef const_buffer value_type;
 
@@ -29426,7 +29743,7 @@
 
 [section:assign datagram_socket_service::assign]
 
-Assign an existing native socket to a datagram socket.
+[indexterm2 assign..datagram_socket_service] Assign an existing native socket to a datagram socket.
 
   boost::system::error_code assign(
       implementation_type & impl,
@@ -29442,7 +29759,7 @@
 
 [section:async_connect datagram_socket_service::async_connect]
 
-Start an asynchronous connect.
+[indexterm2 async_connect..datagram_socket_service] Start an asynchronous connect.
 
   template<
       typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
@@ -29459,7 +29776,7 @@
 
 [section:async_receive datagram_socket_service::async_receive]
 
-Start an asynchronous receive.
+[indexterm2 async_receive..datagram_socket_service] Start an asynchronous receive.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -29478,7 +29795,7 @@
 
 [section:async_receive_from datagram_socket_service::async_receive_from]
 
-Start an asynchronous receive that will get the endpoint of the sender.
+[indexterm2 async_receive_from..datagram_socket_service] Start an asynchronous receive that will get the endpoint of the sender.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -29498,7 +29815,7 @@
 
 [section:async_send datagram_socket_service::async_send]
 
-Start an asynchronous send.
+[indexterm2 async_send..datagram_socket_service] Start an asynchronous send.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -29517,7 +29834,7 @@
 
 [section:async_send_to datagram_socket_service::async_send_to]
 
-Start an asynchronous send.
+[indexterm2 async_send_to..datagram_socket_service] Start an asynchronous send.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -29537,7 +29854,7 @@
 
 [section:at_mark datagram_socket_service::at_mark]
 
-Determine whether the socket is at the out-of-band data mark.
+[indexterm2 at_mark..datagram_socket_service] Determine whether the socket is at the out-of-band data mark.
 
   bool at_mark(
       const implementation_type & impl,
@@ -29551,7 +29868,7 @@
 
 [section:available datagram_socket_service::available]
 
-Determine the number of bytes available for reading.
+[indexterm2 available..datagram_socket_service] Determine the number of bytes available for reading.
 
   std::size_t available(
       const implementation_type & impl,
@@ -29565,7 +29882,7 @@
 
 [section:bind datagram_socket_service::bind]
 
-
+[indexterm2 bind..datagram_socket_service]
 
   boost::system::error_code bind(
       implementation_type & impl,
@@ -29580,7 +29897,7 @@
 
 [section:cancel datagram_socket_service::cancel]
 
-Cancel all asynchronous operations associated with the socket.
+[indexterm2 cancel..datagram_socket_service] Cancel all asynchronous operations associated with the socket.
 
   boost::system::error_code cancel(
       implementation_type & impl,
@@ -29594,7 +29911,7 @@
 
 [section:close datagram_socket_service::close]
 
-Close a datagram socket implementation.
+[indexterm2 close..datagram_socket_service] Close a datagram socket implementation.
 
   boost::system::error_code close(
       implementation_type & impl,
@@ -29608,7 +29925,7 @@
 
 [section:connect datagram_socket_service::connect]
 
-Connect the datagram socket to the specified endpoint.
+[indexterm2 connect..datagram_socket_service] Connect the datagram socket to the specified endpoint.
 
   boost::system::error_code connect(
       implementation_type & impl,
@@ -29623,7 +29940,7 @@
 
 [section:construct datagram_socket_service::construct]
 
-Construct a new datagram socket implementation.
+[indexterm2 construct..datagram_socket_service] Construct a new datagram socket implementation.
 
   void construct(
       implementation_type & impl);
@@ -29636,7 +29953,7 @@
 
 [section:datagram_socket_service datagram_socket_service::datagram_socket_service]
 
-Construct a new datagram socket service for the specified io_service.
+[indexterm2 datagram_socket_service..datagram_socket_service] Construct a new datagram socket service for the specified io_service.
 
   datagram_socket_service(
       boost::asio::io_service & io_service);
@@ -29649,7 +29966,7 @@
 
 [section:destroy datagram_socket_service::destroy]
 
-Destroy a datagram socket implementation.
+[indexterm2 destroy..datagram_socket_service] Destroy a datagram socket implementation.
 
   void destroy(
       implementation_type & impl);
@@ -29662,7 +29979,7 @@
 
 [section:endpoint_type datagram_socket_service::endpoint_type]
 
-The endpoint type.
+[indexterm2 endpoint_type..datagram_socket_service] The endpoint type.
 
   typedef Protocol::endpoint endpoint_type;
 
@@ -29678,7 +29995,7 @@
 
 ['Inherited from io_service.]
 
-Get the io_service object that owns the service.
+[indexterm2 get_io_service..datagram_socket_service] Get the io_service object that owns the service.
 
   boost::asio::io_service & get_io_service();
 
@@ -29690,7 +30007,7 @@
 
 [section:get_option datagram_socket_service::get_option]
 
-Get a socket option.
+[indexterm2 get_option..datagram_socket_service] Get a socket option.
 
   template<
       typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
@@ -29707,7 +30024,7 @@
 
 [section:id datagram_socket_service::id]
 
-The unique service identifier.
+[indexterm2 id..datagram_socket_service] The unique service identifier.
 
   static boost::asio::io_service::id id;
 
@@ -29719,7 +30036,7 @@
 
 [section:implementation_type datagram_socket_service::implementation_type]
 
-The type of a datagram socket.
+[indexterm2 implementation_type..datagram_socket_service] The type of a datagram socket.
 
   typedef implementation_defined implementation_type;
 
@@ -29732,7 +30049,7 @@
 
 [section:io_control datagram_socket_service::io_control]
 
-Perform an IO control command on the socket.
+[indexterm2 io_control..datagram_socket_service] Perform an IO control command on the socket.
 
   template<
       typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
@@ -29752,7 +30069,7 @@
 
 ['Inherited from io_service.]
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+[indexterm2 io_service..datagram_socket_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
   boost::asio::io_service & io_service();
 
@@ -29764,7 +30081,7 @@
 
 [section:is_open datagram_socket_service::is_open]
 
-Determine whether the socket is open.
+[indexterm2 is_open..datagram_socket_service] Determine whether the socket is open.
 
   bool is_open(
       const implementation_type & impl) const;
@@ -29777,7 +30094,7 @@
 
 [section:local_endpoint datagram_socket_service::local_endpoint]
 
-Get the local endpoint.
+[indexterm2 local_endpoint..datagram_socket_service] Get the local endpoint.
 
   endpoint_type local_endpoint(
       const implementation_type & impl,
@@ -29791,7 +30108,7 @@
 
 [section:native datagram_socket_service::native]
 
-Get the native socket implementation.
+[indexterm2 native..datagram_socket_service] Get the native socket implementation.
 
   native_type native(
       implementation_type & impl);
@@ -29804,7 +30121,7 @@
 
 [section:native_type datagram_socket_service::native_type]
 
-The native socket type.
+[indexterm2 native_type..datagram_socket_service] The native socket type.
 
   typedef implementation_defined native_type;
 
@@ -29817,7 +30134,7 @@
 
 [section:open datagram_socket_service::open]
 
-
+[indexterm2 open..datagram_socket_service]
 
   boost::system::error_code open(
       implementation_type & impl,
@@ -29832,7 +30149,7 @@
 
 [section:protocol_type datagram_socket_service::protocol_type]
 
-The protocol type.
+[indexterm2 protocol_type..datagram_socket_service] The protocol type.
 
   typedef Protocol protocol_type;
 
@@ -29845,7 +30162,7 @@
 
 [section:receive datagram_socket_service::receive]
 
-Receive some data from the peer.
+[indexterm2 receive..datagram_socket_service] Receive some data from the peer.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -29863,7 +30180,7 @@
 
 [section:receive_from datagram_socket_service::receive_from]
 
-Receive a datagram with the endpoint of the sender.
+[indexterm2 receive_from..datagram_socket_service] Receive a datagram with the endpoint of the sender.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -29882,7 +30199,7 @@
 
 [section:remote_endpoint datagram_socket_service::remote_endpoint]
 
-Get the remote endpoint.
+[indexterm2 remote_endpoint..datagram_socket_service] Get the remote endpoint.
 
   endpoint_type remote_endpoint(
       const implementation_type & impl,
@@ -29896,7 +30213,7 @@
 
 [section:send datagram_socket_service::send]
 
-Send the given data to the peer.
+[indexterm2 send..datagram_socket_service] Send the given data to the peer.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -29914,7 +30231,7 @@
 
 [section:send_to datagram_socket_service::send_to]
 
-Send a datagram to the specified endpoint.
+[indexterm2 send_to..datagram_socket_service] Send a datagram to the specified endpoint.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -29933,7 +30250,7 @@
 
 [section:set_option datagram_socket_service::set_option]
 
-Set a socket option.
+[indexterm2 set_option..datagram_socket_service] Set a socket option.
 
   template<
       typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
@@ -29950,7 +30267,7 @@
 
 [section:shutdown datagram_socket_service::shutdown]
 
-Disable sends or receives on the socket.
+[indexterm2 shutdown..datagram_socket_service] Disable sends or receives on the socket.
 
   boost::system::error_code shutdown(
       implementation_type & impl,
@@ -29965,7 +30282,7 @@
 
 [section:shutdown_service datagram_socket_service::shutdown_service]
 
-Destroy all user-defined handler objects owned by the service.
+[indexterm2 shutdown_service..datagram_socket_service] Destroy all user-defined handler objects owned by the service.
 
   void shutdown_service();
 
@@ -29980,7 +30297,7 @@
 
 [section:deadline_timer deadline_timer]
 
-Typedef for the typical usage of timer.
+[indexterm1 deadline_timer] Typedef for the typical usage of timer.
 
   typedef basic_deadline_timer< boost::posix_time::ptime > deadline_timer;
 
@@ -30185,7 +30502,7 @@
 Default service implementation for a timer.
 
   template<
- typename ``[link boost_asio.reference.TimeType TimeType]``,
+ typename TimeType,
       typename ``[link boost_asio.reference.TimeTraits TimeTraits]`` = boost::asio::time_traits<TimeType>>
   class deadline_timer_service :
     public io_service::service
@@ -30300,7 +30617,7 @@
 
 [section:async_wait deadline_timer_service::async_wait]
 
-
+[indexterm2 async_wait..deadline_timer_service]
 
   template<
       typename ``[link boost_asio.reference.WaitHandler WaitHandler]``>
@@ -30316,7 +30633,7 @@
 
 [section:cancel deadline_timer_service::cancel]
 
-Cancel any asynchronous wait operations associated with the timer.
+[indexterm2 cancel..deadline_timer_service] Cancel any asynchronous wait operations associated with the timer.
 
   std::size_t cancel(
       implementation_type & impl,
@@ -30330,7 +30647,7 @@
 
 [section:construct deadline_timer_service::construct]
 
-Construct a new timer implementation.
+[indexterm2 construct..deadline_timer_service] Construct a new timer implementation.
 
   void construct(
       implementation_type & impl);
@@ -30343,7 +30660,7 @@
 
 [section:deadline_timer_service deadline_timer_service::deadline_timer_service]
 
-Construct a new timer service for the specified io_service.
+[indexterm2 deadline_timer_service..deadline_timer_service] Construct a new timer service for the specified io_service.
 
   deadline_timer_service(
       boost::asio::io_service & io_service);
@@ -30356,7 +30673,7 @@
 
 [section:destroy deadline_timer_service::destroy]
 
-Destroy a timer implementation.
+[indexterm2 destroy..deadline_timer_service] Destroy a timer implementation.
 
   void destroy(
       implementation_type & impl);
@@ -30369,7 +30686,7 @@
 
 [section:duration_type deadline_timer_service::duration_type]
 
-The duration type.
+[indexterm2 duration_type..deadline_timer_service] The duration type.
 
   typedef traits_type::duration_type duration_type;
 
@@ -30381,7 +30698,7 @@
 
 [section:expires_at deadline_timer_service::expires_at]
 
-Get the expiry time for the timer as an absolute time.
+[indexterm2 expires_at..deadline_timer_service] Get the expiry time for the timer as an absolute time.
 
   time_type ``[link boost_asio.reference.deadline_timer_service.expires_at.overload1 expires_at]``(
       const implementation_type & impl) const;
@@ -30423,7 +30740,7 @@
 
 [section:expires_from_now deadline_timer_service::expires_from_now]
 
-Get the expiry time for the timer relative to now.
+[indexterm2 expires_from_now..deadline_timer_service] Get the expiry time for the timer relative to now.
 
   duration_type ``[link boost_asio.reference.deadline_timer_service.expires_from_now.overload1 expires_from_now]``(
       const implementation_type & impl) const;
@@ -30469,7 +30786,7 @@
 
 ['Inherited from io_service.]
 
-Get the io_service object that owns the service.
+[indexterm2 get_io_service..deadline_timer_service] Get the io_service object that owns the service.
 
   boost::asio::io_service & get_io_service();
 
@@ -30481,7 +30798,7 @@
 
 [section:id deadline_timer_service::id]
 
-The unique service identifier.
+[indexterm2 id..deadline_timer_service] The unique service identifier.
 
   static boost::asio::io_service::id id;
 
@@ -30493,7 +30810,7 @@
 
 [section:implementation_type deadline_timer_service::implementation_type]
 
-The implementation type of the deadline timer.
+[indexterm2 implementation_type..deadline_timer_service] The implementation type of the deadline timer.
 
   typedef implementation_defined implementation_type;
 
@@ -30509,7 +30826,7 @@
 
 ['Inherited from io_service.]
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+[indexterm2 io_service..deadline_timer_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
   boost::asio::io_service & io_service();
 
@@ -30521,7 +30838,7 @@
 
 [section:shutdown_service deadline_timer_service::shutdown_service]
 
-Destroy all user-defined handler objects owned by the service.
+[indexterm2 shutdown_service..deadline_timer_service] Destroy all user-defined handler objects owned by the service.
 
   void shutdown_service();
 
@@ -30533,7 +30850,7 @@
 
 [section:time_type deadline_timer_service::time_type]
 
-The time type.
+[indexterm2 time_type..deadline_timer_service] The time type.
 
   typedef traits_type::time_type time_type;
 
@@ -30546,7 +30863,7 @@
 
 [section:traits_type deadline_timer_service::traits_type]
 
-The time traits type.
+[indexterm2 traits_type..deadline_timer_service] The time traits type.
 
   typedef TimeTraits traits_type;
 
@@ -30559,7 +30876,7 @@
 
 [section:wait deadline_timer_service::wait]
 
-
+[indexterm2 wait..deadline_timer_service]
 
   void wait(
       implementation_type & impl,
@@ -30576,7 +30893,7 @@
 
 [section:error__addrinfo_category error::addrinfo_category]
 
-
+[indexterm1 error::addrinfo_category]
 
   static const boost::system::error_category & addrinfo_category = boost::asio::error::get_addrinfo_category();
 
@@ -30588,7 +30905,7 @@
 
 [section:error__addrinfo_errors error::addrinfo_errors]
 
-
+[indexterm1 error::addrinfo_errors]
 
   enum addrinfo_errors
 
@@ -30615,7 +30932,7 @@
 
 [section:error__basic_errors error::basic_errors]
 
-
+[indexterm1 error::basic_errors]
 
   enum basic_errors
 
@@ -30797,7 +31114,7 @@
 
 [section:error__get_addrinfo_category error::get_addrinfo_category]
 
-
+[indexterm1 error::get_addrinfo_category]
 
   const boost::system::error_category & get_addrinfo_category();
 
@@ -30809,7 +31126,7 @@
 
 [section:error__get_misc_category error::get_misc_category]
 
-
+[indexterm1 error::get_misc_category]
 
   const boost::system::error_category & get_misc_category();
 
@@ -30821,7 +31138,7 @@
 
 [section:error__get_netdb_category error::get_netdb_category]
 
-
+[indexterm1 error::get_netdb_category]
 
   const boost::system::error_category & get_netdb_category();
 
@@ -30833,7 +31150,7 @@
 
 [section:error__get_ssl_category error::get_ssl_category]
 
-
+[indexterm1 error::get_ssl_category]
 
   const boost::system::error_category & get_ssl_category();
 
@@ -30845,7 +31162,7 @@
 
 [section:error__get_system_category error::get_system_category]
 
-
+[indexterm1 error::get_system_category]
 
   const boost::system::error_category & get_system_category();
 
@@ -30856,8 +31173,8 @@
 
 [section:error__make_error_code error::make_error_code]
 
-
-
+[indexterm1 error::make_error_code]
+
   boost::system::error_code ``[link boost_asio.reference.error__make_error_code.overload1 make_error_code]``(
       basic_errors e);
 
@@ -30943,7 +31260,7 @@
 
 [section:error__misc_category error::misc_category]
 
-
+[indexterm1 error::misc_category]
 
   static const boost::system::error_category & misc_category = boost::asio::error::get_misc_category();
 
@@ -30955,7 +31272,7 @@
 
 [section:error__misc_errors error::misc_errors]
 
-
+[indexterm1 error::misc_errors]
 
   enum misc_errors
 
@@ -30992,7 +31309,7 @@
 
 [section:error__netdb_category error::netdb_category]
 
-
+[indexterm1 error::netdb_category]
 
   static const boost::system::error_category & netdb_category = boost::asio::error::get_netdb_category();
 
@@ -31004,7 +31321,7 @@
 
 [section:error__netdb_errors error::netdb_errors]
 
-
+[indexterm1 error::netdb_errors]
 
   enum netdb_errors
 
@@ -31041,7 +31358,7 @@
 
 [section:error__ssl_category error::ssl_category]
 
-
+[indexterm1 error::ssl_category]
 
   static const boost::system::error_category & ssl_category = boost::asio::error::get_ssl_category();
 
@@ -31053,7 +31370,7 @@
 
 [section:error__ssl_errors error::ssl_errors]
 
-
+[indexterm1 error::ssl_errors]
 
   enum ssl_errors
 
@@ -31065,7 +31382,7 @@
 
 [section:error__system_category error::system_category]
 
-
+[indexterm1 error::system_category]
 
   static const boost::system::error_category & system_category = boost::asio::error::get_system_category();
 
@@ -31077,7 +31394,7 @@
 
 [section:has_service has_service]
 
-
+[indexterm1 has_service]
 
   template<
       typename ``[link boost_asio.reference.Service Service]``>
@@ -31127,7 +31444,7 @@
 
 [section:invalid_service_owner invalid_service_owner::invalid_service_owner]
 
-
+[indexterm2 invalid_service_owner..invalid_service_owner]
 
   invalid_service_owner();
 
@@ -31314,9 +31631,41 @@
 
 
 
+[heading Stopping the io_service from running out of work]
+
+
+
+Some applications may need to prevent an io\_service's run() call from returning when there is no more work to do. For example, the io_service may be being run in a background thread that is launched prior to the application's asynchronous operations. The run() call may be kept running by creating an object of type
+[link boost_asio.reference.io_service__work io_service::work]:
+
+
+
+ boost::asio::io_service io_service;
+ boost::asio::io_service::work work(io_service);
+ ...
+
+
+
+
+To effect a shutdown, the application will then need to call the io\_service's stop() member function. This will cause the io_servicerun() call to return as soon as possible, abandoning unfinished operations and without permitting ready handlers to be dispatched.
+
+Alternatively, if the application requires that all operations and handlers be allowed to finish normally, the work object may be explicitly destroyed.
+
+
+
+ boost::asio::io_service io_service;
+ auto_ptr<boost::asio::io_service::work> work(
+ new boost::asio::io_service::work(io_service));
+ ...
+ work.reset(); // Allow run() to exit.
+
+
+
+
+
 [section:add_service io_service::add_service]
 
-Add a service object to the io_service.
+[indexterm2 add_service..io_service] Add a service object to the io_service.
 
   template<
       typename ``[link boost_asio.reference.Service Service]``>
@@ -31338,7 +31687,6 @@
 [[svc][The service object. On success, ownership of the service object is transferred to the io\_service. When the io\_service object is destroyed, it will destroy the service object by performing:
 ``
    delete static_cast<io_service::service*>(svc)
-
 ``
 ]]
 
@@ -31363,7 +31711,7 @@
 
 [section:dispatch io_service::dispatch]
 
-Request the io_service to invoke the given handler.
+[indexterm2 dispatch..io_service] Request the io_service to invoke the given handler.
 
   template<
       typename ``[link boost_asio.reference.CompletionHandler CompletionHandler]``>
@@ -31384,7 +31732,6 @@
 [[handler][The handler to be called. The io\_service will make a copy of the handler object as required. The function signature of the handler must be:
 ``
    void handler();
-
 ``
 ]]
 
@@ -31398,7 +31745,7 @@
 
 [section:has_service io_service::has_service]
 
-Determine if an io_service contains a specified service type.
+[indexterm2 has_service..io_service] Determine if an io_service contains a specified service type.
 
   template<
       typename ``[link boost_asio.reference.Service Service]``>
@@ -31429,7 +31776,7 @@
 
 [section:io_service io_service::io_service]
 
-Constructor.
+[indexterm2 io_service..io_service] Constructor.
 
   ``[link boost_asio.reference.io_service.io_service.overload1 io_service]``();
 
@@ -31478,7 +31825,7 @@
 
 [section:poll io_service::poll]
 
-Run the io_service's event processing loop to execute ready handlers.
+[indexterm2 poll..io_service] Run the io_service's event processing loop to execute ready handlers.
 
   std::size_t ``[link boost_asio.reference.io_service.poll.overload1 poll]``();
 
@@ -31548,7 +31895,7 @@
 
 [section:poll_one io_service::poll_one]
 
-Run the io_service's event processing loop to execute one ready handler.
+[indexterm2 poll_one..io_service] Run the io_service's event processing loop to execute one ready handler.
 
   std::size_t ``[link boost_asio.reference.io_service.poll_one.overload1 poll_one]``();
 
@@ -31619,7 +31966,7 @@
 
 [section:post io_service::post]
 
-Request the io_service to invoke the given handler and return immediately.
+[indexterm2 post..io_service] Request the io_service to invoke the given handler and return immediately.
 
   template<
       typename ``[link boost_asio.reference.CompletionHandler CompletionHandler]``>
@@ -31640,7 +31987,6 @@
 [[handler][The handler to be called. The io\_service will make a copy of the handler object as required. The function signature of the handler must be:
 ``
    void handler();
-
 ``
 ]]
 
@@ -31654,7 +32000,7 @@
 
 [section:reset io_service::reset]
 
-Reset the io_service in preparation for a subsequent run() invocation.
+[indexterm2 reset..io_service] Reset the io_service in preparation for a subsequent run() invocation.
 
   void reset();
 
@@ -31669,7 +32015,7 @@
 
 [section:run io_service::run]
 
-Run the io_service's event processing loop.
+[indexterm2 run..io_service] Run the io_service's event processing loop.
 
   std::size_t ``[link boost_asio.reference.io_service.run.overload1 run]``();
 
@@ -31700,10 +32046,14 @@
 
 [variablelist
   
-[[boost::system::system_error][Thrown on failure. ]]
+[[boost::system::system_error][Thrown on failure.]]
 
 ]
 
+[heading Remarks]
+
+The poll() function may also be used to dispatch ready handlers, but without blocking.
+
 
 
 [endsect]
@@ -31736,7 +32086,11 @@
 
 [heading Return Value]
       
-The number of handlers that were executed.
+The number of handlers that were executed.
+
+[heading Remarks]
+
+The poll() function may also be used to dispatch ready handlers, but without blocking.
 
 
 
@@ -31747,7 +32101,7 @@
 
 [section:run_one io_service::run_one]
 
-Run the io_service's event processing loop to execute at most one handler.
+[indexterm2 run_one..io_service] Run the io_service's event processing loop to execute at most one handler.
 
   std::size_t ``[link boost_asio.reference.io_service.run_one.overload1 run_one]``();
 
@@ -31818,7 +32172,7 @@
 
 [section:stop io_service::stop]
 
-Stop the io_service's event processing loop.
+[indexterm2 stop..io_service] Stop the io_service's event processing loop.
 
   void stop();
 
@@ -31832,7 +32186,7 @@
 
 [section:use_service io_service::use_service]
 
-Obtain the service object corresponding to the given type.
+[indexterm2 use_service..io_service] Obtain the service object corresponding to the given type.
 
   template<
       typename ``[link boost_asio.reference.Service Service]``>
@@ -31864,7 +32218,7 @@
 
 [section:wrap io_service::wrap]
 
-Create a new handler that automatically dispatches the wrapped handler on the io_service.
+[indexterm2 wrap..io_service] Create a new handler that automatically dispatches the wrapped handler on the io_service.
 
   template<
       typename ``[link boost_asio.reference.Handler Handler]``>
@@ -31883,7 +32237,6 @@
 [[handler][The handler to be wrapped. The io\_service will make a copy of the handler object as required. The function signature of the handler must be:
 ``
    void handler(A1 a1, ... An an);
-
 ``
 ]]
 
@@ -31921,7 +32274,7 @@
 
 [section:_io_service io_service::~io_service]
 
-Destructor.
+[indexterm2 ~io_service..io_service] Destructor.
 
   ~io_service();
 
@@ -31955,7 +32308,7 @@
 
 [section:id io_service::id::id]
 
-Constructor.
+[indexterm2 id..io_service::id] Constructor.
 
   id();
 
@@ -32010,7 +32363,7 @@
 
 [section:get_io_service io_service::service::get_io_service]
 
-Get the io_service object that owns the service.
+[indexterm2 get_io_service..io_service::service] Get the io_service object that owns the service.
 
   boost::asio::io_service & get_io_service();
 
@@ -32022,7 +32375,7 @@
 
 [section:io_service io_service::service::io_service]
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+[indexterm2 io_service..io_service::service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
   boost::asio::io_service & io_service();
 
@@ -32034,7 +32387,7 @@
 
 [section:service io_service::service::service]
 
-Constructor.
+[indexterm2 service..io_service::service] Constructor.
 
   service(
       boost::asio::io_service & owner);
@@ -32058,7 +32411,7 @@
 
 [section:_service io_service::service::~service]
 
-Destructor.
+[indexterm2 ~service..io_service::service] Destructor.
 
   virtual ~service();
 
@@ -32131,7 +32484,7 @@
 
 [section:dispatch io_service::strand::dispatch]
 
-Request the strand to invoke the given handler.
+[indexterm2 dispatch..io_service::strand] Request the strand to invoke the given handler.
 
   template<
       typename ``[link boost_asio.reference.Handler Handler]``>
@@ -32154,7 +32507,6 @@
 [[handler][The handler to be called. The strand will make a copy of the handler object as required. The function signature of the handler must be:
 ``
    void handler();
-
 ``
 ]]
 
@@ -32168,7 +32520,7 @@
 
 [section:get_io_service io_service::strand::get_io_service]
 
-Get the io_service associated with the strand.
+[indexterm2 get_io_service..io_service::strand] Get the io_service associated with the strand.
 
   boost::asio::io_service & get_io_service();
 
@@ -32188,7 +32540,7 @@
 
 [section:io_service io_service::strand::io_service]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the strand.
+[indexterm2 io_service..io_service::strand] (Deprecated: use get_io_service().) Get the io_service associated with the strand.
 
   boost::asio::io_service & io_service();
 
@@ -32208,7 +32560,7 @@
 
 [section:post io_service::strand::post]
 
-Request the strand to invoke the given handler and return immediately.
+[indexterm2 post..io_service::strand] Request the strand to invoke the given handler and return immediately.
 
   template<
       typename ``[link boost_asio.reference.Handler Handler]``>
@@ -32229,7 +32581,6 @@
 [[handler][The handler to be called. The strand will make a copy of the handler object as required. The function signature of the handler must be:
 ``
    void handler();
-
 ``
 ]]
 
@@ -32243,7 +32594,7 @@
 
 [section:strand io_service::strand::strand]
 
-Constructor.
+[indexterm2 strand..io_service::strand] Constructor.
 
   strand(
       boost::asio::io_service & io_service);
@@ -32269,7 +32620,7 @@
 
 [section:wrap io_service::strand::wrap]
 
-Create a new handler that automatically dispatches the wrapped handler on the strand.
+[indexterm2 wrap..io_service::strand] Create a new handler that automatically dispatches the wrapped handler on the strand.
 
   template<
       typename ``[link boost_asio.reference.Handler Handler]``>
@@ -32288,7 +32639,6 @@
 [[handler][The handler to be wrapped. The strand will make a copy of the handler object as required. The function signature of the handler must be:
 ``
    void handler(A1 a1, ... An an);
-
 ``
 ]]
 
@@ -32326,7 +32676,7 @@
 
 [section:_strand io_service::strand::~strand]
 
-Destructor.
+[indexterm2 ~strand..io_service::strand] Destructor.
 
   ~strand();
 
@@ -32382,7 +32732,7 @@
 
 [section:get_io_service io_service::work::get_io_service]
 
-Get the io_service associated with the work.
+[indexterm2 get_io_service..io_service::work] Get the io_service associated with the work.
 
   boost::asio::io_service & get_io_service();
 
@@ -32394,7 +32744,7 @@
 
 [section:io_service io_service::work::io_service]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the work.
+[indexterm2 io_service..io_service::work] (Deprecated: use get_io_service().) Get the io_service associated with the work.
 
   boost::asio::io_service & io_service();
 
@@ -32405,7 +32755,7 @@
 
 [section:work io_service::work::work]
 
-Constructor notifies the io_service that work is starting.
+[indexterm2 work..io_service::work] Constructor notifies the io_service that work is starting.
 
   ``[link boost_asio.reference.io_service__work.work.overload1 work]``(
       boost::asio::io_service & io_service);
@@ -32448,7 +32798,7 @@
 
 [section:_work io_service::work::~work]
 
-Destructor notifies the io_service that the work is complete.
+[indexterm2 ~work..io_service::work] Destructor notifies the io_service that the work is complete.
 
   ~work();
 
@@ -32560,7 +32910,7 @@
 
 [section:address ip::address::address]
 
-Default constructor.
+[indexterm2 address..ip::address] Default constructor.
 
   ``[link boost_asio.reference.ip__address.address.overload1 address]``();
 
@@ -32628,7 +32978,7 @@
 
 [section:from_string ip::address::from_string]
 
-Create an address from an IPv4 address string in dotted decimal form, or from an IPv6 address in hexadecimal notation.
+[indexterm2 from_string..ip::address] Create an address from an IPv4 address string in dotted decimal form, or from an IPv6 address in hexadecimal notation.
 
   static address ``[link boost_asio.reference.ip__address.from_string.overload1 from_string]``(
       const char * str);
@@ -32703,7 +33053,7 @@
 
 [section:is_v4 ip::address::is_v4]
 
-Get whether the address is an IP version 4 address.
+[indexterm2 is_v4..ip::address] Get whether the address is an IP version 4 address.
 
   bool is_v4() const;
 
@@ -32715,7 +33065,7 @@
 
 [section:is_v6 ip::address::is_v6]
 
-Get whether the address is an IP version 6 address.
+[indexterm2 is_v6..ip::address] Get whether the address is an IP version 6 address.
 
   bool is_v6() const;
 
@@ -32727,7 +33077,7 @@
 
 [section:operator_not__eq_ ip::address::operator!=]
 
-Compare two addresses for inequality.
+[indexterm2 operator!=..ip::address] Compare two addresses for inequality.
 
   friend bool operator!=(
       const address & a1,
@@ -32741,7 +33091,7 @@
 
 [section:operator_lt_ ip::address::operator<]
 
-Compare addresses for ordering.
+[indexterm2 operator<..ip::address] Compare addresses for ordering.
 
   friend bool operator<(
       const address & a1,
@@ -32755,11 +33105,11 @@
 
 [section:operator_lt__lt_ ip::address::operator<<]
 
-Output an address as a string.
+[indexterm2 operator<<..ip::address] Output an address as a string.
 
   template<
- typename ``[link boost_asio.reference.Elem Elem]``,
- typename ``[link boost_asio.reference.Traits Traits]``>
+ typename Elem,
+ typename Traits>
   std::basic_ostream< Elem, Traits > & operator<<(
       std::basic_ostream< Elem, Traits > & os,
       const address & addr);
@@ -32790,7 +33140,7 @@
 
 [section:operator_eq_ ip::address::operator=]
 
-Assign from another address.
+[indexterm2 operator=..ip::address] Assign from another address.
 
   address & ``[link boost_asio.reference.ip__address.operator_eq_.overload1 operator=]``(
       const address & other);
@@ -32845,7 +33195,7 @@
 
 [section:operator_eq__eq_ ip::address::operator==]
 
-Compare two addresses for equality.
+[indexterm2 operator==..ip::address] Compare two addresses for equality.
 
   friend bool operator==(
       const address & a1,
@@ -32858,7 +33208,7 @@
 
 [section:to_string ip::address::to_string]
 
-Get the address as a string in dotted decimal format.
+[indexterm2 to_string..ip::address] Get the address as a string in dotted decimal format.
 
   std::string ``[link boost_asio.reference.ip__address.to_string.overload1 to_string]``() const;
 
@@ -32895,7 +33245,7 @@
 
 [section:to_v4 ip::address::to_v4]
 
-Get the address as an IP version 4 address.
+[indexterm2 to_v4..ip::address] Get the address as an IP version 4 address.
 
   boost::asio::ip::address_v4 to_v4() const;
 
@@ -32907,7 +33257,7 @@
 
 [section:to_v6 ip::address::to_v6]
 
-Get the address as an IP version 6 address.
+[indexterm2 to_v6..ip::address] Get the address as an IP version 6 address.
 
   boost::asio::ip::address_v6 to_v6() const;
 
@@ -33075,7 +33425,7 @@
 
 [section:address_v4 ip::address_v4::address_v4]
 
-Default constructor.
+[indexterm2 address_v4..ip::address_v4] Default constructor.
 
   ``[link boost_asio.reference.ip__address_v4.address_v4.overload1 address_v4]``();
 
@@ -33144,7 +33494,7 @@
 
 [section:any ip::address_v4::any]
 
-Obtain an address object that represents any address.
+[indexterm2 any..ip::address_v4] Obtain an address object that represents any address.
 
   static address_v4 any();
 
@@ -33155,7 +33505,7 @@
 
 [section:broadcast ip::address_v4::broadcast]
 
-Obtain an address object that represents the broadcast address.
+[indexterm2 broadcast..ip::address_v4] Obtain an address object that represents the broadcast address.
 
   static address_v4 ``[link boost_asio.reference.ip__address_v4.broadcast.overload1 broadcast]``();
 
@@ -33194,7 +33544,7 @@
 
 [section:bytes_type ip::address_v4::bytes_type]
 
-The type used to represent an address as an array of bytes.
+[indexterm2 bytes_type..ip::address_v4] The type used to represent an address as an array of bytes.
 
   typedef boost::array< unsigned char, 4 > bytes_type;
 
@@ -33206,7 +33556,7 @@
 
 [section:from_string ip::address_v4::from_string]
 
-Create an address from an IP address string in dotted decimal form.
+[indexterm2 from_string..ip::address_v4] Create an address from an IP address string in dotted decimal form.
 
   static address_v4 ``[link boost_asio.reference.ip__address_v4.from_string.overload1 from_string]``(
       const char * str);
@@ -33281,7 +33631,7 @@
 
 [section:is_class_a ip::address_v4::is_class_a]
 
-Determine whether the address is a class A address.
+[indexterm2 is_class_a..ip::address_v4] Determine whether the address is a class A address.
 
   bool is_class_a() const;
 
@@ -33293,7 +33643,7 @@
 
 [section:is_class_b ip::address_v4::is_class_b]
 
-Determine whether the address is a class B address.
+[indexterm2 is_class_b..ip::address_v4] Determine whether the address is a class B address.
 
   bool is_class_b() const;
 
@@ -33305,7 +33655,7 @@
 
 [section:is_class_c ip::address_v4::is_class_c]
 
-Determine whether the address is a class C address.
+[indexterm2 is_class_c..ip::address_v4] Determine whether the address is a class C address.
 
   bool is_class_c() const;
 
@@ -33317,7 +33667,7 @@
 
 [section:is_multicast ip::address_v4::is_multicast]
 
-Determine whether the address is a multicast address.
+[indexterm2 is_multicast..ip::address_v4] Determine whether the address is a multicast address.
 
   bool is_multicast() const;
 
@@ -33329,7 +33679,7 @@
 
 [section:loopback ip::address_v4::loopback]
 
-Obtain an address object that represents the loopback address.
+[indexterm2 loopback..ip::address_v4] Obtain an address object that represents the loopback address.
 
   static address_v4 loopback();
 
@@ -33341,7 +33691,7 @@
 
 [section:netmask ip::address_v4::netmask]
 
-Obtain the netmask that corresponds to the address, based on its address class.
+[indexterm2 netmask..ip::address_v4] Obtain the netmask that corresponds to the address, based on its address class.
 
   static address_v4 netmask(
       const address_v4 & addr);
@@ -33354,7 +33704,7 @@
 
 [section:operator_not__eq_ ip::address_v4::operator!=]
 
-Compare two addresses for inequality.
+[indexterm2 operator!=..ip::address_v4] Compare two addresses for inequality.
 
   friend bool operator!=(
       const address_v4 & a1,
@@ -33368,7 +33718,7 @@
 
 [section:operator_lt_ ip::address_v4::operator<]
 
-Compare addresses for ordering.
+[indexterm2 operator<..ip::address_v4] Compare addresses for ordering.
 
   friend bool operator<(
       const address_v4 & a1,
@@ -33382,11 +33732,11 @@
 
 [section:operator_lt__lt_ ip::address_v4::operator<<]
 
-Output an address as a string.
+[indexterm2 operator<<..ip::address_v4] Output an address as a string.
 
   template<
- typename ``[link boost_asio.reference.Elem Elem]``,
- typename ``[link boost_asio.reference.Traits Traits]``>
+ typename Elem,
+ typename Traits>
   std::basic_ostream< Elem, Traits > & operator<<(
       std::basic_ostream< Elem, Traits > & os,
       const address_v4 & addr);
@@ -33418,7 +33768,7 @@
 
 [section:operator_lt__eq_ ip::address_v4::operator<=]
 
-Compare addresses for ordering.
+[indexterm2 operator<=..ip::address_v4] Compare addresses for ordering.
 
   friend bool operator<=(
       const address_v4 & a1,
@@ -33432,7 +33782,7 @@
 
 [section:operator_eq_ ip::address_v4::operator=]
 
-Assign from another address.
+[indexterm2 operator=..ip::address_v4] Assign from another address.
 
   address_v4 & operator=(
       const address_v4 & other);
@@ -33445,7 +33795,7 @@
 
 [section:operator_eq__eq_ ip::address_v4::operator==]
 
-Compare two addresses for equality.
+[indexterm2 operator==..ip::address_v4] Compare two addresses for equality.
 
   friend bool operator==(
       const address_v4 & a1,
@@ -33459,7 +33809,7 @@
 
 [section:operator_gt_ ip::address_v4::operator>]
 
-Compare addresses for ordering.
+[indexterm2 operator>..ip::address_v4] Compare addresses for ordering.
 
   friend bool operator>(
       const address_v4 & a1,
@@ -33473,7 +33823,7 @@
 
 [section:operator_gt__eq_ ip::address_v4::operator>=]
 
-Compare addresses for ordering.
+[indexterm2 operator>=..ip::address_v4] Compare addresses for ordering.
 
   friend bool operator>=(
       const address_v4 & a1,
@@ -33487,7 +33837,7 @@
 
 [section:to_bytes ip::address_v4::to_bytes]
 
-Get the address in bytes.
+[indexterm2 to_bytes..ip::address_v4] Get the address in bytes.
 
   bytes_type to_bytes() const;
 
@@ -33498,7 +33848,7 @@
 
 [section:to_string ip::address_v4::to_string]
 
-Get the address as a string in dotted decimal format.
+[indexterm2 to_string..ip::address_v4] Get the address as a string in dotted decimal format.
 
   std::string ``[link boost_asio.reference.ip__address_v4.to_string.overload1 to_string]``() const;
 
@@ -33535,7 +33885,7 @@
 
 [section:to_ulong ip::address_v4::to_ulong]
 
-Get the address as an unsigned long in host byte order.
+[indexterm2 to_ulong..ip::address_v4] Get the address as an unsigned long in host byte order.
 
   unsigned long to_ulong() const;
 
@@ -33748,7 +34098,7 @@
 
 [section:address_v6 ip::address_v6::address_v6]
 
-Default constructor.
+[indexterm2 address_v6..ip::address_v6] Default constructor.
 
   ``[link boost_asio.reference.ip__address_v6.address_v6.overload1 address_v6]``();
 
@@ -33803,7 +34153,7 @@
 
 [section:any ip::address_v6::any]
 
-Obtain an address object that represents any address.
+[indexterm2 any..ip::address_v6] Obtain an address object that represents any address.
 
   static address_v6 any();
 
@@ -33815,7 +34165,7 @@
 
 [section:bytes_type ip::address_v6::bytes_type]
 
-The type used to represent an address as an array of bytes.
+[indexterm2 bytes_type..ip::address_v6] The type used to represent an address as an array of bytes.
 
   typedef boost::array< unsigned char, 16 > bytes_type;
 
@@ -33827,7 +34177,7 @@
 
 [section:from_string ip::address_v6::from_string]
 
-Create an address from an IP address string.
+[indexterm2 from_string..ip::address_v6] Create an address from an IP address string.
 
   static address_v6 ``[link boost_asio.reference.ip__address_v6.from_string.overload1 from_string]``(
       const char * str);
@@ -33902,7 +34252,7 @@
 
 [section:is_link_local ip::address_v6::is_link_local]
 
-Determine whether the address is link local.
+[indexterm2 is_link_local..ip::address_v6] Determine whether the address is link local.
 
   bool is_link_local() const;
 
@@ -33914,7 +34264,7 @@
 
 [section:is_loopback ip::address_v6::is_loopback]
 
-Determine whether the address is a loopback address.
+[indexterm2 is_loopback..ip::address_v6] Determine whether the address is a loopback address.
 
   bool is_loopback() const;
 
@@ -33926,7 +34276,7 @@
 
 [section:is_multicast ip::address_v6::is_multicast]
 
-Determine whether the address is a multicast address.
+[indexterm2 is_multicast..ip::address_v6] Determine whether the address is a multicast address.
 
   bool is_multicast() const;
 
@@ -33938,7 +34288,7 @@
 
 [section:is_multicast_global ip::address_v6::is_multicast_global]
 
-Determine whether the address is a global multicast address.
+[indexterm2 is_multicast_global..ip::address_v6] Determine whether the address is a global multicast address.
 
   bool is_multicast_global() const;
 
@@ -33950,7 +34300,7 @@
 
 [section:is_multicast_link_local ip::address_v6::is_multicast_link_local]
 
-Determine whether the address is a link-local multicast address.
+[indexterm2 is_multicast_link_local..ip::address_v6] Determine whether the address is a link-local multicast address.
 
   bool is_multicast_link_local() const;
 
@@ -33962,7 +34312,7 @@
 
 [section:is_multicast_node_local ip::address_v6::is_multicast_node_local]
 
-Determine whether the address is a node-local multicast address.
+[indexterm2 is_multicast_node_local..ip::address_v6] Determine whether the address is a node-local multicast address.
 
   bool is_multicast_node_local() const;
 
@@ -33974,7 +34324,7 @@
 
 [section:is_multicast_org_local ip::address_v6::is_multicast_org_local]
 
-Determine whether the address is a org-local multicast address.
+[indexterm2 is_multicast_org_local..ip::address_v6] Determine whether the address is a org-local multicast address.
 
   bool is_multicast_org_local() const;
 
@@ -33986,7 +34336,7 @@
 
 [section:is_multicast_site_local ip::address_v6::is_multicast_site_local]
 
-Determine whether the address is a site-local multicast address.
+[indexterm2 is_multicast_site_local..ip::address_v6] Determine whether the address is a site-local multicast address.
 
   bool is_multicast_site_local() const;
 
@@ -33998,7 +34348,7 @@
 
 [section:is_site_local ip::address_v6::is_site_local]
 
-Determine whether the address is site local.
+[indexterm2 is_site_local..ip::address_v6] Determine whether the address is site local.
 
   bool is_site_local() const;
 
@@ -34010,7 +34360,7 @@
 
 [section:is_unspecified ip::address_v6::is_unspecified]
 
-Determine whether the address is unspecified.
+[indexterm2 is_unspecified..ip::address_v6] Determine whether the address is unspecified.
 
   bool is_unspecified() const;
 
@@ -34022,7 +34372,7 @@
 
 [section:is_v4_compatible ip::address_v6::is_v4_compatible]
 
-Determine whether the address is an IPv4-compatible address.
+[indexterm2 is_v4_compatible..ip::address_v6] Determine whether the address is an IPv4-compatible address.
 
   bool is_v4_compatible() const;
 
@@ -34034,7 +34384,7 @@
 
 [section:is_v4_mapped ip::address_v6::is_v4_mapped]
 
-Determine whether the address is a mapped IPv4 address.
+[indexterm2 is_v4_mapped..ip::address_v6] Determine whether the address is a mapped IPv4 address.
 
   bool is_v4_mapped() const;
 
@@ -34046,7 +34396,7 @@
 
 [section:loopback ip::address_v6::loopback]
 
-Obtain an address object that represents the loopback address.
+[indexterm2 loopback..ip::address_v6] Obtain an address object that represents the loopback address.
 
   static address_v6 loopback();
 
@@ -34058,7 +34408,7 @@
 
 [section:operator_not__eq_ ip::address_v6::operator!=]
 
-Compare two addresses for inequality.
+[indexterm2 operator!=..ip::address_v6] Compare two addresses for inequality.
 
   friend bool operator!=(
       const address_v6 & a1,
@@ -34072,7 +34422,7 @@
 
 [section:operator_lt_ ip::address_v6::operator<]
 
-Compare addresses for ordering.
+[indexterm2 operator<..ip::address_v6] Compare addresses for ordering.
 
   friend bool operator<(
       const address_v6 & a1,
@@ -34086,11 +34436,11 @@
 
 [section:operator_lt__lt_ ip::address_v6::operator<<]
 
-Output an address as a string.
+[indexterm2 operator<<..ip::address_v6] Output an address as a string.
 
   template<
- typename ``[link boost_asio.reference.Elem Elem]``,
- typename ``[link boost_asio.reference.Traits Traits]``>
+ typename Elem,
+ typename Traits>
   std::basic_ostream< Elem, Traits > & operator<<(
       std::basic_ostream< Elem, Traits > & os,
       const address_v6 & addr);
@@ -34122,7 +34472,7 @@
 
 [section:operator_lt__eq_ ip::address_v6::operator<=]
 
-Compare addresses for ordering.
+[indexterm2 operator<=..ip::address_v6] Compare addresses for ordering.
 
   friend bool operator<=(
       const address_v6 & a1,
@@ -34136,7 +34486,7 @@
 
 [section:operator_eq_ ip::address_v6::operator=]
 
-Assign from another address.
+[indexterm2 operator=..ip::address_v6] Assign from another address.
 
   address_v6 & operator=(
       const address_v6 & other);
@@ -34149,7 +34499,7 @@
 
 [section:operator_eq__eq_ ip::address_v6::operator==]
 
-Compare two addresses for equality.
+[indexterm2 operator==..ip::address_v6] Compare two addresses for equality.
 
   friend bool operator==(
       const address_v6 & a1,
@@ -34163,7 +34513,7 @@
 
 [section:operator_gt_ ip::address_v6::operator>]
 
-Compare addresses for ordering.
+[indexterm2 operator>..ip::address_v6] Compare addresses for ordering.
 
   friend bool operator>(
       const address_v6 & a1,
@@ -34177,7 +34527,7 @@
 
 [section:operator_gt__eq_ ip::address_v6::operator>=]
 
-Compare addresses for ordering.
+[indexterm2 operator>=..ip::address_v6] Compare addresses for ordering.
 
   friend bool operator>=(
       const address_v6 & a1,
@@ -34190,7 +34540,7 @@
 
 [section:scope_id ip::address_v6::scope_id]
 
-The scope ID of the address.
+[indexterm2 scope_id..ip::address_v6] The scope ID of the address.
 
   unsigned long ``[link boost_asio.reference.ip__address_v6.scope_id.overload1 scope_id]``() const;
 
@@ -34231,7 +34581,7 @@
 
 [section:to_bytes ip::address_v6::to_bytes]
 
-Get the address in bytes.
+[indexterm2 to_bytes..ip::address_v6] Get the address in bytes.
 
   bytes_type to_bytes() const;
 
@@ -34242,7 +34592,7 @@
 
 [section:to_string ip::address_v6::to_string]
 
-Get the address as a string.
+[indexterm2 to_string..ip::address_v6] Get the address as a string.
 
   std::string ``[link boost_asio.reference.ip__address_v6.to_string.overload1 to_string]``() const;
 
@@ -34279,7 +34629,7 @@
 
 [section:to_v4 ip::address_v6::to_v4]
 
-Converts an IPv4-mapped or IPv4-compatible address to an IPv4 address.
+[indexterm2 to_v4..ip::address_v6] Converts an IPv4-mapped or IPv4-compatible address to an IPv4 address.
 
   address_v4 to_v4() const;
 
@@ -34291,7 +34641,7 @@
 
 [section:v4_compatible ip::address_v6::v4_compatible]
 
-Create an IPv4-compatible IPv6 address.
+[indexterm2 v4_compatible..ip::address_v6] Create an IPv4-compatible IPv6 address.
 
   static address_v6 v4_compatible(
       const address_v4 & addr);
@@ -34304,7 +34654,7 @@
 
 [section:v4_mapped ip::address_v6::v4_mapped]
 
-Create an IPv4-mapped IPv6 address.
+[indexterm2 v4_mapped..ip::address_v6] Create an IPv4-mapped IPv6 address.
 
   static address_v6 v4_mapped(
       const address_v4 & addr);
@@ -34442,7 +34792,7 @@
 
 [section:address ip::basic_endpoint::address]
 
-Get the IP address associated with the endpoint.
+[indexterm2 address..ip::basic_endpoint] Get the IP address associated with the endpoint.
 
   boost::asio::ip::address ``[link boost_asio.reference.ip__basic_endpoint.address.overload1 address]``() const;
 
@@ -34478,7 +34828,7 @@
 
 [section:basic_endpoint ip::basic_endpoint::basic_endpoint]
 
-Default constructor.
+[indexterm2 basic_endpoint..ip::basic_endpoint] Default constructor.
 
   ``[link boost_asio.reference.ip__basic_endpoint.basic_endpoint.overload1 basic_endpoint]``();
 
@@ -34568,7 +34918,7 @@
 
 [section:capacity ip::basic_endpoint::capacity]
 
-Get the capacity of the endpoint in the native type.
+[indexterm2 capacity..ip::basic_endpoint] Get the capacity of the endpoint in the native type.
 
   std::size_t capacity() const;
 
@@ -34579,7 +34929,7 @@
 
 [section:data ip::basic_endpoint::data]
 
-Get the underlying endpoint in the native type.
+[indexterm2 data..ip::basic_endpoint] Get the underlying endpoint in the native type.
 
   data_type * ``[link boost_asio.reference.ip__basic_endpoint.data.overload1 data]``();
 
@@ -34614,7 +34964,7 @@
 
 [section:data_type ip::basic_endpoint::data_type]
 
-The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer.
+[indexterm2 data_type..ip::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;
 
@@ -34627,7 +34977,7 @@
 
 [section:operator_not__eq_ ip::basic_endpoint::operator!=]
 
-Compare two endpoints for inequality.
+[indexterm2 operator!=..ip::basic_endpoint] Compare two endpoints for inequality.
 
   friend bool operator!=(
       const basic_endpoint< InternetProtocol > & e1,
@@ -34641,7 +34991,7 @@
 
 [section:operator_lt_ ip::basic_endpoint::operator<]
 
-Compare endpoints for ordering.
+[indexterm2 operator<..ip::basic_endpoint] Compare endpoints for ordering.
 
   friend bool operator<(
       const basic_endpoint< InternetProtocol > & e1,
@@ -34655,7 +35005,7 @@
 
 [section:operator_lt__lt_ ip::basic_endpoint::operator<<]
 
-Output an endpoint as a string.
+[indexterm2 operator<<..ip::basic_endpoint] Output an endpoint as a string.
 
   std::basic_ostream< Elem, Traits > & operator<<(
       std::basic_ostream< Elem, Traits > & os,
@@ -34688,7 +35038,7 @@
 
 [section:operator_eq_ ip::basic_endpoint::operator=]
 
-Assign from another endpoint.
+[indexterm2 operator=..ip::basic_endpoint] Assign from another endpoint.
 
   basic_endpoint & operator=(
       const basic_endpoint & other);
@@ -34701,7 +35051,7 @@
 
 [section:operator_eq__eq_ ip::basic_endpoint::operator==]
 
-Compare two endpoints for equality.
+[indexterm2 operator==..ip::basic_endpoint] Compare two endpoints for equality.
 
   friend bool operator==(
       const basic_endpoint< InternetProtocol > & e1,
@@ -34714,7 +35064,7 @@
 
 [section:port ip::basic_endpoint::port]
 
-Get the port associated with the endpoint. The port number is always in the host's byte order.
+[indexterm2 port..ip::basic_endpoint] Get the port associated with the endpoint. The port number is always in the host's byte order.
 
   unsigned short ``[link boost_asio.reference.ip__basic_endpoint.port.overload1 port]``() const;
 
@@ -34751,7 +35101,7 @@
 
 [section:protocol ip::basic_endpoint::protocol]
 
-The protocol associated with the endpoint.
+[indexterm2 protocol..ip::basic_endpoint] The protocol associated with the endpoint.
 
   protocol_type protocol() const;
 
@@ -34763,7 +35113,7 @@
 
 [section:protocol_type ip::basic_endpoint::protocol_type]
 
-The protocol type associated with the endpoint.
+[indexterm2 protocol_type..ip::basic_endpoint] The protocol type associated with the endpoint.
 
   typedef InternetProtocol protocol_type;
 
@@ -34776,7 +35126,7 @@
 
 [section:resize ip::basic_endpoint::resize]
 
-Set the underlying size of the endpoint in the native type.
+[indexterm2 resize..ip::basic_endpoint] Set the underlying size of the endpoint in the native type.
 
   void resize(
       std::size_t size);
@@ -34789,7 +35139,7 @@
 
 [section:size ip::basic_endpoint::size]
 
-Get the underlying size of the endpoint in the native type.
+[indexterm2 size..ip::basic_endpoint] Get the underlying size of the endpoint in the native type.
 
   std::size_t size() const;
 
@@ -34924,7 +35274,7 @@
 
 [section:async_resolve ip::basic_resolver::async_resolve]
 
-Asynchronously resolve a query to a list of entries.
+[indexterm2 async_resolve..ip::basic_resolver] Asynchronously resolve a query to a list of entries.
 
   template<
       typename ``[link boost_asio.reference.ResolveHandler ResolveHandler]``>
@@ -34968,7 +35318,6 @@
                                              // be used to traverse the list
                                              // of endpoint entries.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -35014,7 +35363,6 @@
                                              // be used to traverse the list
                                              // of endpoint entries.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -35035,7 +35383,7 @@
 
 [section:basic_resolver ip::basic_resolver::basic_resolver]
 
-Constructor.
+[indexterm2 basic_resolver..ip::basic_resolver] Constructor.
 
   basic_resolver(
       boost::asio::io_service & io_service);
@@ -35061,7 +35409,7 @@
 
 [section:cancel ip::basic_resolver::cancel]
 
-Cancel any asynchronous operations that are waiting on the resolver.
+[indexterm2 cancel..ip::basic_resolver] Cancel any asynchronous operations that are waiting on the resolver.
 
   void cancel();
 
@@ -35075,7 +35423,7 @@
 
 [section:endpoint_type ip::basic_resolver::endpoint_type]
 
-The endpoint type.
+[indexterm2 endpoint_type..ip::basic_resolver] The endpoint type.
 
   typedef InternetProtocol::endpoint endpoint_type;
 
@@ -35091,7 +35439,7 @@
 
 ['Inherited from basic_io_object.]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..ip::basic_resolver] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -35114,7 +35462,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation of the I/O object.
+[indexterm2 implementation..ip::basic_resolver] The underlying implementation of the I/O object.
 
   implementation_type implementation;
 
@@ -35129,7 +35477,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation type of I/O object.
+[indexterm2 implementation_type..ip::basic_resolver] The underlying implementation type of I/O object.
 
   typedef service_type::implementation_type implementation_type;
 
@@ -35145,7 +35493,7 @@
 
 ['Inherited from basic_io_object.]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..ip::basic_resolver] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -35165,7 +35513,7 @@
 
 [section:iterator ip::basic_resolver::iterator]
 
-The iterator type.
+[indexterm2 iterator..ip::basic_resolver] The iterator type.
 
   typedef InternetProtocol::resolver_iterator iterator;
 
@@ -35178,7 +35526,7 @@
 
 [section:protocol_type ip::basic_resolver::protocol_type]
 
-The protocol type.
+[indexterm2 protocol_type..ip::basic_resolver] The protocol type.
 
   typedef InternetProtocol protocol_type;
 
@@ -35191,7 +35539,7 @@
 
 [section:query ip::basic_resolver::query]
 
-The query type.
+[indexterm2 query..ip::basic_resolver] The query type.
 
   typedef InternetProtocol::resolver_query query;
 
@@ -35203,7 +35551,7 @@
 
 [section:resolve ip::basic_resolver::resolve]
 
-Resolve a query to a list of entries.
+[indexterm2 resolve..ip::basic_resolver] Resolve a query to a list of entries.
 
   iterator ``[link boost_asio.reference.ip__basic_resolver.resolve.overload1 resolve]``(
       const query & q);
@@ -35391,7 +35739,7 @@
 
 ['Inherited from basic_io_object.]
 
-The service associated with the I/O object.
+[indexterm2 service..ip::basic_resolver] The service associated with the I/O object.
 
   service_type & service;
 
@@ -35406,7 +35754,7 @@
 
 ['Inherited from basic_io_object.]
 
-The type of the service that will be used to provide I/O operations.
+[indexterm2 service_type..ip::basic_resolver] The type of the service that will be used to provide I/O operations.
 
   typedef ResolverService service_type;
 
@@ -35492,7 +35840,7 @@
 
 [section:basic_resolver_entry ip::basic_resolver_entry::basic_resolver_entry]
 
-Default constructor.
+[indexterm2 basic_resolver_entry..ip::basic_resolver_entry] Default constructor.
 
   ``[link boost_asio.reference.ip__basic_resolver_entry.basic_resolver_entry.overload1 basic_resolver_entry]``();
 
@@ -35533,7 +35881,7 @@
 
 [section:endpoint ip::basic_resolver_entry::endpoint]
 
-Get the endpoint associated with the entry.
+[indexterm2 endpoint..ip::basic_resolver_entry] Get the endpoint associated with the entry.
 
   endpoint_type endpoint() const;
 
@@ -35545,7 +35893,7 @@
 
 [section:endpoint_type ip::basic_resolver_entry::endpoint_type]
 
-The endpoint type associated with the endpoint entry.
+[indexterm2 endpoint_type..ip::basic_resolver_entry] The endpoint type associated with the endpoint entry.
 
   typedef InternetProtocol::endpoint endpoint_type;
 
@@ -35558,7 +35906,7 @@
 
 [section:host_name ip::basic_resolver_entry::host_name]
 
-Get the host name associated with the entry.
+[indexterm2 host_name..ip::basic_resolver_entry] Get the host name associated with the entry.
 
   std::string host_name() const;
 
@@ -35570,7 +35918,7 @@
 
 [section:operator_endpoint_type ip::basic_resolver_entry::operator endpoint_type]
 
-Convert to the endpoint associated with the entry.
+[indexterm2 operator endpoint_type..ip::basic_resolver_entry] Convert to the endpoint associated with the entry.
 
   operator endpoint_type() const;
 
@@ -35582,7 +35930,7 @@
 
 [section:protocol_type ip::basic_resolver_entry::protocol_type]
 
-The protocol type associated with the endpoint entry.
+[indexterm2 protocol_type..ip::basic_resolver_entry] The protocol type associated with the endpoint entry.
 
   typedef InternetProtocol protocol_type;
 
@@ -35595,7 +35943,7 @@
 
 [section:service_name ip::basic_resolver_entry::service_name]
 
-Get the service name associated with the entry.
+[indexterm2 service_name..ip::basic_resolver_entry] Get the service name associated with the entry.
 
   std::string service_name() const;
 
@@ -35653,7 +36001,7 @@
 
 [section:basic_resolver_iterator ip::basic_resolver_iterator::basic_resolver_iterator]
 
-Default constructor creates an end iterator.
+[indexterm2 basic_resolver_iterator..ip::basic_resolver_iterator] Default constructor creates an end iterator.
 
   basic_resolver_iterator();
 
@@ -35664,7 +36012,7 @@
 
 [section:create ip::basic_resolver_iterator::create]
 
-Create an iterator from an addrinfo list returned by getaddrinfo.
+[indexterm2 create..ip::basic_resolver_iterator] Create an iterator from an addrinfo list returned by getaddrinfo.
 
   static basic_resolver_iterator ``[link boost_asio.reference.ip__basic_resolver_iterator.create.overload1 create]``(
       boost::asio::detail::addrinfo_type * address_info,
@@ -35818,7 +36166,7 @@
 
 ['Inherited from ip::resolver_query_base.]
 
-Only return IPv4 addresses if a non-loopback IPv4 address is configured for the system. Only return IPv6 addresses if a non-loopback IPv6 address is configured for the system.
+[indexterm2 address_configured..ip::basic_resolver_query] Only return IPv4 addresses if a non-loopback IPv4 address is configured for the system. Only return IPv6 addresses if a non-loopback IPv6 address is configured for the system.
 
   static const int address_configured = implementation_defined;
 
@@ -35833,7 +36181,7 @@
 
 ['Inherited from ip::resolver_query_base.]
 
-If used with v4_mapped, return all matching IPv6 and IPv4 addresses.
+[indexterm2 all_matching..ip::basic_resolver_query] If used with v4_mapped, return all matching IPv6 and IPv4 addresses.
 
   static const int all_matching = implementation_defined;
 
@@ -35844,7 +36192,7 @@
 
 [section:basic_resolver_query ip::basic_resolver_query::basic_resolver_query]
 
-Construct with specified service name for any protocol.
+[indexterm2 basic_resolver_query..ip::basic_resolver_query] Construct with specified service name for any protocol.
 
   ``[link boost_asio.reference.ip__basic_resolver_query.basic_resolver_query.overload1 basic_resolver_query]``(
       const std::string & service_name,
@@ -35934,7 +36282,7 @@
 
 ['Inherited from ip::resolver_query_base.]
 
-Determine the canonical name of the host specified in the query.
+[indexterm2 canonical_name..ip::basic_resolver_query] Determine the canonical name of the host specified in the query.
 
   static const int canonical_name = implementation_defined;
 
@@ -35946,7 +36294,7 @@
 
 [section:hints ip::basic_resolver_query::hints]
 
-Get the hints associated with the query.
+[indexterm2 hints..ip::basic_resolver_query] Get the hints associated with the query.
 
   const boost::asio::detail::addrinfo_type & hints() const;
 
@@ -35958,7 +36306,7 @@
 
 [section:host_name ip::basic_resolver_query::host_name]
 
-Get the host name associated with the query.
+[indexterm2 host_name..ip::basic_resolver_query] Get the host name associated with the query.
 
   std::string host_name() const;
 
@@ -35973,7 +36321,7 @@
 
 ['Inherited from ip::resolver_query_base.]
 
-Host name should be treated as a numeric string defining an IPv4 or IPv6 address and no name resolution should be attempted.
+[indexterm2 numeric_host..ip::basic_resolver_query] Host name should be treated as a numeric string defining an IPv4 or IPv6 address and no name resolution should be attempted.
 
   static const int numeric_host = implementation_defined;
 
@@ -35988,7 +36336,7 @@
 
 ['Inherited from ip::resolver_query_base.]
 
-Service name should be treated as a numeric string defining a port number and no name resolution should be attempted.
+[indexterm2 numeric_service..ip::basic_resolver_query] Service name should be treated as a numeric string defining a port number and no name resolution should be attempted.
 
   static const int numeric_service = implementation_defined;
 
@@ -36003,7 +36351,7 @@
 
 ['Inherited from ip::resolver_query_base.]
 
-Indicate that returned endpoint is intended for use as a locally bound socket endpoint.
+[indexterm2 passive..ip::basic_resolver_query] Indicate that returned endpoint is intended for use as a locally bound socket endpoint.
 
   static const int passive = implementation_defined;
 
@@ -36015,7 +36363,7 @@
 
 [section:protocol_type ip::basic_resolver_query::protocol_type]
 
-The protocol type associated with the endpoint query.
+[indexterm2 protocol_type..ip::basic_resolver_query] The protocol type associated with the endpoint query.
 
   typedef InternetProtocol protocol_type;
 
@@ -36028,7 +36376,7 @@
 
 [section:service_name ip::basic_resolver_query::service_name]
 
-Get the service name associated with the query.
+[indexterm2 service_name..ip::basic_resolver_query] Get the service name associated with the query.
 
   std::string service_name() const;
 
@@ -36043,7 +36391,7 @@
 
 ['Inherited from ip::resolver_query_base.]
 
-If the query protocol family is specified as IPv6, return IPv4-mapped IPv6 addresses on finding no IPv6 addresses.
+[indexterm2 v4_mapped..ip::basic_resolver_query] If the query protocol family is specified as IPv6, return IPv4-mapped IPv6 addresses on finding no IPv6 addresses.
 
   static const int v4_mapped = implementation_defined;
 
@@ -36057,8 +36405,8 @@
 
 [section:ip__host_name ip::host_name]
 
-Get the current host name.
-
+[indexterm1 ip::host_name] Get the current host name.
+
   std::string ``[link boost_asio.reference.ip__host_name.overload1 host_name]``();
 
   std::string ``[link boost_asio.reference.ip__host_name.overload2 host_name]``(
@@ -36200,7 +36548,7 @@
 
 [section:endpoint ip::icmp::endpoint]
 
-The type of a ICMP endpoint.
+[indexterm2 endpoint..ip::icmp] The type of a ICMP endpoint.
 
   typedef basic_endpoint< icmp > endpoint;
 
@@ -36327,7 +36675,7 @@
 
 [section:family ip::icmp::family]
 
-Obtain an identifier for the protocol family.
+[indexterm2 family..ip::icmp] Obtain an identifier for the protocol family.
 
   int family() const;
 
@@ -36339,7 +36687,7 @@
 
 [section:operator_not__eq_ ip::icmp::operator!=]
 
-Compare two protocols for inequality.
+[indexterm2 operator!=..ip::icmp] Compare two protocols for inequality.
 
   friend bool operator!=(
       const icmp & p1,
@@ -36353,7 +36701,7 @@
 
 [section:operator_eq__eq_ ip::icmp::operator==]
 
-Compare two protocols for equality.
+[indexterm2 operator==..ip::icmp] Compare two protocols for equality.
 
   friend bool operator==(
       const icmp & p1,
@@ -36367,7 +36715,7 @@
 
 [section:protocol ip::icmp::protocol]
 
-Obtain an identifier for the protocol.
+[indexterm2 protocol..ip::icmp] Obtain an identifier for the protocol.
 
   int protocol() const;
 
@@ -36379,7 +36727,7 @@
 
 [section:resolver ip::icmp::resolver]
 
-The ICMP resolver type.
+[indexterm2 resolver..ip::icmp] The ICMP resolver type.
 
   typedef basic_resolver< icmp > resolver;
 
@@ -36502,7 +36850,7 @@
 
 [section:resolver_iterator ip::icmp::resolver_iterator]
 
-The type of a resolver iterator.
+[indexterm2 resolver_iterator..ip::icmp] The type of a resolver iterator.
 
   typedef basic_resolver_iterator< icmp > resolver_iterator;
 
@@ -36549,7 +36897,7 @@
 
 [section:resolver_query ip::icmp::resolver_query]
 
-The type of a resolver query.
+[indexterm2 resolver_query..ip::icmp] The type of a resolver query.
 
   typedef basic_resolver_query< icmp > resolver_query;
 
@@ -36653,7 +37001,7 @@
 
 [section:socket ip::icmp::socket]
 
-The ICMP socket type.
+[indexterm2 socket..ip::icmp] The ICMP socket type.
 
   typedef basic_raw_socket< icmp > socket;
 
@@ -37022,7 +37370,7 @@
 
 [section:type ip::icmp::type]
 
-Obtain an identifier for the type of the protocol.
+[indexterm2 type..ip::icmp] Obtain an identifier for the type of the protocol.
 
   int type() const;
 
@@ -37034,7 +37382,7 @@
 
 [section:v4 ip::icmp::v4]
 
-Construct to represent the IPv4 ICMP protocol.
+[indexterm2 v4..ip::icmp] Construct to represent the IPv4 ICMP protocol.
 
   static icmp v4();
 
@@ -37046,7 +37394,7 @@
 
 [section:v6 ip::icmp::v6]
 
-Construct to represent the IPv6 ICMP protocol.
+[indexterm2 v6..ip::icmp] Construct to represent the IPv6 ICMP protocol.
 
   static icmp v6();
 
@@ -37061,7 +37409,7 @@
 
 [section:ip__multicast__enable_loopback ip::multicast::enable_loopback]
 
-Socket option determining whether outgoing multicast packets will be received on the same socket if it is a member of the multicast group.
+[indexterm1 ip::multicast::enable_loopback] Socket option determining whether outgoing multicast packets will be received on the same socket if it is a member of the multicast group.
 
   typedef implementation_defined enable_loopback;
 
@@ -37101,7 +37449,7 @@
 
 [section:ip__multicast__hops ip::multicast::hops]
 
-Socket option for time-to-live associated with outgoing multicast packets.
+[indexterm1 ip::multicast::hops] Socket option for time-to-live associated with outgoing multicast packets.
 
   typedef implementation_defined hops;
 
@@ -37141,7 +37489,7 @@
 
 [section:ip__multicast__join_group ip::multicast::join_group]
 
-Socket option to join a multicast group on a specified interface.
+[indexterm1 ip::multicast::join_group] Socket option to join a multicast group on a specified interface.
 
   typedef implementation_defined join_group;
 
@@ -37172,7 +37520,7 @@
 
 [section:ip__multicast__leave_group ip::multicast::leave_group]
 
-Socket option to leave a multicast group on a specified interface.
+[indexterm1 ip::multicast::leave_group] Socket option to leave a multicast group on a specified interface.
 
   typedef implementation_defined leave_group;
 
@@ -37203,7 +37551,7 @@
 
 [section:ip__multicast__outbound_interface ip::multicast::outbound_interface]
 
-Socket option for local interface to use for outgoing multicast packets.
+[indexterm1 ip::multicast::outbound_interface] Socket option for local interface to use for outgoing multicast packets.
 
   typedef implementation_defined outbound_interface;
 
@@ -37293,7 +37641,7 @@
 
 [section:address_configured ip::resolver_query_base::address_configured]
 
-Only return IPv4 addresses if a non-loopback IPv4 address is configured for the system. Only return IPv6 addresses if a non-loopback IPv6 address is configured for the system.
+[indexterm2 address_configured..ip::resolver_query_base] Only return IPv4 addresses if a non-loopback IPv4 address is configured for the system. Only return IPv6 addresses if a non-loopback IPv6 address is configured for the system.
 
   static const int address_configured = implementation_defined;
 
@@ -37305,7 +37653,7 @@
 
 [section:all_matching ip::resolver_query_base::all_matching]
 
-If used with v4_mapped, return all matching IPv6 and IPv4 addresses.
+[indexterm2 all_matching..ip::resolver_query_base] If used with v4_mapped, return all matching IPv6 and IPv4 addresses.
 
   static const int all_matching = implementation_defined;
 
@@ -37317,7 +37665,7 @@
 
 [section:canonical_name ip::resolver_query_base::canonical_name]
 
-Determine the canonical name of the host specified in the query.
+[indexterm2 canonical_name..ip::resolver_query_base] Determine the canonical name of the host specified in the query.
 
   static const int canonical_name = implementation_defined;
 
@@ -37329,7 +37677,7 @@
 
 [section:numeric_host ip::resolver_query_base::numeric_host]
 
-Host name should be treated as a numeric string defining an IPv4 or IPv6 address and no name resolution should be attempted.
+[indexterm2 numeric_host..ip::resolver_query_base] Host name should be treated as a numeric string defining an IPv4 or IPv6 address and no name resolution should be attempted.
 
   static const int numeric_host = implementation_defined;
 
@@ -37341,7 +37689,7 @@
 
 [section:numeric_service ip::resolver_query_base::numeric_service]
 
-Service name should be treated as a numeric string defining a port number and no name resolution should be attempted.
+[indexterm2 numeric_service..ip::resolver_query_base] Service name should be treated as a numeric string defining a port number and no name resolution should be attempted.
 
   static const int numeric_service = implementation_defined;
 
@@ -37353,7 +37701,7 @@
 
 [section:passive ip::resolver_query_base::passive]
 
-Indicate that returned endpoint is intended for use as a locally bound socket endpoint.
+[indexterm2 passive..ip::resolver_query_base] Indicate that returned endpoint is intended for use as a locally bound socket endpoint.
 
   static const int passive = implementation_defined;
 
@@ -37365,7 +37713,7 @@
 
 [section:v4_mapped ip::resolver_query_base::v4_mapped]
 
-If the query protocol family is specified as IPv6, return IPv4-mapped IPv6 addresses on finding no IPv6 addresses.
+[indexterm2 v4_mapped..ip::resolver_query_base] If the query protocol family is specified as IPv6, return IPv4-mapped IPv6 addresses on finding no IPv6 addresses.
 
   static const int v4_mapped = implementation_defined;
 
@@ -37377,7 +37725,7 @@
 
 [section:_resolver_query_base ip::resolver_query_base::~resolver_query_base]
 
-Protected destructor to prevent deletion through this type.
+[indexterm2 ~resolver_query_base..ip::resolver_query_base] Protected destructor to prevent deletion through this type.
 
   ~resolver_query_base();
 
@@ -37504,7 +37852,7 @@
 
 [section:async_resolve ip::resolver_service::async_resolve]
 
-Asynchronously resolve a query to a list of entries.
+[indexterm2 async_resolve..ip::resolver_service] Asynchronously resolve a query to a list of entries.
 
   template<
       typename ``[link boost_asio.reference.Handler Handler]``>
@@ -37559,7 +37907,7 @@
 
 [section:cancel ip::resolver_service::cancel]
 
-Cancel pending asynchronous operations.
+[indexterm2 cancel..ip::resolver_service] Cancel pending asynchronous operations.
 
   void cancel(
       implementation_type & impl);
@@ -37572,7 +37920,7 @@
 
 [section:construct ip::resolver_service::construct]
 
-Construct a new resolver implementation.
+[indexterm2 construct..ip::resolver_service] Construct a new resolver implementation.
 
   void construct(
       implementation_type & impl);
@@ -37585,7 +37933,7 @@
 
 [section:destroy ip::resolver_service::destroy]
 
-Destroy a resolver implementation.
+[indexterm2 destroy..ip::resolver_service] Destroy a resolver implementation.
 
   void destroy(
       implementation_type & impl);
@@ -37598,7 +37946,7 @@
 
 [section:endpoint_type ip::resolver_service::endpoint_type]
 
-The endpoint type.
+[indexterm2 endpoint_type..ip::resolver_service] The endpoint type.
 
   typedef InternetProtocol::endpoint endpoint_type;
 
@@ -37614,7 +37962,7 @@
 
 ['Inherited from io_service.]
 
-Get the io_service object that owns the service.
+[indexterm2 get_io_service..ip::resolver_service] Get the io_service object that owns the service.
 
   boost::asio::io_service & get_io_service();
 
@@ -37626,7 +37974,7 @@
 
 [section:id ip::resolver_service::id]
 
-The unique service identifier.
+[indexterm2 id..ip::resolver_service] The unique service identifier.
 
   static boost::asio::io_service::id id;
 
@@ -37638,7 +37986,7 @@
 
 [section:implementation_type ip::resolver_service::implementation_type]
 
-The type of a resolver implementation.
+[indexterm2 implementation_type..ip::resolver_service] The type of a resolver implementation.
 
   typedef implementation_defined implementation_type;
 
@@ -37654,7 +38002,7 @@
 
 ['Inherited from io_service.]
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+[indexterm2 io_service..ip::resolver_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
   boost::asio::io_service & io_service();
 
@@ -37666,7 +38014,7 @@
 
 [section:iterator_type ip::resolver_service::iterator_type]
 
-The iterator type.
+[indexterm2 iterator_type..ip::resolver_service] The iterator type.
 
   typedef InternetProtocol::resolver_iterator iterator_type;
 
@@ -37679,7 +38027,7 @@
 
 [section:protocol_type ip::resolver_service::protocol_type]
 
-The protocol type.
+[indexterm2 protocol_type..ip::resolver_service] The protocol type.
 
   typedef InternetProtocol protocol_type;
 
@@ -37692,7 +38040,7 @@
 
 [section:query_type ip::resolver_service::query_type]
 
-The query type.
+[indexterm2 query_type..ip::resolver_service] The query type.
 
   typedef InternetProtocol::resolver_query query_type;
 
@@ -37704,7 +38052,7 @@
 
 [section:resolve ip::resolver_service::resolve]
 
-Resolve a query to a list of entries.
+[indexterm2 resolve..ip::resolver_service] Resolve a query to a list of entries.
 
   iterator_type ``[link boost_asio.reference.ip__resolver_service.resolve.overload1 resolve]``(
       implementation_type & impl,
@@ -37751,7 +38099,7 @@
 
 [section:resolver_service ip::resolver_service::resolver_service]
 
-Construct a new resolver service for the specified io_service.
+[indexterm2 resolver_service..ip::resolver_service] Construct a new resolver service for the specified io_service.
 
   resolver_service(
       boost::asio::io_service & io_service);
@@ -37764,7 +38112,7 @@
 
 [section:shutdown_service ip::resolver_service::shutdown_service]
 
-Destroy all user-defined handler objects owned by the service.
+[indexterm2 shutdown_service..ip::resolver_service] Destroy all user-defined handler objects owned by the service.
 
   void shutdown_service();
 
@@ -37906,7 +38254,7 @@
 
 [section:acceptor ip::tcp::acceptor]
 
-The TCP acceptor type.
+[indexterm2 acceptor..ip::tcp] The TCP acceptor type.
 
   typedef basic_socket_acceptor< tcp > acceptor;
 
@@ -38217,7 +38565,7 @@
 
 [section:endpoint ip::tcp::endpoint]
 
-The type of a TCP endpoint.
+[indexterm2 endpoint..ip::tcp] The type of a TCP endpoint.
 
   typedef basic_endpoint< tcp > endpoint;
 
@@ -38344,7 +38692,7 @@
 
 [section:family ip::tcp::family]
 
-Obtain an identifier for the protocol family.
+[indexterm2 family..ip::tcp] Obtain an identifier for the protocol family.
 
   int family() const;
 
@@ -38356,7 +38704,7 @@
 
 [section:iostream ip::tcp::iostream]
 
-The TCP iostream type.
+[indexterm2 iostream..ip::tcp] The TCP iostream type.
 
   typedef basic_socket_iostream< tcp > iostream;
 
@@ -38395,7 +38743,7 @@
 
 [section:no_delay ip::tcp::no_delay]
 
-Socket option for disabling the Nagle algorithm.
+[indexterm2 no_delay..ip::tcp] Socket option for disabling the Nagle algorithm.
 
   typedef implementation_defined no_delay;
 
@@ -38435,7 +38783,7 @@
 
 [section:operator_not__eq_ ip::tcp::operator!=]
 
-Compare two protocols for inequality.
+[indexterm2 operator!=..ip::tcp] Compare two protocols for inequality.
 
   friend bool operator!=(
       const tcp & p1,
@@ -38449,7 +38797,7 @@
 
 [section:operator_eq__eq_ ip::tcp::operator==]
 
-Compare two protocols for equality.
+[indexterm2 operator==..ip::tcp] Compare two protocols for equality.
 
   friend bool operator==(
       const tcp & p1,
@@ -38463,7 +38811,7 @@
 
 [section:protocol ip::tcp::protocol]
 
-Obtain an identifier for the protocol.
+[indexterm2 protocol..ip::tcp] Obtain an identifier for the protocol.
 
   int protocol() const;
 
@@ -38475,7 +38823,7 @@
 
 [section:resolver ip::tcp::resolver]
 
-The TCP resolver type.
+[indexterm2 resolver..ip::tcp] The TCP resolver type.
 
   typedef basic_resolver< tcp > resolver;
 
@@ -38598,7 +38946,7 @@
 
 [section:resolver_iterator ip::tcp::resolver_iterator]
 
-The type of a resolver iterator.
+[indexterm2 resolver_iterator..ip::tcp] The type of a resolver iterator.
 
   typedef basic_resolver_iterator< tcp > resolver_iterator;
 
@@ -38645,7 +38993,7 @@
 
 [section:resolver_query ip::tcp::resolver_query]
 
-The type of a resolver query.
+[indexterm2 resolver_query..ip::tcp] The type of a resolver query.
 
   typedef basic_resolver_query< tcp > resolver_query;
 
@@ -38749,7 +39097,7 @@
 
 [section:socket ip::tcp::socket]
 
-The TCP socket type.
+[indexterm2 socket..ip::tcp] The TCP socket type.
 
   typedef basic_stream_socket< tcp > socket;
 
@@ -39118,7 +39466,7 @@
 
 [section:type ip::tcp::type]
 
-Obtain an identifier for the type of the protocol.
+[indexterm2 type..ip::tcp] Obtain an identifier for the type of the protocol.
 
   int type() const;
 
@@ -39130,7 +39478,7 @@
 
 [section:v4 ip::tcp::v4]
 
-Construct to represent the IPv4 TCP protocol.
+[indexterm2 v4..ip::tcp] Construct to represent the IPv4 TCP protocol.
 
   static tcp v4();
 
@@ -39142,7 +39490,7 @@
 
 [section:v6 ip::tcp::v6]
 
-Construct to represent the IPv6 TCP protocol.
+[indexterm2 v6..ip::tcp] Construct to represent the IPv6 TCP protocol.
 
   static tcp v6();
 
@@ -39263,7 +39611,7 @@
 
 [section:endpoint ip::udp::endpoint]
 
-The type of a UDP endpoint.
+[indexterm2 endpoint..ip::udp] The type of a UDP endpoint.
 
   typedef basic_endpoint< udp > endpoint;
 
@@ -39390,7 +39738,7 @@
 
 [section:family ip::udp::family]
 
-Obtain an identifier for the protocol family.
+[indexterm2 family..ip::udp] Obtain an identifier for the protocol family.
 
   int family() const;
 
@@ -39402,7 +39750,7 @@
 
 [section:operator_not__eq_ ip::udp::operator!=]
 
-Compare two protocols for inequality.
+[indexterm2 operator!=..ip::udp] Compare two protocols for inequality.
 
   friend bool operator!=(
       const udp & p1,
@@ -39416,7 +39764,7 @@
 
 [section:operator_eq__eq_ ip::udp::operator==]
 
-Compare two protocols for equality.
+[indexterm2 operator==..ip::udp] Compare two protocols for equality.
 
   friend bool operator==(
       const udp & p1,
@@ -39430,7 +39778,7 @@
 
 [section:protocol ip::udp::protocol]
 
-Obtain an identifier for the protocol.
+[indexterm2 protocol..ip::udp] Obtain an identifier for the protocol.
 
   int protocol() const;
 
@@ -39442,7 +39790,7 @@
 
 [section:resolver ip::udp::resolver]
 
-The UDP resolver type.
+[indexterm2 resolver..ip::udp] The UDP resolver type.
 
   typedef basic_resolver< udp > resolver;
 
@@ -39565,7 +39913,7 @@
 
 [section:resolver_iterator ip::udp::resolver_iterator]
 
-The type of a resolver iterator.
+[indexterm2 resolver_iterator..ip::udp] The type of a resolver iterator.
 
   typedef basic_resolver_iterator< udp > resolver_iterator;
 
@@ -39612,7 +39960,7 @@
 
 [section:resolver_query ip::udp::resolver_query]
 
-The type of a resolver query.
+[indexterm2 resolver_query..ip::udp] The type of a resolver query.
 
   typedef basic_resolver_query< udp > resolver_query;
 
@@ -39716,7 +40064,7 @@
 
 [section:socket ip::udp::socket]
 
-The UDP socket type.
+[indexterm2 socket..ip::udp] The UDP socket type.
 
   typedef basic_datagram_socket< udp > socket;
 
@@ -40085,7 +40433,7 @@
 
 [section:type ip::udp::type]
 
-Obtain an identifier for the type of the protocol.
+[indexterm2 type..ip::udp] Obtain an identifier for the type of the protocol.
 
   int type() const;
 
@@ -40097,7 +40445,7 @@
 
 [section:v4 ip::udp::v4]
 
-Construct to represent the IPv4 UDP protocol.
+[indexterm2 v4..ip::udp] Construct to represent the IPv4 UDP protocol.
 
   static udp v4();
 
@@ -40109,7 +40457,7 @@
 
 [section:v6 ip::udp::v6]
 
-Construct to represent the IPv6 UDP protocol.
+[indexterm2 v6..ip::udp] Construct to represent the IPv6 UDP protocol.
 
   static udp v6();
 
@@ -40124,7 +40472,7 @@
 
 [section:ip__unicast__hops ip::unicast::hops]
 
-Socket option for time-to-live associated with outgoing unicast packets.
+[indexterm1 ip::unicast::hops] Socket option for time-to-live associated with outgoing unicast packets.
 
   typedef implementation_defined hops;
 
@@ -40164,7 +40512,7 @@
 
 [section:ip__v6_only ip::v6_only]
 
-Socket option for determining whether an IPv6 socket supports IPv6 communication only.
+[indexterm1 ip::v6_only] Socket option for determining whether an IPv6 socket supports IPv6 communication only.
 
   typedef implementation_defined v6_only;
 
@@ -40224,7 +40572,7 @@
 
 [section:value is_match_condition::value]
 
-The value member is true if the type may be used as a match condition.
+[indexterm2 value..is_match_condition] The value member is true if the type may be used as a match condition.
 
   static const bool value;
 
@@ -40259,7 +40607,7 @@
 
 [section:value is_read_buffered::value]
 
-The value member is true only if the Stream type supports buffering of read data.
+[indexterm2 value..is_read_buffered] The value member is true only if the Stream type supports buffering of read data.
 
   static const bool value;
 
@@ -40294,7 +40642,7 @@
 
 [section:value is_write_buffered::value]
 
-The value member is true only if the Stream type supports buffering of written data.
+[indexterm2 value..is_write_buffered] The value member is true only if the Stream type supports buffering of written data.
 
   static const bool value;
 
@@ -40426,7 +40774,7 @@
 
 [section:basic_endpoint local::basic_endpoint::basic_endpoint]
 
-Default constructor.
+[indexterm2 basic_endpoint..local::basic_endpoint] Default constructor.
 
   ``[link boost_asio.reference.local__basic_endpoint.basic_endpoint.overload1 basic_endpoint]``();
 
@@ -40495,7 +40843,7 @@
 
 [section:capacity local::basic_endpoint::capacity]
 
-Get the capacity of the endpoint in the native type.
+[indexterm2 capacity..local::basic_endpoint] Get the capacity of the endpoint in the native type.
 
   std::size_t capacity() const;
 
@@ -40506,7 +40854,7 @@
 
 [section:data local::basic_endpoint::data]
 
-Get the underlying endpoint in the native type.
+[indexterm2 data..local::basic_endpoint] Get the underlying endpoint in the native type.
 
   data_type * ``[link boost_asio.reference.local__basic_endpoint.data.overload1 data]``();
 
@@ -40541,7 +40889,7 @@
 
 [section:data_type local::basic_endpoint::data_type]
 
-The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer.
+[indexterm2 data_type..local::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;
 
@@ -40554,7 +40902,7 @@
 
 [section:operator_not__eq_ local::basic_endpoint::operator!=]
 
-Compare two endpoints for inequality.
+[indexterm2 operator!=..local::basic_endpoint] Compare two endpoints for inequality.
 
   friend bool operator!=(
       const basic_endpoint< Protocol > & e1,
@@ -40568,7 +40916,7 @@
 
 [section:operator_lt_ local::basic_endpoint::operator<]
 
-Compare endpoints for ordering.
+[indexterm2 operator<..local::basic_endpoint] Compare endpoints for ordering.
 
   friend bool operator<(
       const basic_endpoint< Protocol > & e1,
@@ -40582,7 +40930,7 @@
 
 [section:operator_lt__lt_ local::basic_endpoint::operator<<]
 
-Output an endpoint as a string.
+[indexterm2 operator<<..local::basic_endpoint] Output an endpoint as a string.
 
   std::basic_ostream< Elem, Traits > & operator<<(
       std::basic_ostream< Elem, Traits > & os,
@@ -40615,7 +40963,7 @@
 
 [section:operator_eq_ local::basic_endpoint::operator=]
 
-Assign from another endpoint.
+[indexterm2 operator=..local::basic_endpoint] Assign from another endpoint.
 
   basic_endpoint & operator=(
       const basic_endpoint & other);
@@ -40628,7 +40976,7 @@
 
 [section:operator_eq__eq_ local::basic_endpoint::operator==]
 
-Compare two endpoints for equality.
+[indexterm2 operator==..local::basic_endpoint] Compare two endpoints for equality.
 
   friend bool operator==(
       const basic_endpoint< Protocol > & e1,
@@ -40641,7 +40989,7 @@
 
 [section:path local::basic_endpoint::path]
 
-Get the path associated with the endpoint.
+[indexterm2 path..local::basic_endpoint] Get the path associated with the endpoint.
 
   std::string ``[link boost_asio.reference.local__basic_endpoint.path.overload1 path]``() const;
 
@@ -40694,7 +41042,7 @@
 
 [section:protocol local::basic_endpoint::protocol]
 
-The protocol associated with the endpoint.
+[indexterm2 protocol..local::basic_endpoint] The protocol associated with the endpoint.
 
   protocol_type protocol() const;
 
@@ -40706,7 +41054,7 @@
 
 [section:protocol_type local::basic_endpoint::protocol_type]
 
-The protocol type associated with the endpoint.
+[indexterm2 protocol_type..local::basic_endpoint] The protocol type associated with the endpoint.
 
   typedef Protocol protocol_type;
 
@@ -40719,7 +41067,7 @@
 
 [section:resize local::basic_endpoint::resize]
 
-Set the underlying size of the endpoint in the native type.
+[indexterm2 resize..local::basic_endpoint] Set the underlying size of the endpoint in the native type.
 
   void resize(
       std::size_t size);
@@ -40732,7 +41080,7 @@
 
 [section:size local::basic_endpoint::size]
 
-Get the underlying size of the endpoint in the native type.
+[indexterm2 size..local::basic_endpoint] Get the underlying size of the endpoint in the native type.
 
   std::size_t size() const;
 
@@ -40746,20 +41094,20 @@
 
 [section:local__connect_pair local::connect_pair]
 
-Create a pair of connected sockets.
-
+[indexterm1 local::connect_pair] Create a pair of connected sockets.
+
   template<
       typename ``[link boost_asio.reference.Protocol Protocol]``,
- typename ``[link boost_asio.reference.SocketService1 SocketService1]``,
- typename ``[link boost_asio.reference.SocketService2 SocketService2]``>
+ typename ``[link boost_asio.reference.SocketService SocketService1]``,
+ typename ``[link boost_asio.reference.SocketService SocketService2]``>
   void ``[link boost_asio.reference.local__connect_pair.overload1 connect_pair]``(
       basic_socket< Protocol, SocketService1 > & socket1,
       basic_socket< Protocol, SocketService2 > & socket2);
 
   template<
       typename ``[link boost_asio.reference.Protocol Protocol]``,
- typename ``[link boost_asio.reference.SocketService1 SocketService1]``,
- typename ``[link boost_asio.reference.SocketService2 SocketService2]``>
+ typename ``[link boost_asio.reference.SocketService SocketService1]``,
+ typename ``[link boost_asio.reference.SocketService SocketService2]``>
   boost::system::error_code ``[link boost_asio.reference.local__connect_pair.overload2 connect_pair]``(
       basic_socket< Protocol, SocketService1 > & socket1,
       basic_socket< Protocol, SocketService2 > & socket2,
@@ -40772,8 +41120,8 @@
 
   template<
       typename ``[link boost_asio.reference.Protocol Protocol]``,
- typename ``[link boost_asio.reference.SocketService1 SocketService1]``,
- typename ``[link boost_asio.reference.SocketService2 SocketService2]``>
+ typename ``[link boost_asio.reference.SocketService SocketService1]``,
+ typename ``[link boost_asio.reference.SocketService SocketService2]``>
   void connect_pair(
       basic_socket< Protocol, SocketService1 > & socket1,
       basic_socket< Protocol, SocketService2 > & socket2);
@@ -40790,8 +41138,8 @@
 
   template<
       typename ``[link boost_asio.reference.Protocol Protocol]``,
- typename ``[link boost_asio.reference.SocketService1 SocketService1]``,
- typename ``[link boost_asio.reference.SocketService2 SocketService2]``>
+ typename ``[link boost_asio.reference.SocketService SocketService1]``,
+ typename ``[link boost_asio.reference.SocketService SocketService2]``>
   boost::system::error_code connect_pair(
       basic_socket< Protocol, SocketService1 > & socket1,
       basic_socket< Protocol, SocketService2 > & socket2,
@@ -40866,7 +41214,7 @@
 
 [section:endpoint local::datagram_protocol::endpoint]
 
-The type of a UNIX domain endpoint.
+[indexterm2 endpoint..local::datagram_protocol] The type of a UNIX domain endpoint.
 
   typedef basic_endpoint< datagram_protocol > endpoint;
 
@@ -40988,7 +41336,7 @@
 
 [section:family local::datagram_protocol::family]
 
-Obtain an identifier for the protocol family.
+[indexterm2 family..local::datagram_protocol] Obtain an identifier for the protocol family.
 
   int family() const;
 
@@ -41000,7 +41348,7 @@
 
 [section:protocol local::datagram_protocol::protocol]
 
-Obtain an identifier for the protocol.
+[indexterm2 protocol..local::datagram_protocol] Obtain an identifier for the protocol.
 
   int protocol() const;
 
@@ -41012,7 +41360,7 @@
 
 [section:socket local::datagram_protocol::socket]
 
-The UNIX domain socket type.
+[indexterm2 socket..local::datagram_protocol] The UNIX domain socket type.
 
   typedef basic_datagram_socket< datagram_protocol > socket;
 
@@ -41381,7 +41729,7 @@
 
 [section:type local::datagram_protocol::type]
 
-Obtain an identifier for the type of the protocol.
+[indexterm2 type..local::datagram_protocol] Obtain an identifier for the type of the protocol.
 
   int type() const;
 
@@ -41469,7 +41817,7 @@
 
 [section:acceptor local::stream_protocol::acceptor]
 
-The UNIX domain acceptor type.
+[indexterm2 acceptor..local::stream_protocol] The UNIX domain acceptor type.
 
   typedef basic_socket_acceptor< stream_protocol > acceptor;
 
@@ -41780,7 +42128,7 @@
 
 [section:endpoint local::stream_protocol::endpoint]
 
-The type of a UNIX domain endpoint.
+[indexterm2 endpoint..local::stream_protocol] The type of a UNIX domain endpoint.
 
   typedef basic_endpoint< stream_protocol > endpoint;
 
@@ -41902,7 +42250,7 @@
 
 [section:family local::stream_protocol::family]
 
-Obtain an identifier for the protocol family.
+[indexterm2 family..local::stream_protocol] Obtain an identifier for the protocol family.
 
   int family() const;
 
@@ -41914,7 +42262,7 @@
 
 [section:iostream local::stream_protocol::iostream]
 
-The UNIX domain iostream type.
+[indexterm2 iostream..local::stream_protocol] The UNIX domain iostream type.
 
   typedef basic_socket_iostream< stream_protocol > iostream;
 
@@ -41953,7 +42301,7 @@
 
 [section:protocol local::stream_protocol::protocol]
 
-Obtain an identifier for the protocol.
+[indexterm2 protocol..local::stream_protocol] Obtain an identifier for the protocol.
 
   int protocol() const;
 
@@ -41965,7 +42313,7 @@
 
 [section:socket local::stream_protocol::socket]
 
-The UNIX domain socket type.
+[indexterm2 socket..local::stream_protocol] The UNIX domain socket type.
 
   typedef basic_stream_socket< stream_protocol > socket;
 
@@ -42334,7 +42682,7 @@
 
 [section:type local::stream_protocol::type]
 
-Obtain an identifier for the type of the protocol.
+[indexterm2 type..local::stream_protocol] Obtain an identifier for the type of the protocol.
 
   int type() const;
 
@@ -42390,10 +42738,10 @@
 
 [section:buffer_cast mutable_buffer::buffer_cast]
 
-Cast a non-modifiable buffer to a specified pointer to POD type.
+[indexterm2 buffer_cast..mutable_buffer] Cast a non-modifiable buffer to a specified pointer to POD type.
 
   template<
- typename ``[link boost_asio.reference.PointerToPodType PointerToPodType]``>
+ typename PointerToPodType>
   PointerToPodType buffer_cast(
       const mutable_buffer & b);
 
@@ -42405,7 +42753,7 @@
 
 [section:buffer_size mutable_buffer::buffer_size]
 
-Get the number of bytes in a non-modifiable buffer.
+[indexterm2 buffer_size..mutable_buffer] Get the number of bytes in a non-modifiable buffer.
 
   std::size_t buffer_size(
       const mutable_buffer & b);
@@ -42417,7 +42765,7 @@
 
 [section:mutable_buffer mutable_buffer::mutable_buffer]
 
-Construct an empty buffer.
+[indexterm2 mutable_buffer..mutable_buffer] Construct an empty buffer.
 
   ``[link boost_asio.reference.mutable_buffer.mutable_buffer.overload1 mutable_buffer]``();
 
@@ -42455,7 +42803,7 @@
 
 [section:operator_plus_ mutable_buffer::operator+]
 
-Create a new modifiable buffer that is offset from the start of another.
+[indexterm2 operator+..mutable_buffer] Create a new modifiable buffer that is offset from the start of another.
 
   mutable_buffer ``[link boost_asio.reference.mutable_buffer.operator_plus_.overload1 operator+]``(
       const mutable_buffer & b,
@@ -42542,7 +42890,7 @@
   
   [
     [[link boost_asio.reference.mutable_buffers_1.mutable_buffers_1 [*mutable_buffers_1]]]
- [Construct to represent a single modifiable buffer. ]
+ [Construct to represent a given memory range. ]
   ]
   
 ]
@@ -42571,7 +42919,7 @@
 
 [section:begin mutable_buffers_1::begin]
 
-Get a random-access iterator to the first element.
+[indexterm2 begin..mutable_buffers_1] Get a random-access iterator to the first element.
 
   const_iterator begin() const;
 
@@ -42586,10 +42934,10 @@
 
 ['Inherited from mutable_buffer.]
 
-Cast a non-modifiable buffer to a specified pointer to POD type.
+[indexterm2 buffer_cast..mutable_buffers_1] Cast a non-modifiable buffer to a specified pointer to POD type.
 
   template<
- typename ``[link boost_asio.reference.PointerToPodType PointerToPodType]``>
+ typename PointerToPodType>
   PointerToPodType buffer_cast(
       const mutable_buffer & b);
 
@@ -42604,7 +42952,7 @@
 
 ['Inherited from mutable_buffer.]
 
-Get the number of bytes in a non-modifiable buffer.
+[indexterm2 buffer_size..mutable_buffers_1] Get the number of bytes in a non-modifiable buffer.
 
   std::size_t buffer_size(
       const mutable_buffer & b);
@@ -42617,7 +42965,7 @@
 
 [section:const_iterator mutable_buffers_1::const_iterator]
 
-A random-access iterator type that may be used to read elements.
+[indexterm2 const_iterator..mutable_buffers_1] A random-access iterator type that may be used to read elements.
 
   typedef const mutable_buffer * const_iterator;
 
@@ -42630,7 +42978,7 @@
 
 [section:end mutable_buffers_1::end]
 
-Get a random-access iterator for one past the last element.
+[indexterm2 end..mutable_buffers_1] Get a random-access iterator for one past the last element.
 
   const_iterator end() const;
 
@@ -42639,9 +42987,34 @@
 [endsect]
 
 
-
 [section:mutable_buffers_1 mutable_buffers_1::mutable_buffers_1]
 
+[indexterm2 mutable_buffers_1..mutable_buffers_1] Construct to represent a given memory range.
+
+ ``[link boost_asio.reference.mutable_buffers_1.mutable_buffers_1.overload1 mutable_buffers_1]``(
+ void * data,
+ std::size_t size);
+
+ ``[link boost_asio.reference.mutable_buffers_1.mutable_buffers_1.overload2 mutable_buffers_1]``(
+ const mutable_buffer & b);
+
+
+[section:overload1 mutable_buffers_1::mutable_buffers_1 (1 of 2 overloads)]
+
+Construct to represent a given memory range.
+
+ mutable_buffers_1(
+ void * data,
+ std::size_t size);
+
+
+
+[endsect]
+
+
+
+[section:overload2 mutable_buffers_1::mutable_buffers_1 (2 of 2 overloads)]
+
 Construct to represent a single modifiable buffer.
 
   mutable_buffers_1(
@@ -42652,9 +43025,11 @@
 [endsect]
 
 
+[endsect]
+
 [section:operator_plus_ mutable_buffers_1::operator+]
 
-Create a new modifiable buffer that is offset from the start of another.
+[indexterm2 operator+..mutable_buffers_1] Create a new modifiable buffer that is offset from the start of another.
 
   mutable_buffer ``[link boost_asio.reference.mutable_buffers_1.operator_plus_.overload1 operator+]``(
       const mutable_buffer & b,
@@ -42703,7 +43078,7 @@
 
 [section:value_type mutable_buffers_1::value_type]
 
-The type for each element in the list of buffers.
+[indexterm2 value_type..mutable_buffers_1] The type for each element in the list of buffers.
 
   typedef mutable_buffer value_type;
 
@@ -42796,7 +43171,7 @@
 
 [section:begin null_buffers::begin]
 
-Get a random-access iterator to the first element.
+[indexterm2 begin..null_buffers] Get a random-access iterator to the first element.
 
   const_iterator begin() const;
 
@@ -42808,7 +43183,7 @@
 
 [section:const_iterator null_buffers::const_iterator]
 
-A random-access iterator type that may be used to read elements.
+[indexterm2 const_iterator..null_buffers] A random-access iterator type that may be used to read elements.
 
   typedef const mutable_buffer * const_iterator;
 
@@ -42821,7 +43196,7 @@
 
 [section:end null_buffers::end]
 
-Get a random-access iterator for one past the last element.
+[indexterm2 end..null_buffers] Get a random-access iterator for one past the last element.
 
   const_iterator end() const;
 
@@ -42833,7 +43208,7 @@
 
 [section:value_type null_buffers::value_type]
 
-The type for each element in the list of buffers.
+[indexterm2 value_type..null_buffers] The type for each element in the list of buffers.
 
   typedef mutable_buffer value_type;
 
@@ -42883,7 +43258,7 @@
 
 [section:placeholders__bytes_transferred placeholders::bytes_transferred]
 
-An argument placeholder, for use with boost::bind(), that corresponds to the bytes_transferred argument of a handler for asynchronous functions such as boost::asio::basic_stream_socket::async_write_some or boost::asio::async_write.
+[indexterm1 placeholders::bytes_transferred] An argument placeholder, for use with boost::bind(), that corresponds to the bytes_transferred argument of a handler for asynchronous functions such as boost::asio::basic_stream_socket::async_write_some or boost::asio::async_write.
 
   unspecified bytes_transferred;
 
@@ -42895,7 +43270,7 @@
 
 [section:placeholders__error placeholders::error]
 
-An argument placeholder, for use with boost::bind(), that corresponds to the error argument of a handler for any of the asynchronous functions.
+[indexterm1 placeholders::error] An argument placeholder, for use with boost::bind(), that corresponds to the error argument of a handler for any of the asynchronous functions.
 
   unspecified error;
 
@@ -42907,7 +43282,7 @@
 
 [section:placeholders__iterator placeholders::iterator]
 
-An argument placeholder, for use with boost::bind(), that corresponds to the iterator argument of a handler for asynchronous functions such as boost::asio::basic_resolver::resolve.
+[indexterm1 placeholders::iterator] An argument placeholder, for use with boost::bind(), that corresponds to the iterator argument of a handler for asynchronous functions such as boost::asio::basic_resolver::resolve.
 
   unspecified iterator;
 
@@ -43070,7 +43445,7 @@
 
 [section:assign posix::basic_descriptor::assign]
 
-Assign an existing native descriptor to the descriptor.
+[indexterm2 assign..posix::basic_descriptor] Assign an existing native descriptor to the descriptor.
 
   void ``[link boost_asio.reference.posix__basic_descriptor.assign.overload1 assign]``(
       const native_type & native_descriptor);
@@ -43110,7 +43485,7 @@
 
 [section:basic_descriptor posix::basic_descriptor::basic_descriptor]
 
-Construct a basic_descriptor without opening it.
+[indexterm2 basic_descriptor..posix::basic_descriptor] Construct a basic_descriptor without opening it.
 
   ``[link boost_asio.reference.posix__basic_descriptor.basic_descriptor.overload1 basic_descriptor]``(
       boost::asio::io_service & io_service);
@@ -43191,7 +43566,7 @@
 
 ['Inherited from posix::descriptor_base.]
 
-IO control command to get the amount of data that can be read without blocking.
+[indexterm2 bytes_readable..posix::basic_descriptor] IO control command to get the amount of data that can be read without blocking.
 
   typedef implementation_defined bytes_readable;
 
@@ -43220,7 +43595,7 @@
 
 [section:cancel posix::basic_descriptor::cancel]
 
-Cancel all asynchronous operations associated with the descriptor.
+[indexterm2 cancel..posix::basic_descriptor] Cancel all asynchronous operations associated with the descriptor.
 
   void ``[link boost_asio.reference.posix__basic_descriptor.cancel.overload1 cancel]``();
 
@@ -43282,7 +43657,7 @@
 
 [section:close posix::basic_descriptor::close]
 
-Close the descriptor.
+[indexterm2 close..posix::basic_descriptor] Close the descriptor.
 
   void ``[link boost_asio.reference.posix__basic_descriptor.close.overload1 close]``();
 
@@ -43348,7 +43723,7 @@
 
 ['Inherited from basic_io_object.]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..posix::basic_descriptor] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -43371,7 +43746,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation of the I/O object.
+[indexterm2 implementation..posix::basic_descriptor] The underlying implementation of the I/O object.
 
   implementation_type implementation;
 
@@ -43386,7 +43761,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation type of I/O object.
+[indexterm2 implementation_type..posix::basic_descriptor] The underlying implementation type of I/O object.
 
   typedef service_type::implementation_type implementation_type;
 
@@ -43398,7 +43773,7 @@
 
 [section:io_control posix::basic_descriptor::io_control]
 
-Perform an IO control command on the descriptor.
+[indexterm2 io_control..posix::basic_descriptor] Perform an IO control command on the descriptor.
 
   template<
       typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
@@ -43518,7 +43893,7 @@
 
 ['Inherited from basic_io_object.]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..posix::basic_descriptor] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -43538,7 +43913,7 @@
 
 [section:is_open posix::basic_descriptor::is_open]
 
-Determine whether the descriptor is open.
+[indexterm2 is_open..posix::basic_descriptor] Determine whether the descriptor is open.
 
   bool is_open() const;
 
@@ -43550,7 +43925,7 @@
 
 [section:lowest_layer posix::basic_descriptor::lowest_layer]
 
-Get a reference to the lowest layer.
+[indexterm2 lowest_layer..posix::basic_descriptor] Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -43570,7 +43945,7 @@
 
 [section:lowest_layer_type posix::basic_descriptor::lowest_layer_type]
 
-A basic_descriptor is always the lowest layer.
+[indexterm2 lowest_layer_type..posix::basic_descriptor] A basic_descriptor is always the lowest layer.
 
   typedef basic_descriptor< DescriptorService > lowest_layer_type;
 
@@ -43724,7 +44099,7 @@
 
 [section:native posix::basic_descriptor::native]
 
-Get the native descriptor representation.
+[indexterm2 native..posix::basic_descriptor] Get the native descriptor representation.
 
   native_type native();
 
@@ -43738,7 +44113,7 @@
 
 [section:native_type posix::basic_descriptor::native_type]
 
-The native representation of a descriptor.
+[indexterm2 native_type..posix::basic_descriptor] The native representation of a descriptor.
 
   typedef DescriptorService::native_type native_type;
 
@@ -43754,7 +44129,7 @@
 
 ['Inherited from posix::descriptor_base.]
 
-IO control command to set the blocking mode of the descriptor.
+[indexterm2 non_blocking_io..posix::basic_descriptor] IO control command to set the blocking mode of the descriptor.
 
   typedef implementation_defined non_blocking_io;
 
@@ -43786,7 +44161,7 @@
 
 ['Inherited from basic_io_object.]
 
-The service associated with the I/O object.
+[indexterm2 service..posix::basic_descriptor] The service associated with the I/O object.
 
   service_type & service;
 
@@ -43801,7 +44176,7 @@
 
 ['Inherited from basic_io_object.]
 
-The type of the service that will be used to provide I/O operations.
+[indexterm2 service_type..posix::basic_descriptor] The type of the service that will be used to provide I/O operations.
 
   typedef DescriptorService service_type;
 
@@ -43814,7 +44189,7 @@
 
 [section:_basic_descriptor posix::basic_descriptor::~basic_descriptor]
 
-Protected destructor to prevent deletion through this type.
+[indexterm2 ~basic_descriptor..posix::basic_descriptor] Protected destructor to prevent deletion through this type.
 
   ~basic_descriptor();
 
@@ -43988,7 +44363,7 @@
 
 [section:assign posix::basic_stream_descriptor::assign]
 
-Assign an existing native descriptor to the descriptor.
+[indexterm2 assign..posix::basic_stream_descriptor] Assign an existing native descriptor to the descriptor.
 
   void ``[link boost_asio.reference.posix__basic_stream_descriptor.assign.overload1 assign]``(
       const native_type & native_descriptor);
@@ -44035,7 +44410,7 @@
 
 [section:async_read_some posix::basic_stream_descriptor::async_read_some]
 
-Start an asynchronous read.
+[indexterm2 async_read_some..posix::basic_stream_descriptor] Start an asynchronous read.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -44061,7 +44436,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes read.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -44091,7 +44465,7 @@
 
 [section:async_write_some posix::basic_stream_descriptor::async_write_some]
 
-Start an asynchronous write.
+[indexterm2 async_write_some..posix::basic_stream_descriptor] Start an asynchronous write.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -44117,7 +44491,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes written.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -44146,7 +44519,7 @@
 
 [section:basic_stream_descriptor posix::basic_stream_descriptor::basic_stream_descriptor]
 
-Construct a basic_stream_descriptor without opening it.
+[indexterm2 basic_stream_descriptor..posix::basic_stream_descriptor] Construct a basic_stream_descriptor without opening it.
 
   ``[link boost_asio.reference.posix__basic_stream_descriptor.basic_stream_descriptor.overload1 basic_stream_descriptor]``(
       boost::asio::io_service & io_service);
@@ -44227,7 +44600,7 @@
 
 ['Inherited from posix::descriptor_base.]
 
-IO control command to get the amount of data that can be read without blocking.
+[indexterm2 bytes_readable..posix::basic_stream_descriptor] IO control command to get the amount of data that can be read without blocking.
 
   typedef implementation_defined bytes_readable;
 
@@ -44256,7 +44629,7 @@
 
 [section:cancel posix::basic_stream_descriptor::cancel]
 
-Cancel all asynchronous operations associated with the descriptor.
+[indexterm2 cancel..posix::basic_stream_descriptor] Cancel all asynchronous operations associated with the descriptor.
 
   void ``[link boost_asio.reference.posix__basic_stream_descriptor.cancel.overload1 cancel]``();
 
@@ -44324,7 +44697,7 @@
 
 [section:close posix::basic_stream_descriptor::close]
 
-Close the descriptor.
+[indexterm2 close..posix::basic_stream_descriptor] Close the descriptor.
 
   void ``[link boost_asio.reference.posix__basic_stream_descriptor.close.overload1 close]``();
 
@@ -44396,7 +44769,7 @@
 
 ['Inherited from basic_io_object.]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..posix::basic_stream_descriptor] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -44419,7 +44792,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation of the I/O object.
+[indexterm2 implementation..posix::basic_stream_descriptor] The underlying implementation of the I/O object.
 
   implementation_type implementation;
 
@@ -44434,7 +44807,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation type of I/O object.
+[indexterm2 implementation_type..posix::basic_stream_descriptor] The underlying implementation type of I/O object.
 
   typedef service_type::implementation_type implementation_type;
 
@@ -44446,7 +44819,7 @@
 
 [section:io_control posix::basic_stream_descriptor::io_control]
 
-Perform an IO control command on the descriptor.
+[indexterm2 io_control..posix::basic_stream_descriptor] Perform an IO control command on the descriptor.
 
   void ``[link boost_asio.reference.posix__basic_stream_descriptor.io_control.overload1 io_control]``(
       IoControlCommand & command);
@@ -44564,7 +44937,7 @@
 
 ['Inherited from basic_io_object.]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..posix::basic_stream_descriptor] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -44587,7 +44960,7 @@
 
 ['Inherited from posix::basic_descriptor.]
 
-Determine whether the descriptor is open.
+[indexterm2 is_open..posix::basic_stream_descriptor] Determine whether the descriptor is open.
 
   bool is_open() const;
 
@@ -44602,7 +44975,7 @@
 
 ['Inherited from posix::basic_descriptor.]
 
-Get a reference to the lowest layer.
+[indexterm2 lowest_layer..posix::basic_stream_descriptor] Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -44625,7 +44998,7 @@
 
 ['Inherited from posix::basic_descriptor.]
 
-A basic_descriptor is always the lowest layer.
+[indexterm2 lowest_layer_type..posix::basic_stream_descriptor] A basic_descriptor is always the lowest layer.
 
   typedef basic_descriptor< StreamDescriptorService > lowest_layer_type;
 
@@ -44782,7 +45155,7 @@
 
 ['Inherited from posix::basic_descriptor.]
 
-Get the native descriptor representation.
+[indexterm2 native..posix::basic_stream_descriptor] Get the native descriptor representation.
 
   native_type native();
 
@@ -44796,7 +45169,7 @@
 
 [section:native_type posix::basic_stream_descriptor::native_type]
 
-The native representation of a descriptor.
+[indexterm2 native_type..posix::basic_stream_descriptor] The native representation of a descriptor.
 
   typedef StreamDescriptorService::native_type native_type;
 
@@ -44812,7 +45185,7 @@
 
 ['Inherited from posix::descriptor_base.]
 
-IO control command to set the blocking mode of the descriptor.
+[indexterm2 non_blocking_io..posix::basic_stream_descriptor] IO control command to set the blocking mode of the descriptor.
 
   typedef implementation_defined non_blocking_io;
 
@@ -44840,7 +45213,7 @@
 
 [section:read_some posix::basic_stream_descriptor::read_some]
 
-Read some data from the descriptor.
+[indexterm2 read_some..posix::basic_stream_descriptor] Read some data from the descriptor.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -44958,7 +45331,7 @@
 
 ['Inherited from basic_io_object.]
 
-The service associated with the I/O object.
+[indexterm2 service..posix::basic_stream_descriptor] The service associated with the I/O object.
 
   service_type & service;
 
@@ -44973,7 +45346,7 @@
 
 ['Inherited from basic_io_object.]
 
-The type of the service that will be used to provide I/O operations.
+[indexterm2 service_type..posix::basic_stream_descriptor] The type of the service that will be used to provide I/O operations.
 
   typedef StreamDescriptorService service_type;
 
@@ -44985,7 +45358,7 @@
 
 [section:write_some posix::basic_stream_descriptor::write_some]
 
-Write some data to the descriptor.
+[indexterm2 write_some..posix::basic_stream_descriptor] Write some data to the descriptor.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -45141,7 +45514,7 @@
 
 [section:bytes_readable posix::descriptor_base::bytes_readable]
 
-IO control command to get the amount of data that can be read without blocking.
+[indexterm2 bytes_readable..posix::descriptor_base] IO control command to get the amount of data that can be read without blocking.
 
   typedef implementation_defined bytes_readable;
 
@@ -45171,7 +45544,7 @@
 
 [section:non_blocking_io posix::descriptor_base::non_blocking_io]
 
-IO control command to set the blocking mode of the descriptor.
+[indexterm2 non_blocking_io..posix::descriptor_base] IO control command to set the blocking mode of the descriptor.
 
   typedef implementation_defined non_blocking_io;
 
@@ -45200,7 +45573,7 @@
 
 [section:_descriptor_base posix::descriptor_base::~descriptor_base]
 
-Protected destructor to prevent deletion through this type.
+[indexterm2 ~descriptor_base..posix::descriptor_base] Protected destructor to prevent deletion through this type.
 
   ~descriptor_base();
 
@@ -45215,7 +45588,7 @@
 
 [section:posix__stream_descriptor posix::stream_descriptor]
 
-Typedef for the typical usage of a stream-oriented descriptor.
+[indexterm1 posix::stream_descriptor] Typedef for the typical usage of a stream-oriented descriptor.
 
   typedef basic_stream_descriptor stream_descriptor;
 
@@ -45503,7 +45876,7 @@
 
 [section:assign posix::stream_descriptor_service::assign]
 
-Assign an existing native descriptor to a stream descriptor.
+[indexterm2 assign..posix::stream_descriptor_service] Assign an existing native descriptor to a stream descriptor.
 
   boost::system::error_code assign(
       implementation_type & impl,
@@ -45518,7 +45891,7 @@
 
 [section:async_read_some posix::stream_descriptor_service::async_read_some]
 
-Start an asynchronous read.
+[indexterm2 async_read_some..posix::stream_descriptor_service] Start an asynchronous read.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -45536,7 +45909,7 @@
 
 [section:async_write_some posix::stream_descriptor_service::async_write_some]
 
-Start an asynchronous write.
+[indexterm2 async_write_some..posix::stream_descriptor_service] Start an asynchronous write.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -45554,7 +45927,7 @@
 
 [section:cancel posix::stream_descriptor_service::cancel]
 
-Cancel all asynchronous operations associated with the descriptor.
+[indexterm2 cancel..posix::stream_descriptor_service] Cancel all asynchronous operations associated with the descriptor.
 
   boost::system::error_code cancel(
       implementation_type & impl,
@@ -45568,7 +45941,7 @@
 
 [section:close posix::stream_descriptor_service::close]
 
-Close a stream descriptor implementation.
+[indexterm2 close..posix::stream_descriptor_service] Close a stream descriptor implementation.
 
   boost::system::error_code close(
       implementation_type & impl,
@@ -45582,7 +45955,7 @@
 
 [section:construct posix::stream_descriptor_service::construct]
 
-Construct a new stream descriptor implementation.
+[indexterm2 construct..posix::stream_descriptor_service] Construct a new stream descriptor implementation.
 
   void construct(
       implementation_type & impl);
@@ -45595,7 +45968,7 @@
 
 [section:destroy posix::stream_descriptor_service::destroy]
 
-Destroy a stream descriptor implementation.
+[indexterm2 destroy..posix::stream_descriptor_service] Destroy a stream descriptor implementation.
 
   void destroy(
       implementation_type & impl);
@@ -45611,7 +45984,7 @@
 
 ['Inherited from io_service.]
 
-Get the io_service object that owns the service.
+[indexterm2 get_io_service..posix::stream_descriptor_service] Get the io_service object that owns the service.
 
   boost::asio::io_service & get_io_service();
 
@@ -45623,7 +45996,7 @@
 
 [section:id posix::stream_descriptor_service::id]
 
-The unique service identifier.
+[indexterm2 id..posix::stream_descriptor_service] The unique service identifier.
 
   static boost::asio::io_service::id id;
 
@@ -45635,7 +46008,7 @@
 
 [section:implementation_type posix::stream_descriptor_service::implementation_type]
 
-The type of a stream descriptor implementation.
+[indexterm2 implementation_type..posix::stream_descriptor_service] The type of a stream descriptor implementation.
 
   typedef implementation_defined implementation_type;
 
@@ -45648,7 +46021,7 @@
 
 [section:io_control posix::stream_descriptor_service::io_control]
 
-Perform an IO control command on the descriptor.
+[indexterm2 io_control..posix::stream_descriptor_service] Perform an IO control command on the descriptor.
 
   template<
       typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
@@ -45668,7 +46041,7 @@
 
 ['Inherited from io_service.]
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+[indexterm2 io_service..posix::stream_descriptor_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
   boost::asio::io_service & io_service();
 
@@ -45680,7 +46053,7 @@
 
 [section:is_open posix::stream_descriptor_service::is_open]
 
-Determine whether the descriptor is open.
+[indexterm2 is_open..posix::stream_descriptor_service] Determine whether the descriptor is open.
 
   bool is_open(
       const implementation_type & impl) const;
@@ -45693,7 +46066,7 @@
 
 [section:native posix::stream_descriptor_service::native]
 
-Get the native descriptor implementation.
+[indexterm2 native..posix::stream_descriptor_service] Get the native descriptor implementation.
 
   native_type native(
       implementation_type & impl);
@@ -45706,7 +46079,7 @@
 
 [section:native_type posix::stream_descriptor_service::native_type]
 
-The native descriptor type.
+[indexterm2 native_type..posix::stream_descriptor_service] The native descriptor type.
 
   typedef implementation_defined native_type;
 
@@ -45719,7 +46092,7 @@
 
 [section:read_some posix::stream_descriptor_service::read_some]
 
-Read some data from the stream.
+[indexterm2 read_some..posix::stream_descriptor_service] Read some data from the stream.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -45736,7 +46109,7 @@
 
 [section:shutdown_service posix::stream_descriptor_service::shutdown_service]
 
-Destroy all user-defined descriptorr objects owned by the service.
+[indexterm2 shutdown_service..posix::stream_descriptor_service] Destroy all user-defined descriptorr objects owned by the service.
 
   void shutdown_service();
 
@@ -45748,7 +46121,7 @@
 
 [section:stream_descriptor_service posix::stream_descriptor_service::stream_descriptor_service]
 
-Construct a new stream descriptor service for the specified io_service.
+[indexterm2 stream_descriptor_service..posix::stream_descriptor_service] Construct a new stream descriptor service for the specified io_service.
 
   stream_descriptor_service(
       boost::asio::io_service & io_service);
@@ -45761,7 +46134,7 @@
 
 [section:write_some posix::stream_descriptor_service::write_some]
 
-Write the given data to the stream.
+[indexterm2 write_some..posix::stream_descriptor_service] Write the given data to the stream.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -45997,7 +46370,7 @@
 
 [section:assign raw_socket_service::assign]
 
-Assign an existing native socket to a raw socket.
+[indexterm2 assign..raw_socket_service] Assign an existing native socket to a raw socket.
 
   boost::system::error_code assign(
       implementation_type & impl,
@@ -46013,7 +46386,7 @@
 
 [section:async_connect raw_socket_service::async_connect]
 
-Start an asynchronous connect.
+[indexterm2 async_connect..raw_socket_service] Start an asynchronous connect.
 
   template<
       typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
@@ -46030,7 +46403,7 @@
 
 [section:async_receive raw_socket_service::async_receive]
 
-Start an asynchronous receive.
+[indexterm2 async_receive..raw_socket_service] Start an asynchronous receive.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -46049,7 +46422,7 @@
 
 [section:async_receive_from raw_socket_service::async_receive_from]
 
-Start an asynchronous receive that will get the endpoint of the sender.
+[indexterm2 async_receive_from..raw_socket_service] Start an asynchronous receive that will get the endpoint of the sender.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -46069,7 +46442,7 @@
 
 [section:async_send raw_socket_service::async_send]
 
-Start an asynchronous send.
+[indexterm2 async_send..raw_socket_service] Start an asynchronous send.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -46088,7 +46461,7 @@
 
 [section:async_send_to raw_socket_service::async_send_to]
 
-Start an asynchronous send.
+[indexterm2 async_send_to..raw_socket_service] Start an asynchronous send.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -46108,7 +46481,7 @@
 
 [section:at_mark raw_socket_service::at_mark]
 
-Determine whether the socket is at the out-of-band data mark.
+[indexterm2 at_mark..raw_socket_service] Determine whether the socket is at the out-of-band data mark.
 
   bool at_mark(
       const implementation_type & impl,
@@ -46122,7 +46495,7 @@
 
 [section:available raw_socket_service::available]
 
-Determine the number of bytes available for reading.
+[indexterm2 available..raw_socket_service] Determine the number of bytes available for reading.
 
   std::size_t available(
       const implementation_type & impl,
@@ -46136,7 +46509,7 @@
 
 [section:bind raw_socket_service::bind]
 
-
+[indexterm2 bind..raw_socket_service]
 
   boost::system::error_code bind(
       implementation_type & impl,
@@ -46151,7 +46524,7 @@
 
 [section:cancel raw_socket_service::cancel]
 
-Cancel all asynchronous operations associated with the socket.
+[indexterm2 cancel..raw_socket_service] Cancel all asynchronous operations associated with the socket.
 
   boost::system::error_code cancel(
       implementation_type & impl,
@@ -46165,7 +46538,7 @@
 
 [section:close raw_socket_service::close]
 
-Close a raw socket implementation.
+[indexterm2 close..raw_socket_service] Close a raw socket implementation.
 
   boost::system::error_code close(
       implementation_type & impl,
@@ -46179,7 +46552,7 @@
 
 [section:connect raw_socket_service::connect]
 
-Connect the raw socket to the specified endpoint.
+[indexterm2 connect..raw_socket_service] Connect the raw socket to the specified endpoint.
 
   boost::system::error_code connect(
       implementation_type & impl,
@@ -46194,7 +46567,7 @@
 
 [section:construct raw_socket_service::construct]
 
-Construct a new raw socket implementation.
+[indexterm2 construct..raw_socket_service] Construct a new raw socket implementation.
 
   void construct(
       implementation_type & impl);
@@ -46207,7 +46580,7 @@
 
 [section:destroy raw_socket_service::destroy]
 
-Destroy a raw socket implementation.
+[indexterm2 destroy..raw_socket_service] Destroy a raw socket implementation.
 
   void destroy(
       implementation_type & impl);
@@ -46220,7 +46593,7 @@
 
 [section:endpoint_type raw_socket_service::endpoint_type]
 
-The endpoint type.
+[indexterm2 endpoint_type..raw_socket_service] The endpoint type.
 
   typedef Protocol::endpoint endpoint_type;
 
@@ -46236,7 +46609,7 @@
 
 ['Inherited from io_service.]
 
-Get the io_service object that owns the service.
+[indexterm2 get_io_service..raw_socket_service] Get the io_service object that owns the service.
 
   boost::asio::io_service & get_io_service();
 
@@ -46248,7 +46621,7 @@
 
 [section:get_option raw_socket_service::get_option]
 
-Get a socket option.
+[indexterm2 get_option..raw_socket_service] Get a socket option.
 
   template<
       typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
@@ -46265,7 +46638,7 @@
 
 [section:id raw_socket_service::id]
 
-The unique service identifier.
+[indexterm2 id..raw_socket_service] The unique service identifier.
 
   static boost::asio::io_service::id id;
 
@@ -46277,7 +46650,7 @@
 
 [section:implementation_type raw_socket_service::implementation_type]
 
-The type of a raw socket.
+[indexterm2 implementation_type..raw_socket_service] The type of a raw socket.
 
   typedef implementation_defined implementation_type;
 
@@ -46290,7 +46663,7 @@
 
 [section:io_control raw_socket_service::io_control]
 
-Perform an IO control command on the socket.
+[indexterm2 io_control..raw_socket_service] Perform an IO control command on the socket.
 
   template<
       typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
@@ -46310,7 +46683,7 @@
 
 ['Inherited from io_service.]
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+[indexterm2 io_service..raw_socket_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
   boost::asio::io_service & io_service();
 
@@ -46322,7 +46695,7 @@
 
 [section:is_open raw_socket_service::is_open]
 
-Determine whether the socket is open.
+[indexterm2 is_open..raw_socket_service] Determine whether the socket is open.
 
   bool is_open(
       const implementation_type & impl) const;
@@ -46335,7 +46708,7 @@
 
 [section:local_endpoint raw_socket_service::local_endpoint]
 
-Get the local endpoint.
+[indexterm2 local_endpoint..raw_socket_service] Get the local endpoint.
 
   endpoint_type local_endpoint(
       const implementation_type & impl,
@@ -46349,7 +46722,7 @@
 
 [section:native raw_socket_service::native]
 
-Get the native socket implementation.
+[indexterm2 native..raw_socket_service] Get the native socket implementation.
 
   native_type native(
       implementation_type & impl);
@@ -46362,7 +46735,7 @@
 
 [section:native_type raw_socket_service::native_type]
 
-The native socket type.
+[indexterm2 native_type..raw_socket_service] The native socket type.
 
   typedef implementation_defined native_type;
 
@@ -46375,7 +46748,7 @@
 
 [section:open raw_socket_service::open]
 
-
+[indexterm2 open..raw_socket_service]
 
   boost::system::error_code open(
       implementation_type & impl,
@@ -46390,7 +46763,7 @@
 
 [section:protocol_type raw_socket_service::protocol_type]
 
-The protocol type.
+[indexterm2 protocol_type..raw_socket_service] The protocol type.
 
   typedef Protocol protocol_type;
 
@@ -46403,7 +46776,7 @@
 
 [section:raw_socket_service raw_socket_service::raw_socket_service]
 
-Construct a new raw socket service for the specified io_service.
+[indexterm2 raw_socket_service..raw_socket_service] Construct a new raw socket service for the specified io_service.
 
   raw_socket_service(
       boost::asio::io_service & io_service);
@@ -46416,7 +46789,7 @@
 
 [section:receive raw_socket_service::receive]
 
-Receive some data from the peer.
+[indexterm2 receive..raw_socket_service] Receive some data from the peer.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -46434,7 +46807,7 @@
 
 [section:receive_from raw_socket_service::receive_from]
 
-Receive raw data with the endpoint of the sender.
+[indexterm2 receive_from..raw_socket_service] Receive raw data with the endpoint of the sender.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -46453,7 +46826,7 @@
 
 [section:remote_endpoint raw_socket_service::remote_endpoint]
 
-Get the remote endpoint.
+[indexterm2 remote_endpoint..raw_socket_service] Get the remote endpoint.
 
   endpoint_type remote_endpoint(
       const implementation_type & impl,
@@ -46467,7 +46840,7 @@
 
 [section:send raw_socket_service::send]
 
-Send the given data to the peer.
+[indexterm2 send..raw_socket_service] Send the given data to the peer.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -46485,7 +46858,7 @@
 
 [section:send_to raw_socket_service::send_to]
 
-Send raw data to the specified endpoint.
+[indexterm2 send_to..raw_socket_service] Send raw data to the specified endpoint.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -46504,7 +46877,7 @@
 
 [section:set_option raw_socket_service::set_option]
 
-Set a socket option.
+[indexterm2 set_option..raw_socket_service] Set a socket option.
 
   template<
       typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
@@ -46521,7 +46894,7 @@
 
 [section:shutdown raw_socket_service::shutdown]
 
-Disable sends or receives on the socket.
+[indexterm2 shutdown..raw_socket_service] Disable sends or receives on the socket.
 
   boost::system::error_code shutdown(
       implementation_type & impl,
@@ -46536,7 +46909,7 @@
 
 [section:shutdown_service raw_socket_service::shutdown_service]
 
-Destroy all user-defined handler objects owned by the service.
+[indexterm2 shutdown_service..raw_socket_service] Destroy all user-defined handler objects owned by the service.
 
   void shutdown_service();
 
@@ -46550,8 +46923,8 @@
 
 [section:read read]
 
-Attempt to read a certain amount of data from a stream before returning.
-
+[indexterm1 read] Attempt to read a certain amount of data from a stream before returning.
+
   template<
       typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -46721,7 +47094,6 @@
      std::size_t bytes_transferred // Number of bytes transferred
                                              // so far.
    );
-
 ``
 A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's read\_some function are required.]]
 
@@ -46801,7 +47173,6 @@
      std::size_t bytes_transferred // Number of bytes transferred
                                              // so far.
    );
-
 ``
 A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's read\_some function are required.]]
 
@@ -46920,7 +47291,6 @@
      std::size_t bytes_transferred // Number of bytes transferred
                                              // so far.
    );
-
 ``
 A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's read\_some function are required.]]
 
@@ -46986,7 +47356,6 @@
      std::size_t bytes_transferred // Number of bytes transferred
                                              // so far.
    );
-
 ``
 A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's read\_some function are required.]]
 
@@ -47007,8 +47376,8 @@
 
 [section:read_at read_at]
 
-Attempt to read a certain amount of data at the specified offset before returning.
-
+[indexterm1 read_at] Attempt to read a certain amount of data at the specified offset before returning.
+
   template<
       typename ``[link boost_asio.reference.SyncRandomAccessReadDevice SyncRandomAccessReadDevice]``,
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -47190,7 +47559,6 @@
      // Number of bytes transferred so far.
      std::size_t bytes_transferred
    );
-
 ``
 A return value of true indicates that the read operation is complete. False indicates that further calls to the device's read\_some\_at function are required.]]
 
@@ -47273,7 +47641,6 @@
      std::size_t bytes_transferred // Number of bytes transferred
                                              // so far.
    );
-
 ``
 A return value of true indicates that the read operation is complete. False indicates that further calls to the device's read\_some\_at function are required.]]
 
@@ -47398,7 +47765,6 @@
      // Number of bytes transferred so far.
      std::size_t bytes_transferred
    );
-
 ``
 A return value of true indicates that the read operation is complete. False indicates that further calls to the device's read\_some\_at function are required.]]
 
@@ -47467,7 +47833,6 @@
      // Number of bytes transferred so far.
      std::size_t bytes_transferred
    );
-
 ``
 A return value of true indicates that the read operation is complete. False indicates that further calls to the device's read\_some\_at function are required.]]
 
@@ -47488,8 +47853,8 @@
 
 [section:read_until read_until]
 
-Read data into a streambuf until a delimiter is encountered.
-
+[indexterm1 read_until] Read data into a streambuf until it contains a delimiter, matches a regular expression, or a function object indicates a match.
+
   template<
       typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
       typename Allocator>
@@ -47544,7 +47909,7 @@
   template<
       typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
       typename Allocator,
- typename ``[link boost_asio.reference.MatchCondition MatchCondition]``>
+ typename MatchCondition>
   std::size_t ``[link boost_asio.reference.read_until.overload7 read_until]``(
       SyncReadStream & s,
       boost::asio::basic_streambuf< Allocator > & b,
@@ -47554,7 +47919,7 @@
   template<
       typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
       typename Allocator,
- typename ``[link boost_asio.reference.MatchCondition MatchCondition]``>
+ typename MatchCondition>
   std::size_t ``[link boost_asio.reference.read_until.overload8 read_until]``(
       SyncReadStream & s,
       boost::asio::basic_streambuf< Allocator > & b,
@@ -47565,7 +47930,7 @@
 
 [section:overload1 read_until (1 of 8 overloads)]
 
-Read data into a streambuf until a delimiter is encountered.
+Read data into a streambuf until it contains a specified delimiter.
 
   template<
       typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
@@ -47612,6 +47977,10 @@
 
 ]
 
+[heading Remarks]
+
+After a successful read\_until operation, the streambuf may contain additional data beyond the delimiter. An application will typically leave that data in the streambuf for a subsequent read\_until operation to examine.
+
 [heading Example]
   
 To read data into a streambuf until a newline is encountered:
@@ -47633,7 +48002,7 @@
 
 [section:overload2 read_until (2 of 8 overloads)]
 
-Read data into a streambuf until a delimiter is encountered.
+Read data into a streambuf until it contains a specified delimiter.
 
   template<
       typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
@@ -47672,7 +48041,11 @@
 
 [heading Return Value]
       
-The number of bytes in the streambuf's get area up to and including the delimiter. Returns 0 if an error occurred.
+The number of bytes in the streambuf's get area up to and including the delimiter. Returns 0 if an error occurred.
+
+[heading Remarks]
+
+After a successful read\_until operation, the streambuf may contain additional data beyond the delimiter. An application will typically leave that data in the streambuf for a subsequent read\_until operation to examine.
 
 
 
@@ -47682,7 +48055,7 @@
 
 [section:overload3 read_until (3 of 8 overloads)]
 
-Read data into a streambuf until a delimiter is encountered.
+Read data into a streambuf until it contains a specified delimiter.
 
   template<
       typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
@@ -47729,6 +48102,10 @@
 
 ]
 
+[heading Remarks]
+
+After a successful read\_until operation, the streambuf may contain additional data beyond the delimiter. An application will typically leave that data in the streambuf for a subsequent read\_until operation to examine.
+
 [heading Example]
   
 To read data into a streambuf until a newline is encountered:
@@ -47750,7 +48127,7 @@
 
 [section:overload4 read_until (4 of 8 overloads)]
 
-Read data into a streambuf until a delimiter is encountered.
+Read data into a streambuf until it contains a specified delimiter.
 
   template<
       typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
@@ -47789,7 +48166,11 @@
 
 [heading Return Value]
       
-The number of bytes in the streambuf's get area up to and including the delimiter. Returns 0 if an error occurred.
+The number of bytes in the streambuf's get area up to and including the delimiter. Returns 0 if an error occurred.
+
+[heading Remarks]
+
+After a successful read\_until operation, the streambuf may contain additional data beyond the delimiter. An application will typically leave that data in the streambuf for a subsequent read\_until operation to examine.
 
 
 
@@ -47799,7 +48180,7 @@
 
 [section:overload5 read_until (5 of 8 overloads)]
 
-Read data into a streambuf until a regular expression is located.
+Read data into a streambuf until some part of the data it contains matches a regular expression.
 
   template<
       typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
@@ -47846,6 +48227,10 @@
 
 ]
 
+[heading Remarks]
+
+After a successful read\_until operation, the streambuf may contain additional data beyond that which matched the regular expression. An application will typically leave that data in the streambuf for a subsequent read\_until operation to examine.
+
 [heading Example]
   
 To read data into a streambuf until a CR-LF sequence is encountered:
@@ -47867,7 +48252,7 @@
 
 [section:overload6 read_until (6 of 8 overloads)]
 
-Read data into a streambuf until a regular expression is located.
+Read data into a streambuf until some part of the data it contains matches a regular expression.
 
   template<
       typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
@@ -47906,7 +48291,11 @@
 
 [heading Return Value]
       
-The number of bytes in the streambuf's get area up to and including the substring that matches the regular expression. Returns 0 if an error occurred.
+The number of bytes in the streambuf's get area up to and including the substring that matches the regular expression. Returns 0 if an error occurred.
+
+[heading Remarks]
+
+After a successful read\_until operation, the streambuf may contain additional data beyond that which matched the regular expression. An application will typically leave that data in the streambuf for a subsequent read\_until operation to examine.
 
 
 
@@ -47921,7 +48310,7 @@
   template<
       typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
       typename Allocator,
- typename ``[link boost_asio.reference.MatchCondition MatchCondition]``>
+ typename MatchCondition>
   std::size_t read_until(
       SyncReadStream & s,
       boost::asio::basic_streambuf< Allocator > & b,
@@ -47951,14 +48340,12 @@
 [[match_condition][The function object to be called to determine whether a match exists. The signature of the function object must be:
 ``
    pair<iterator, bool> match_condition(iterator begin, iterator end);
-
 ``
-where iterator represents the type:
+where `iterator` represents the type:
 ``
    buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
-
 ``
-The iterator parameters begin and end define the range of bytes to be scanned to determine whether there is a match. The first member of the return value is an iterator marking one-past-the-end of the bytes that have been consumed by the match function. This iterator is used to calculate the begin parameter for any subsequent invocation of the match condition. The second member of the return value is true if a match has been found, false otherwise.]]
+The iterator parameters `begin` and `end` define the range of bytes to be scanned to determine whether there is a match. The `first` member of the return value is an iterator marking one-past-the-end of the bytes that have been consumed by the match function. This iterator is used to calculate the `begin` parameter for any subsequent invocation of the match condition. The `second` member of the return value is true if a match has been found, false otherwise.]]
 
 ]
 
@@ -47977,7 +48364,9 @@
 
 [heading Remarks]
       
-The default implementation of the is_match_condition type trait evaluates to true for function pointers and function objects with a result\_type typedef. It must be specialised for other user-defined function objects.
+After a successful read\_until operation, the streambuf may contain additional data beyond that which matched the function object. An application will typically leave that data in the streambuf for a subsequent
+
+The default implementation of the `is_match_condition` type trait evaluates to true for function pointers and function objects with a `result_type` typedef. It must be specialised for other user-defined function objects.
 
 [heading Examples]
   
@@ -48047,7 +48436,7 @@
   template<
       typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
       typename Allocator,
- typename ``[link boost_asio.reference.MatchCondition MatchCondition]``>
+ typename MatchCondition>
   std::size_t read_until(
       SyncReadStream & s,
       boost::asio::basic_streambuf< Allocator > & b,
@@ -48078,14 +48467,12 @@
 [[match_condition][The function object to be called to determine whether a match exists. The signature of the function object must be:
 ``
    pair<iterator, bool> match_condition(iterator begin, iterator end);
-
 ``
-where iterator represents the type:
+where `iterator` represents the type:
 ``
    buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
-
 ``
-The iterator parameters begin and end define the range of bytes to be scanned to determine whether there is a match. The first member of the return value is an iterator marking one-past-the-end of the bytes that have been consumed by the match function. This iterator is used to calculate the begin parameter for any subsequent invocation of the match condition. The second member of the return value is true if a match has been found, false otherwise.]]
+The iterator parameters `begin` and `end` define the range of bytes to be scanned to determine whether there is a match. The `first` member of the return value is an iterator marking one-past-the-end of the bytes that have been consumed by the match function. This iterator is used to calculate the `begin` parameter for any subsequent invocation of the match condition. The `second` member of the return value is true if a match has been found, false otherwise.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -48097,7 +48484,9 @@
 
 [heading Remarks]
       
-The default implementation of the is_match_condition type trait evaluates to true for function pointers and function objects with a result\_type typedef. It must be specialised for other user-defined function objects.
+After a successful read\_until operation, the streambuf may contain additional data beyond that which matched the function object. An application will typically leave that data in the streambuf for a subsequent
+
+The default implementation of the `is_match_condition` type trait evaluates to true for function pointers and function objects with a `result_type` typedef. It must be specialised for other user-defined function objects.
 
 
 
@@ -48109,7 +48498,7 @@
 
 [section:serial_port serial_port]
 
-Typedef for the typical usage of a serial port.
+[indexterm1 serial_port] Typedef for the typical usage of a serial port.
 
   typedef basic_serial_port serial_port;
 
@@ -48332,7 +48721,7 @@
 
 [section:_serial_port_base serial_port_base::~serial_port_base]
 
-Protected destructor to prevent deletion through this type.
+[indexterm2 ~serial_port_base..serial_port_base] Protected destructor to prevent deletion through this type.
 
   ~serial_port_base();
 
@@ -48382,7 +48771,7 @@
 
 [section:baud_rate serial_port_base::baud_rate::baud_rate]
 
-
+[indexterm2 baud_rate..serial_port_base::baud_rate]
 
   baud_rate(
       unsigned int rate = 0);
@@ -48395,7 +48784,7 @@
 
 [section:load serial_port_base::baud_rate::load]
 
-
+[indexterm2 load..serial_port_base::baud_rate]
 
   boost::system::error_code load(
       const BOOST_ASIO_OPTION_STORAGE & storage,
@@ -48409,7 +48798,7 @@
 
 [section:store serial_port_base::baud_rate::store]
 
-
+[indexterm2 store..serial_port_base::baud_rate]
 
   boost::system::error_code store(
       BOOST_ASIO_OPTION_STORAGE & storage,
@@ -48423,7 +48812,7 @@
 
 [section:value serial_port_base::baud_rate::value]
 
-
+[indexterm2 value..serial_port_base::baud_rate]
 
   unsigned int value() const;
 
@@ -48473,7 +48862,7 @@
 
 [section:character_size serial_port_base::character_size::character_size]
 
-
+[indexterm2 character_size..serial_port_base::character_size]
 
   character_size(
       unsigned int t = 8);
@@ -48486,7 +48875,7 @@
 
 [section:load serial_port_base::character_size::load]
 
-
+[indexterm2 load..serial_port_base::character_size]
 
   boost::system::error_code load(
       const BOOST_ASIO_OPTION_STORAGE & storage,
@@ -48500,7 +48889,7 @@
 
 [section:store serial_port_base::character_size::store]
 
-
+[indexterm2 store..serial_port_base::character_size]
 
   boost::system::error_code store(
       BOOST_ASIO_OPTION_STORAGE & storage,
@@ -48514,7 +48903,7 @@
 
 [section:value serial_port_base::character_size::value]
 
-
+[indexterm2 value..serial_port_base::character_size]
 
   unsigned int value() const;
 
@@ -48577,7 +48966,7 @@
 
 [section:flow_control serial_port_base::flow_control::flow_control]
 
-
+[indexterm2 flow_control..serial_port_base::flow_control]
 
   flow_control(
       type t = none);
@@ -48590,7 +48979,7 @@
 
 [section:load serial_port_base::flow_control::load]
 
-
+[indexterm2 load..serial_port_base::flow_control]
 
   boost::system::error_code load(
       const BOOST_ASIO_OPTION_STORAGE & storage,
@@ -48604,7 +48993,7 @@
 
 [section:store serial_port_base::flow_control::store]
 
-
+[indexterm2 store..serial_port_base::flow_control]
 
   boost::system::error_code store(
       BOOST_ASIO_OPTION_STORAGE & storage,
@@ -48618,7 +49007,7 @@
 
 [section:type serial_port_base::flow_control::type]
 
-
+[indexterm2 type..serial_port_base::flow_control]
 
   enum type
 
@@ -48650,7 +49039,7 @@
 
 [section:value serial_port_base::flow_control::value]
 
-
+[indexterm2 value..serial_port_base::flow_control]
 
   type value() const;
 
@@ -48713,7 +49102,7 @@
 
 [section:load serial_port_base::parity::load]
 
-
+[indexterm2 load..serial_port_base::parity]
 
   boost::system::error_code load(
       const BOOST_ASIO_OPTION_STORAGE & storage,
@@ -48727,7 +49116,7 @@
 
 [section:parity serial_port_base::parity::parity]
 
-
+[indexterm2 parity..serial_port_base::parity]
 
   parity(
       type t = none);
@@ -48740,7 +49129,7 @@
 
 [section:store serial_port_base::parity::store]
 
-
+[indexterm2 store..serial_port_base::parity]
 
   boost::system::error_code store(
       BOOST_ASIO_OPTION_STORAGE & storage,
@@ -48754,7 +49143,7 @@
 
 [section:type serial_port_base::parity::type]
 
-
+[indexterm2 type..serial_port_base::parity]
 
   enum type
 
@@ -48786,7 +49175,7 @@
 
 [section:value serial_port_base::parity::value]
 
-
+[indexterm2 value..serial_port_base::parity]
 
   type value() const;
 
@@ -48849,7 +49238,7 @@
 
 [section:load serial_port_base::stop_bits::load]
 
-
+[indexterm2 load..serial_port_base::stop_bits]
 
   boost::system::error_code load(
       const BOOST_ASIO_OPTION_STORAGE & storage,
@@ -48863,7 +49252,7 @@
 
 [section:stop_bits serial_port_base::stop_bits::stop_bits]
 
-
+[indexterm2 stop_bits..serial_port_base::stop_bits]
 
   stop_bits(
       type t = one);
@@ -48876,7 +49265,7 @@
 
 [section:store serial_port_base::stop_bits::store]
 
-
+[indexterm2 store..serial_port_base::stop_bits]
 
   boost::system::error_code store(
       BOOST_ASIO_OPTION_STORAGE & storage,
@@ -48890,7 +49279,7 @@
 
 [section:type serial_port_base::stop_bits::type]
 
-
+[indexterm2 type..serial_port_base::stop_bits]
 
   enum type
 
@@ -48922,7 +49311,7 @@
 
 [section:value serial_port_base::stop_bits::value]
 
-
+[indexterm2 value..serial_port_base::stop_bits]
 
   type value() const;
 
@@ -49077,7 +49466,7 @@
 
 [section:assign serial_port_service::assign]
 
-Assign an existing native handle to a serial port.
+[indexterm2 assign..serial_port_service] Assign an existing native handle to a serial port.
 
   boost::system::error_code assign(
       implementation_type & impl,
@@ -49092,7 +49481,7 @@
 
 [section:async_read_some serial_port_service::async_read_some]
 
-Start an asynchronous read.
+[indexterm2 async_read_some..serial_port_service] Start an asynchronous read.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -49110,7 +49499,7 @@
 
 [section:async_write_some serial_port_service::async_write_some]
 
-Start an asynchronous write.
+[indexterm2 async_write_some..serial_port_service] Start an asynchronous write.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -49128,7 +49517,7 @@
 
 [section:cancel serial_port_service::cancel]
 
-Cancel all asynchronous operations associated with the handle.
+[indexterm2 cancel..serial_port_service] Cancel all asynchronous operations associated with the handle.
 
   boost::system::error_code cancel(
       implementation_type & impl,
@@ -49142,7 +49531,7 @@
 
 [section:close serial_port_service::close]
 
-Close a serial port implementation.
+[indexterm2 close..serial_port_service] Close a serial port implementation.
 
   boost::system::error_code close(
       implementation_type & impl,
@@ -49156,7 +49545,7 @@
 
 [section:construct serial_port_service::construct]
 
-Construct a new serial port implementation.
+[indexterm2 construct..serial_port_service] Construct a new serial port implementation.
 
   void construct(
       implementation_type & impl);
@@ -49169,7 +49558,7 @@
 
 [section:destroy serial_port_service::destroy]
 
-Destroy a serial port implementation.
+[indexterm2 destroy..serial_port_service] Destroy a serial port implementation.
 
   void destroy(
       implementation_type & impl);
@@ -49185,7 +49574,7 @@
 
 ['Inherited from io_service.]
 
-Get the io_service object that owns the service.
+[indexterm2 get_io_service..serial_port_service] Get the io_service object that owns the service.
 
   boost::asio::io_service & get_io_service();
 
@@ -49197,7 +49586,7 @@
 
 [section:get_option serial_port_service::get_option]
 
-Get a serial port option.
+[indexterm2 get_option..serial_port_service] Get a serial port option.
 
   template<
       typename ``[link boost_asio.reference.GettableSerialPortOption GettableSerialPortOption]``>
@@ -49214,7 +49603,7 @@
 
 [section:id serial_port_service::id]
 
-The unique service identifier.
+[indexterm2 id..serial_port_service] The unique service identifier.
 
   static boost::asio::io_service::id id;
 
@@ -49226,7 +49615,7 @@
 
 [section:implementation_type serial_port_service::implementation_type]
 
-The type of a serial port implementation.
+[indexterm2 implementation_type..serial_port_service] The type of a serial port implementation.
 
   typedef implementation_defined implementation_type;
 
@@ -49242,7 +49631,7 @@
 
 ['Inherited from io_service.]
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+[indexterm2 io_service..serial_port_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
   boost::asio::io_service & io_service();
 
@@ -49254,7 +49643,7 @@
 
 [section:is_open serial_port_service::is_open]
 
-Determine whether the handle is open.
+[indexterm2 is_open..serial_port_service] Determine whether the handle is open.
 
   bool is_open(
       const implementation_type & impl) const;
@@ -49267,7 +49656,7 @@
 
 [section:native serial_port_service::native]
 
-Get the native handle implementation.
+[indexterm2 native..serial_port_service] Get the native handle implementation.
 
   native_type native(
       implementation_type & impl);
@@ -49280,7 +49669,7 @@
 
 [section:native_type serial_port_service::native_type]
 
-The native handle type.
+[indexterm2 native_type..serial_port_service] The native handle type.
 
   typedef implementation_defined native_type;
 
@@ -49293,7 +49682,7 @@
 
 [section:open serial_port_service::open]
 
-Open a serial port.
+[indexterm2 open..serial_port_service] Open a serial port.
 
   boost::system::error_code open(
       implementation_type & impl,
@@ -49308,7 +49697,7 @@
 
 [section:read_some serial_port_service::read_some]
 
-Read some data from the stream.
+[indexterm2 read_some..serial_port_service] Read some data from the stream.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -49325,7 +49714,7 @@
 
 [section:send_break serial_port_service::send_break]
 
-Send a break sequence to the serial port.
+[indexterm2 send_break..serial_port_service] Send a break sequence to the serial port.
 
   boost::system::error_code send_break(
       implementation_type & impl,
@@ -49339,7 +49728,7 @@
 
 [section:serial_port_service serial_port_service::serial_port_service]
 
-Construct a new serial port service for the specified io_service.
+[indexterm2 serial_port_service..serial_port_service] Construct a new serial port service for the specified io_service.
 
   serial_port_service(
       boost::asio::io_service & io_service);
@@ -49352,7 +49741,7 @@
 
 [section:set_option serial_port_service::set_option]
 
-Set a serial port option.
+[indexterm2 set_option..serial_port_service] Set a serial port option.
 
   template<
       typename ``[link boost_asio.reference.SettableSerialPortOption SettableSerialPortOption]``>
@@ -49369,7 +49758,7 @@
 
 [section:shutdown_service serial_port_service::shutdown_service]
 
-Destroy all user-defined handler objects owned by the service.
+[indexterm2 shutdown_service..serial_port_service] Destroy all user-defined handler objects owned by the service.
 
   void shutdown_service();
 
@@ -49381,7 +49770,7 @@
 
 [section:write_some serial_port_service::write_some]
 
-Write the given data to the stream.
+[indexterm2 write_some..serial_port_service] Write the given data to the stream.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -49419,7 +49808,7 @@
 
 [section:service_already_exists service_already_exists::service_already_exists]
 
-
+[indexterm2 service_already_exists..service_already_exists]
 
   service_already_exists();
 
@@ -49595,7 +49984,7 @@
 
 [section:accept socket_acceptor_service::accept]
 
-Accept a new connection.
+[indexterm2 accept..socket_acceptor_service] Accept a new connection.
 
   template<
       typename ``[link boost_asio.reference.SocketService SocketService]``>
@@ -49613,7 +50002,7 @@
 
 [section:assign socket_acceptor_service::assign]
 
-Assign an existing native acceptor to a socket acceptor.
+[indexterm2 assign..socket_acceptor_service] Assign an existing native acceptor to a socket acceptor.
 
   boost::system::error_code assign(
       implementation_type & impl,
@@ -49629,7 +50018,7 @@
 
 [section:async_accept socket_acceptor_service::async_accept]
 
-Start an asynchronous accept.
+[indexterm2 async_accept..socket_acceptor_service] Start an asynchronous accept.
 
   template<
       typename ``[link boost_asio.reference.SocketService SocketService]``,
@@ -49648,7 +50037,7 @@
 
 [section:bind socket_acceptor_service::bind]
 
-Bind the socket acceptor to the specified local endpoint.
+[indexterm2 bind..socket_acceptor_service] Bind the socket acceptor to the specified local endpoint.
 
   boost::system::error_code bind(
       implementation_type & impl,
@@ -49663,7 +50052,7 @@
 
 [section:cancel socket_acceptor_service::cancel]
 
-Cancel all asynchronous operations associated with the acceptor.
+[indexterm2 cancel..socket_acceptor_service] Cancel all asynchronous operations associated with the acceptor.
 
   boost::system::error_code cancel(
       implementation_type & impl,
@@ -49677,7 +50066,7 @@
 
 [section:close socket_acceptor_service::close]
 
-Close a socket acceptor implementation.
+[indexterm2 close..socket_acceptor_service] Close a socket acceptor implementation.
 
   boost::system::error_code close(
       implementation_type & impl,
@@ -49691,7 +50080,7 @@
 
 [section:construct socket_acceptor_service::construct]
 
-Construct a new socket acceptor implementation.
+[indexterm2 construct..socket_acceptor_service] Construct a new socket acceptor implementation.
 
   void construct(
       implementation_type & impl);
@@ -49704,7 +50093,7 @@
 
 [section:destroy socket_acceptor_service::destroy]
 
-Destroy a socket acceptor implementation.
+[indexterm2 destroy..socket_acceptor_service] Destroy a socket acceptor implementation.
 
   void destroy(
       implementation_type & impl);
@@ -49717,7 +50106,7 @@
 
 [section:endpoint_type socket_acceptor_service::endpoint_type]
 
-The endpoint type.
+[indexterm2 endpoint_type..socket_acceptor_service] The endpoint type.
 
   typedef protocol_type::endpoint endpoint_type;
 
@@ -49733,7 +50122,7 @@
 
 ['Inherited from io_service.]
 
-Get the io_service object that owns the service.
+[indexterm2 get_io_service..socket_acceptor_service] Get the io_service object that owns the service.
 
   boost::asio::io_service & get_io_service();
 
@@ -49745,7 +50134,7 @@
 
 [section:get_option socket_acceptor_service::get_option]
 
-Get a socket option.
+[indexterm2 get_option..socket_acceptor_service] Get a socket option.
 
   template<
       typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
@@ -49762,7 +50151,7 @@
 
 [section:id socket_acceptor_service::id]
 
-The unique service identifier.
+[indexterm2 id..socket_acceptor_service] The unique service identifier.
 
   static boost::asio::io_service::id id;
 
@@ -49774,7 +50163,7 @@
 
 [section:implementation_type socket_acceptor_service::implementation_type]
 
-The native type of the socket acceptor.
+[indexterm2 implementation_type..socket_acceptor_service] The native type of the socket acceptor.
 
   typedef implementation_defined implementation_type;
 
@@ -49787,7 +50176,7 @@
 
 [section:io_control socket_acceptor_service::io_control]
 
-Perform an IO control command on the socket.
+[indexterm2 io_control..socket_acceptor_service] Perform an IO control command on the socket.
 
   template<
       typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
@@ -49807,7 +50196,7 @@
 
 ['Inherited from io_service.]
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+[indexterm2 io_service..socket_acceptor_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
   boost::asio::io_service & io_service();
 
@@ -49819,7 +50208,7 @@
 
 [section:is_open socket_acceptor_service::is_open]
 
-Determine whether the acceptor is open.
+[indexterm2 is_open..socket_acceptor_service] Determine whether the acceptor is open.
 
   bool is_open(
       const implementation_type & impl) const;
@@ -49832,7 +50221,7 @@
 
 [section:listen socket_acceptor_service::listen]
 
-Place the socket acceptor into the state where it will listen for new connections.
+[indexterm2 listen..socket_acceptor_service] Place the socket acceptor into the state where it will listen for new connections.
 
   boost::system::error_code listen(
       implementation_type & impl,
@@ -49847,7 +50236,7 @@
 
 [section:local_endpoint socket_acceptor_service::local_endpoint]
 
-Get the local endpoint.
+[indexterm2 local_endpoint..socket_acceptor_service] Get the local endpoint.
 
   endpoint_type local_endpoint(
       const implementation_type & impl,
@@ -49861,7 +50250,7 @@
 
 [section:native socket_acceptor_service::native]
 
-Get the native acceptor implementation.
+[indexterm2 native..socket_acceptor_service] Get the native acceptor implementation.
 
   native_type native(
       implementation_type & impl);
@@ -49874,7 +50263,7 @@
 
 [section:native_type socket_acceptor_service::native_type]
 
-The native acceptor type.
+[indexterm2 native_type..socket_acceptor_service] The native acceptor type.
 
   typedef implementation_defined native_type;
 
@@ -49887,7 +50276,7 @@
 
 [section:open socket_acceptor_service::open]
 
-Open a new socket acceptor implementation.
+[indexterm2 open..socket_acceptor_service] Open a new socket acceptor implementation.
 
   boost::system::error_code open(
       implementation_type & impl,
@@ -49902,7 +50291,7 @@
 
 [section:protocol_type socket_acceptor_service::protocol_type]
 
-The protocol type.
+[indexterm2 protocol_type..socket_acceptor_service] The protocol type.
 
   typedef Protocol protocol_type;
 
@@ -49915,7 +50304,7 @@
 
 [section:set_option socket_acceptor_service::set_option]
 
-Set a socket option.
+[indexterm2 set_option..socket_acceptor_service] Set a socket option.
 
   template<
       typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
@@ -49932,7 +50321,7 @@
 
 [section:shutdown_service socket_acceptor_service::shutdown_service]
 
-Destroy all user-defined handler objects owned by the service.
+[indexterm2 shutdown_service..socket_acceptor_service] Destroy all user-defined handler objects owned by the service.
 
   void shutdown_service();
 
@@ -49944,7 +50333,7 @@
 
 [section:socket_acceptor_service socket_acceptor_service::socket_acceptor_service]
 
-Construct a new socket acceptor service for the specified io_service.
+[indexterm2 socket_acceptor_service..socket_acceptor_service] Construct a new socket acceptor service for the specified io_service.
 
   socket_acceptor_service(
       boost::asio::io_service & io_service);
@@ -50115,7 +50504,7 @@
 
 [section:broadcast socket_base::broadcast]
 
-Socket option to permit sending of broadcast messages.
+[indexterm2 broadcast..socket_base] Socket option to permit sending of broadcast messages.
 
   typedef implementation_defined broadcast;
 
@@ -50155,7 +50544,7 @@
 
 [section:bytes_readable socket_base::bytes_readable]
 
-IO control command to get the amount of data that can be read without blocking.
+[indexterm2 bytes_readable..socket_base] IO control command to get the amount of data that can be read without blocking.
 
   typedef implementation_defined bytes_readable;
 
@@ -50185,7 +50574,7 @@
 
 [section:debug socket_base::debug]
 
-Socket option to enable socket-level debugging.
+[indexterm2 debug..socket_base] Socket option to enable socket-level debugging.
 
   typedef implementation_defined debug;
 
@@ -50225,7 +50614,7 @@
 
 [section:do_not_route socket_base::do_not_route]
 
-Socket option to prevent routing, use local interfaces only.
+[indexterm2 do_not_route..socket_base] Socket option to prevent routing, use local interfaces only.
 
   typedef implementation_defined do_not_route;
 
@@ -50265,7 +50654,7 @@
 
 [section:enable_connection_aborted socket_base::enable_connection_aborted]
 
-Socket option to report aborted connections on accept.
+[indexterm2 enable_connection_aborted..socket_base] Socket option to report aborted connections on accept.
 
   typedef implementation_defined enable_connection_aborted;
 
@@ -50305,7 +50694,7 @@
 
 [section:keep_alive socket_base::keep_alive]
 
-Socket option to send keep-alives.
+[indexterm2 keep_alive..socket_base] Socket option to send keep-alives.
 
   typedef implementation_defined keep_alive;
 
@@ -50345,7 +50734,7 @@
 
 [section:linger socket_base::linger]
 
-Socket option to specify whether the socket lingers on close if unsent data is present.
+[indexterm2 linger..socket_base] Socket option to specify whether the socket lingers on close if unsent data is present.
 
   typedef implementation_defined linger;
 
@@ -50386,7 +50775,7 @@
 
 [section:max_connections socket_base::max_connections]
 
-The maximum length of the queue of pending incoming connections.
+[indexterm2 max_connections..socket_base] The maximum length of the queue of pending incoming connections.
 
   static const int max_connections = implementation_defined;
 
@@ -50398,7 +50787,7 @@
 
 [section:message_do_not_route socket_base::message_do_not_route]
 
-Specify that the data should not be subject to routing.
+[indexterm2 message_do_not_route..socket_base] Specify that the data should not be subject to routing.
 
   static const int message_do_not_route = implementation_defined;
 
@@ -50410,7 +50799,7 @@
 
 [section:message_flags socket_base::message_flags]
 
-Bitmask type for flags that can be passed to send and receive operations.
+[indexterm2 message_flags..socket_base] Bitmask type for flags that can be passed to send and receive operations.
 
   typedef int message_flags;
 
@@ -50423,7 +50812,7 @@
 
 [section:message_out_of_band socket_base::message_out_of_band]
 
-Process out-of-band data.
+[indexterm2 message_out_of_band..socket_base] Process out-of-band data.
 
   static const int message_out_of_band = implementation_defined;
 
@@ -50435,7 +50824,7 @@
 
 [section:message_peek socket_base::message_peek]
 
-Peek at incoming data without removing it from the input queue.
+[indexterm2 message_peek..socket_base] Peek at incoming data without removing it from the input queue.
 
   static const int message_peek = implementation_defined;
 
@@ -50447,7 +50836,7 @@
 
 [section:non_blocking_io socket_base::non_blocking_io]
 
-IO control command to set the blocking mode of the socket.
+[indexterm2 non_blocking_io..socket_base] IO control command to set the blocking mode of the socket.
 
   typedef implementation_defined non_blocking_io;
 
@@ -50476,7 +50865,7 @@
 
 [section:receive_buffer_size socket_base::receive_buffer_size]
 
-Socket option for the receive buffer size of a socket.
+[indexterm2 receive_buffer_size..socket_base] Socket option for the receive buffer size of a socket.
 
   typedef implementation_defined receive_buffer_size;
 
@@ -50516,7 +50905,7 @@
 
 [section:receive_low_watermark socket_base::receive_low_watermark]
 
-Socket option for the receive low watermark.
+[indexterm2 receive_low_watermark..socket_base] Socket option for the receive low watermark.
 
   typedef implementation_defined receive_low_watermark;
 
@@ -50556,7 +50945,7 @@
 
 [section:reuse_address socket_base::reuse_address]
 
-Socket option to allow the socket to be bound to an address that is already in use.
+[indexterm2 reuse_address..socket_base] Socket option to allow the socket to be bound to an address that is already in use.
 
   typedef implementation_defined reuse_address;
 
@@ -50596,7 +50985,7 @@
 
 [section:send_buffer_size socket_base::send_buffer_size]
 
-Socket option for the send buffer size of a socket.
+[indexterm2 send_buffer_size..socket_base] Socket option for the send buffer size of a socket.
 
   typedef implementation_defined send_buffer_size;
 
@@ -50636,7 +51025,7 @@
 
 [section:send_low_watermark socket_base::send_low_watermark]
 
-Socket option for the send low watermark.
+[indexterm2 send_low_watermark..socket_base] Socket option for the send low watermark.
 
   typedef implementation_defined send_low_watermark;
 
@@ -50676,7 +51065,7 @@
 
 [section:shutdown_type socket_base::shutdown_type]
 
-Different ways a socket may be shutdown.
+[indexterm2 shutdown_type..socket_base] Different ways a socket may be shutdown.
 
   enum shutdown_type
 
@@ -50708,7 +51097,7 @@
 
 [section:_socket_base socket_base::~socket_base]
 
-Protected destructor to prevent deletion through this type.
+[indexterm2 ~socket_base..socket_base] Protected destructor to prevent deletion through this type.
 
   ~socket_base();
 
@@ -50909,7 +51298,7 @@
 
 [section:add_verify_path ssl::basic_context::add_verify_path]
 
-Add a directory containing certificate authority files to be used for performing verification.
+[indexterm2 add_verify_path..ssl::basic_context] Add a directory containing certificate authority files to be used for performing verification.
 
   void ``[link boost_asio.reference.ssl__basic_context.add_verify_path.overload1 add_verify_path]``(
       const std::string & path);
@@ -50987,7 +51376,7 @@
 
 [section:basic_context ssl::basic_context::basic_context]
 
-Constructor.
+[indexterm2 basic_context..ssl::basic_context] Constructor.
 
   basic_context(
       boost::asio::io_service & io_service,
@@ -51004,7 +51393,7 @@
 
 ['Inherited from ssl::context_base.]
 
-Implement various bug workarounds.
+[indexterm2 default_workarounds..ssl::basic_context] Implement various bug workarounds.
 
   static const int default_workarounds = implementation_defined;
 
@@ -51019,7 +51408,7 @@
 
 ['Inherited from ssl::context_base.]
 
-File format types.
+[indexterm2 file_format..ssl::basic_context] File format types.
 
   enum file_format
 
@@ -51046,7 +51435,7 @@
 
 [section:impl ssl::basic_context::impl]
 
-Get the underlying implementation in the native type.
+[indexterm2 impl..ssl::basic_context] Get the underlying implementation in the native type.
 
   impl_type impl();
 
@@ -51060,7 +51449,7 @@
 
 [section:impl_type ssl::basic_context::impl_type]
 
-The native implementation type of the locking dispatcher.
+[indexterm2 impl_type..ssl::basic_context] The native implementation type of the locking dispatcher.
 
   typedef service_type::impl_type impl_type;
 
@@ -51072,7 +51461,7 @@
 
 [section:load_verify_file ssl::basic_context::load_verify_file]
 
-Load a certification authority file for performing verification.
+[indexterm2 load_verify_file..ssl::basic_context] Load a certification authority file for performing verification.
 
   void ``[link boost_asio.reference.ssl__basic_context.load_verify_file.overload1 load_verify_file]``(
       const std::string & filename);
@@ -51153,7 +51542,7 @@
 
 ['Inherited from ssl::context_base.]
 
-Different methods supported by a context.
+[indexterm2 method..ssl::basic_context] Different methods supported by a context.
 
   enum method
 
@@ -51233,7 +51622,7 @@
 
 ['Inherited from ssl::context_base.]
 
-Disable SSL v2.
+[indexterm2 no_sslv2..ssl::basic_context] Disable SSL v2.
 
   static const int no_sslv2 = implementation_defined;
 
@@ -51248,7 +51637,7 @@
 
 ['Inherited from ssl::context_base.]
 
-Disable SSL v3.
+[indexterm2 no_sslv3..ssl::basic_context] Disable SSL v3.
 
   static const int no_sslv3 = implementation_defined;
 
@@ -51263,7 +51652,7 @@
 
 ['Inherited from ssl::context_base.]
 
-Disable TLS v1.
+[indexterm2 no_tlsv1..ssl::basic_context] Disable TLS v1.
 
   static const int no_tlsv1 = implementation_defined;
 
@@ -51278,7 +51667,7 @@
 
 ['Inherited from ssl::context_base.]
 
-Bitmask type for SSL options.
+[indexterm2 options..ssl::basic_context] Bitmask type for SSL options.
 
   typedef int options;
 
@@ -51294,7 +51683,7 @@
 
 ['Inherited from ssl::context_base.]
 
-Purpose of PEM password.
+[indexterm2 password_purpose..ssl::basic_context] Purpose of PEM password.
 
   enum password_purpose
 
@@ -51321,7 +51710,7 @@
 
 [section:service_type ssl::basic_context::service_type]
 
-The type of the service that will be used to provide context operations.
+[indexterm2 service_type..ssl::basic_context] The type of the service that will be used to provide context operations.
 
   typedef Service service_type;
 
@@ -51333,7 +51722,7 @@
 
 [section:set_options ssl::basic_context::set_options]
 
-Set options on the context.
+[indexterm2 set_options..ssl::basic_context] Set options on the context.
 
   void ``[link boost_asio.reference.ssl__basic_context.set_options.overload1 set_options]``(
       options o);
@@ -51410,7 +51799,7 @@
 
 [section:set_password_callback ssl::basic_context::set_password_callback]
 
-Set the password callback.
+[indexterm2 set_password_callback..ssl::basic_context] Set the password callback.
 
   template<
       typename PasswordCallback>
@@ -51448,7 +51837,6 @@
      std::size_t max_length, // The maximum size for a password.
      password_purpose purpose // Whether password is for reading or writing.
    );
-
 ``
 The return value of the callback is a string containing the password.]]
 
@@ -51494,7 +51882,6 @@
      std::size_t max_length, // The maximum size for a password.
      password_purpose purpose // Whether password is for reading or writing.
    );
-
 ``
 The return value of the callback is a string containing the password.]]
 
@@ -51511,7 +51898,7 @@
 
 [section:set_verify_mode ssl::basic_context::set_verify_mode]
 
-Set the peer verification mode.
+[indexterm2 set_verify_mode..ssl::basic_context] Set the peer verification mode.
 
   void ``[link boost_asio.reference.ssl__basic_context.set_verify_mode.overload1 set_verify_mode]``(
       verify_mode v);
@@ -51592,7 +51979,7 @@
 
 ['Inherited from ssl::context_base.]
 
-Always create a new key when using tmp_dh parameters.
+[indexterm2 single_dh_use..ssl::basic_context] Always create a new key when using tmp_dh parameters.
 
   static const int single_dh_use = implementation_defined;
 
@@ -51603,7 +51990,7 @@
 
 [section:use_certificate_chain_file ssl::basic_context::use_certificate_chain_file]
 
-Use a certificate chain from a file.
+[indexterm2 use_certificate_chain_file..ssl::basic_context] Use a certificate chain from a file.
 
   void ``[link boost_asio.reference.ssl__basic_context.use_certificate_chain_file.overload1 use_certificate_chain_file]``(
       const std::string & filename);
@@ -51680,7 +52067,7 @@
 
 [section:use_certificate_file ssl::basic_context::use_certificate_file]
 
-Use a certificate from a file.
+[indexterm2 use_certificate_file..ssl::basic_context] Use a certificate from a file.
 
   void ``[link boost_asio.reference.ssl__basic_context.use_certificate_file.overload1 use_certificate_file]``(
       const std::string & filename,
@@ -51765,7 +52152,7 @@
 
 [section:use_private_key_file ssl::basic_context::use_private_key_file]
 
-Use a private key from a file.
+[indexterm2 use_private_key_file..ssl::basic_context] Use a private key from a file.
 
   void ``[link boost_asio.reference.ssl__basic_context.use_private_key_file.overload1 use_private_key_file]``(
       const std::string & filename,
@@ -51850,7 +52237,7 @@
 
 [section:use_rsa_private_key_file ssl::basic_context::use_rsa_private_key_file]
 
-Use an RSA private key from a file.
+[indexterm2 use_rsa_private_key_file..ssl::basic_context] Use an RSA private key from a file.
 
   void ``[link boost_asio.reference.ssl__basic_context.use_rsa_private_key_file.overload1 use_rsa_private_key_file]``(
       const std::string & filename,
@@ -51935,7 +52322,7 @@
 
 [section:use_tmp_dh_file ssl::basic_context::use_tmp_dh_file]
 
-Use the specified file to obtain the temporary Diffie-Hellman parameters.
+[indexterm2 use_tmp_dh_file..ssl::basic_context] Use the specified file to obtain the temporary Diffie-Hellman parameters.
 
   void ``[link boost_asio.reference.ssl__basic_context.use_tmp_dh_file.overload1 use_tmp_dh_file]``(
       const std::string & filename);
@@ -52016,7 +52403,7 @@
 
 ['Inherited from ssl::context_base.]
 
-Do not request client certificate on renegotiation. Ignored unless verify_peer is set.
+[indexterm2 verify_client_once..ssl::basic_context] Do not request client certificate on renegotiation. Ignored unless verify_peer is set.
 
   static const int verify_client_once = implementation_defined;
 
@@ -52031,7 +52418,7 @@
 
 ['Inherited from ssl::context_base.]
 
-Fail verification if the peer has no certificate. Ignored unless verify_peer is set.
+[indexterm2 verify_fail_if_no_peer_cert..ssl::basic_context] Fail verification if the peer has no certificate. Ignored unless verify_peer is set.
 
   static const int verify_fail_if_no_peer_cert = implementation_defined;
 
@@ -52046,7 +52433,7 @@
 
 ['Inherited from ssl::context_base.]
 
-Bitmask type for peer verification.
+[indexterm2 verify_mode..ssl::basic_context] Bitmask type for peer verification.
 
   typedef int verify_mode;
 
@@ -52062,7 +52449,7 @@
 
 ['Inherited from ssl::context_base.]
 
-No verification.
+[indexterm2 verify_none..ssl::basic_context] No verification.
 
   static const int verify_none = implementation_defined;
 
@@ -52077,7 +52464,7 @@
 
 ['Inherited from ssl::context_base.]
 
-Verify the peer.
+[indexterm2 verify_peer..ssl::basic_context] Verify the peer.
 
   static const int verify_peer = implementation_defined;
 
@@ -52089,7 +52476,7 @@
 
 [section:_basic_context ssl::basic_context::~basic_context]
 
-Destructor.
+[indexterm2 ~basic_context..ssl::basic_context] Destructor.
 
   ~basic_context();
 
@@ -52104,7 +52491,7 @@
 
 [section:ssl__context ssl::context]
 
-Typedef for the typical usage of context.
+[indexterm1 ssl::context] Typedef for the typical usage of context.
 
   typedef basic_context< context_service > context;
 
@@ -52404,7 +52791,7 @@
 
 [section:default_workarounds ssl::context_base::default_workarounds]
 
-Implement various bug workarounds.
+[indexterm2 default_workarounds..ssl::context_base] Implement various bug workarounds.
 
   static const int default_workarounds = implementation_defined;
 
@@ -52416,7 +52803,7 @@
 
 [section:file_format ssl::context_base::file_format]
 
-File format types.
+[indexterm2 file_format..ssl::context_base] File format types.
 
   enum file_format
 
@@ -52443,7 +52830,7 @@
 
 [section:method ssl::context_base::method]
 
-Different methods supported by a context.
+[indexterm2 method..ssl::context_base] Different methods supported by a context.
 
   enum method
 
@@ -52520,7 +52907,7 @@
 
 [section:no_sslv2 ssl::context_base::no_sslv2]
 
-Disable SSL v2.
+[indexterm2 no_sslv2..ssl::context_base] Disable SSL v2.
 
   static const int no_sslv2 = implementation_defined;
 
@@ -52532,7 +52919,7 @@
 
 [section:no_sslv3 ssl::context_base::no_sslv3]
 
-Disable SSL v3.
+[indexterm2 no_sslv3..ssl::context_base] Disable SSL v3.
 
   static const int no_sslv3 = implementation_defined;
 
@@ -52544,7 +52931,7 @@
 
 [section:no_tlsv1 ssl::context_base::no_tlsv1]
 
-Disable TLS v1.
+[indexterm2 no_tlsv1..ssl::context_base] Disable TLS v1.
 
   static const int no_tlsv1 = implementation_defined;
 
@@ -52556,7 +52943,7 @@
 
 [section:options ssl::context_base::options]
 
-Bitmask type for SSL options.
+[indexterm2 options..ssl::context_base] Bitmask type for SSL options.
 
   typedef int options;
 
@@ -52569,7 +52956,7 @@
 
 [section:password_purpose ssl::context_base::password_purpose]
 
-Purpose of PEM password.
+[indexterm2 password_purpose..ssl::context_base] Purpose of PEM password.
 
   enum password_purpose
 
@@ -52596,7 +52983,7 @@
 
 [section:single_dh_use ssl::context_base::single_dh_use]
 
-Always create a new key when using tmp_dh parameters.
+[indexterm2 single_dh_use..ssl::context_base] Always create a new key when using tmp_dh parameters.
 
   static const int single_dh_use = implementation_defined;
 
@@ -52608,7 +52995,7 @@
 
 [section:verify_client_once ssl::context_base::verify_client_once]
 
-Do not request client certificate on renegotiation. Ignored unless verify_peer is set.
+[indexterm2 verify_client_once..ssl::context_base] Do not request client certificate on renegotiation. Ignored unless verify_peer is set.
 
   static const int verify_client_once = implementation_defined;
 
@@ -52620,7 +53007,7 @@
 
 [section:verify_fail_if_no_peer_cert ssl::context_base::verify_fail_if_no_peer_cert]
 
-Fail verification if the peer has no certificate. Ignored unless verify_peer is set.
+[indexterm2 verify_fail_if_no_peer_cert..ssl::context_base] Fail verification if the peer has no certificate. Ignored unless verify_peer is set.
 
   static const int verify_fail_if_no_peer_cert = implementation_defined;
 
@@ -52632,7 +53019,7 @@
 
 [section:verify_mode ssl::context_base::verify_mode]
 
-Bitmask type for peer verification.
+[indexterm2 verify_mode..ssl::context_base] Bitmask type for peer verification.
 
   typedef int verify_mode;
 
@@ -52645,7 +53032,7 @@
 
 [section:verify_none ssl::context_base::verify_none]
 
-No verification.
+[indexterm2 verify_none..ssl::context_base] No verification.
 
   static const int verify_none = implementation_defined;
 
@@ -52657,7 +53044,7 @@
 
 [section:verify_peer ssl::context_base::verify_peer]
 
-Verify the peer.
+[indexterm2 verify_peer..ssl::context_base] Verify the peer.
 
   static const int verify_peer = implementation_defined;
 
@@ -52669,7 +53056,7 @@
 
 [section:_context_base ssl::context_base::~context_base]
 
-Protected destructor to prevent deletion through this type.
+[indexterm2 ~context_base..ssl::context_base] Protected destructor to prevent deletion through this type.
 
   ~context_base();
 
@@ -52807,7 +53194,7 @@
 
 [section:add_verify_path ssl::context_service::add_verify_path]
 
-Add a directory containing certification authority files to be used for performing verification.
+[indexterm2 add_verify_path..ssl::context_service] Add a directory containing certification authority files to be used for performing verification.
 
   boost::system::error_code add_verify_path(
       impl_type & impl,
@@ -52822,7 +53209,7 @@
 
 [section:context_service ssl::context_service::context_service]
 
-Constructor.
+[indexterm2 context_service..ssl::context_service] Constructor.
 
   context_service(
       boost::asio::io_service & io_service);
@@ -52835,7 +53222,7 @@
 
 [section:create ssl::context_service::create]
 
-Create a new context implementation.
+[indexterm2 create..ssl::context_service] Create a new context implementation.
 
   void create(
       impl_type & impl,
@@ -52849,7 +53236,7 @@
 
 [section:destroy ssl::context_service::destroy]
 
-Destroy a context implementation.
+[indexterm2 destroy..ssl::context_service] Destroy a context implementation.
 
   void destroy(
       impl_type & impl);
@@ -52865,7 +53252,7 @@
 
 ['Inherited from io_service.]
 
-Get the io_service object that owns the service.
+[indexterm2 get_io_service..ssl::context_service] Get the io_service object that owns the service.
 
   boost::asio::io_service & get_io_service();
 
@@ -52877,7 +53264,7 @@
 
 [section:id ssl::context_service::id]
 
-The unique service identifier.
+[indexterm2 id..ssl::context_service] The unique service identifier.
 
   static boost::asio::io_service::id id;
 
@@ -52889,7 +53276,7 @@
 
 [section:impl_type ssl::context_service::impl_type]
 
-The type of the context.
+[indexterm2 impl_type..ssl::context_service] The type of the context.
 
   typedef implementation_defined impl_type;
 
@@ -52905,7 +53292,7 @@
 
 ['Inherited from io_service.]
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+[indexterm2 io_service..ssl::context_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
   boost::asio::io_service & io_service();
 
@@ -52917,7 +53304,7 @@
 
 [section:load_verify_file ssl::context_service::load_verify_file]
 
-Load a certification authority file for performing verification.
+[indexterm2 load_verify_file..ssl::context_service] Load a certification authority file for performing verification.
 
   boost::system::error_code load_verify_file(
       impl_type & impl,
@@ -52932,7 +53319,7 @@
 
 [section:null ssl::context_service::null]
 
-Return a null context implementation.
+[indexterm2 null..ssl::context_service] Return a null context implementation.
 
   impl_type null() const;
 
@@ -52944,7 +53331,7 @@
 
 [section:set_options ssl::context_service::set_options]
 
-Set options on the context.
+[indexterm2 set_options..ssl::context_service] Set options on the context.
 
   boost::system::error_code set_options(
       impl_type & impl,
@@ -52959,7 +53346,7 @@
 
 [section:set_password_callback ssl::context_service::set_password_callback]
 
-Set the password callback.
+[indexterm2 set_password_callback..ssl::context_service] Set the password callback.
 
   template<
       typename PasswordCallback>
@@ -52976,7 +53363,7 @@
 
 [section:set_verify_mode ssl::context_service::set_verify_mode]
 
-Set peer verification mode.
+[indexterm2 set_verify_mode..ssl::context_service] Set peer verification mode.
 
   boost::system::error_code set_verify_mode(
       impl_type & impl,
@@ -52991,7 +53378,7 @@
 
 [section:shutdown_service ssl::context_service::shutdown_service]
 
-Destroy all user-defined handler objects owned by the service.
+[indexterm2 shutdown_service..ssl::context_service] Destroy all user-defined handler objects owned by the service.
 
   void shutdown_service();
 
@@ -53003,7 +53390,7 @@
 
 [section:use_certificate_chain_file ssl::context_service::use_certificate_chain_file]
 
-Use a certificate chain from a file.
+[indexterm2 use_certificate_chain_file..ssl::context_service] Use a certificate chain from a file.
 
   boost::system::error_code use_certificate_chain_file(
       impl_type & impl,
@@ -53018,7 +53405,7 @@
 
 [section:use_certificate_file ssl::context_service::use_certificate_file]
 
-Use a certificate from a file.
+[indexterm2 use_certificate_file..ssl::context_service] Use a certificate from a file.
 
   boost::system::error_code use_certificate_file(
       impl_type & impl,
@@ -53034,7 +53421,7 @@
 
 [section:use_private_key_file ssl::context_service::use_private_key_file]
 
-Use a private key from a file.
+[indexterm2 use_private_key_file..ssl::context_service] Use a private key from a file.
 
   boost::system::error_code use_private_key_file(
       impl_type & impl,
@@ -53050,7 +53437,7 @@
 
 [section:use_rsa_private_key_file ssl::context_service::use_rsa_private_key_file]
 
-Use an RSA private key from a file.
+[indexterm2 use_rsa_private_key_file..ssl::context_service] Use an RSA private key from a file.
 
   boost::system::error_code use_rsa_private_key_file(
       impl_type & impl,
@@ -53066,7 +53453,7 @@
 
 [section:use_tmp_dh_file ssl::context_service::use_tmp_dh_file]
 
-Use the specified file to obtain the temporary Diffie-Hellman parameters.
+[indexterm2 use_tmp_dh_file..ssl::context_service] Use the specified file to obtain the temporary Diffie-Hellman parameters.
 
   boost::system::error_code use_tmp_dh_file(
       impl_type & impl,
@@ -53248,7 +53635,7 @@
 
 [section:async_handshake ssl::stream::async_handshake]
 
-Start an asynchronous SSL handshake.
+[indexterm2 async_handshake..ssl::stream] Start an asynchronous SSL handshake.
 
   template<
       typename HandshakeHandler>
@@ -53272,7 +53659,6 @@
    void handler(
      const boost::system::error_code& error // Result of operation.
    );
-
 ``
 ]]
 
@@ -53286,7 +53672,7 @@
 
 [section:async_read_some ssl::stream::async_read_some]
 
-Start an asynchronous read.
+[indexterm2 async_read_some..ssl::stream] Start an asynchronous read.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -53312,7 +53698,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes read.
    );
-
 ``
 ]]
 
@@ -53331,7 +53716,7 @@
 
 [section:async_shutdown ssl::stream::async_shutdown]
 
-Asynchronously shut down SSL on the stream.
+[indexterm2 async_shutdown..ssl::stream] Asynchronously shut down SSL on the stream.
 
   template<
       typename ShutdownHandler>
@@ -53352,7 +53737,6 @@
    void handler(
      const boost::system::error_code& error // Result of operation.
    );
-
 ``
 ]]
 
@@ -53366,7 +53750,7 @@
 
 [section:async_write_some ssl::stream::async_write_some]
 
-Start an asynchronous write.
+[indexterm2 async_write_some..ssl::stream] Start an asynchronous write.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -53392,7 +53776,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes written.
    );
-
 ``
 ]]
 
@@ -53411,7 +53794,7 @@
 
 [section:get_io_service ssl::stream::get_io_service]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..ssl::stream] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -53430,7 +53813,7 @@
 
 [section:handshake ssl::stream::handshake]
 
-Perform SSL handshaking.
+[indexterm2 handshake..ssl::stream] Perform SSL handshaking.
 
   void ``[link boost_asio.reference.ssl__stream.handshake.overload1 handshake]``(
       handshake_type type);
@@ -53508,7 +53891,7 @@
 
 [section:handshake_type ssl::stream::handshake_type]
 
-Different handshake types.
+[indexterm2 handshake_type..ssl::stream] Different handshake types.
 
   enum handshake_type
 
@@ -53535,7 +53918,7 @@
 
 [section:impl ssl::stream::impl]
 
-Get the underlying implementation in the native type.
+[indexterm2 impl..ssl::stream] Get the underlying implementation in the native type.
 
   impl_type impl();
 
@@ -53549,7 +53932,7 @@
 
 [section:impl_type ssl::stream::impl_type]
 
-The native implementation type of the stream.
+[indexterm2 impl_type..ssl::stream] The native implementation type of the stream.
 
   typedef service_type::impl_type impl_type;
 
@@ -53561,7 +53944,7 @@
 
 [section:in_avail ssl::stream::in_avail]
 
-Determine the amount of data that may be read without blocking.
+[indexterm2 in_avail..ssl::stream] Determine the amount of data that may be read without blocking.
 
   std::size_t ``[link boost_asio.reference.ssl__stream.in_avail.overload1 in_avail]``();
 
@@ -53632,7 +54015,7 @@
 
 [section:io_service ssl::stream::io_service]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..ssl::stream] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -53652,7 +54035,7 @@
 
 [section:lowest_layer ssl::stream::lowest_layer]
 
-Get a reference to the lowest layer.
+[indexterm2 lowest_layer..ssl::stream] Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -53672,7 +54055,7 @@
 
 [section:lowest_layer_type ssl::stream::lowest_layer_type]
 
-The type of the lowest layer.
+[indexterm2 lowest_layer_type..ssl::stream] The type of the lowest layer.
 
   typedef next_layer_type::lowest_layer_type lowest_layer_type;
 
@@ -53685,7 +54068,7 @@
 
 [section:next_layer ssl::stream::next_layer]
 
-Get a reference to the next layer.
+[indexterm2 next_layer..ssl::stream] Get a reference to the next layer.
 
   next_layer_type & next_layer();
 
@@ -53705,7 +54088,7 @@
 
 [section:next_layer_type ssl::stream::next_layer_type]
 
-The type of the next layer.
+[indexterm2 next_layer_type..ssl::stream] The type of the next layer.
 
   typedef boost::remove_reference< Stream >::type next_layer_type;
 
@@ -53717,7 +54100,7 @@
 
 [section:peek ssl::stream::peek]
 
-Peek at the incoming data on the stream.
+[indexterm2 peek..ssl::stream] Peek at the incoming data on the stream.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -53810,7 +54193,7 @@
 
 [section:read_some ssl::stream::read_some]
 
-Read some data from the stream.
+[indexterm2 read_some..ssl::stream] Read some data from the stream.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -53914,7 +54297,7 @@
 
 [section:service_type ssl::stream::service_type]
 
-The type of the service that will be used to provide stream operations.
+[indexterm2 service_type..ssl::stream] The type of the service that will be used to provide stream operations.
 
   typedef Service service_type;
 
@@ -53926,7 +54309,7 @@
 
 [section:shutdown ssl::stream::shutdown]
 
-Shut down SSL on the stream.
+[indexterm2 shutdown..ssl::stream] Shut down SSL on the stream.
 
   void ``[link boost_asio.reference.ssl__stream.shutdown.overload1 shutdown]``();
 
@@ -53989,7 +54372,7 @@
 
 [section:stream ssl::stream::stream]
 
-Construct a stream.
+[indexterm2 stream..ssl::stream] Construct a stream.
 
   template<
       typename Arg,
@@ -54020,7 +54403,7 @@
 
 [section:write_some ssl::stream::write_some]
 
-Write some data to the stream.
+[indexterm2 write_some..ssl::stream] Write some data to the stream.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -54124,7 +54507,7 @@
 
 [section:_stream ssl::stream::~stream]
 
-Destructor.
+[indexterm2 ~stream..ssl::stream] Destructor.
 
   ~stream();
 
@@ -54170,7 +54553,7 @@
 
 [section:handshake_type ssl::stream_base::handshake_type]
 
-Different handshake types.
+[indexterm2 handshake_type..ssl::stream_base] Different handshake types.
 
   enum handshake_type
 
@@ -54197,7 +54580,7 @@
 
 [section:_stream_base ssl::stream_base::~stream_base]
 
-Protected destructor to prevent deletion through this type.
+[indexterm2 ~stream_base..ssl::stream_base] Protected destructor to prevent deletion through this type.
 
   ~stream_base();
 
@@ -54335,7 +54718,7 @@
 
 [section:async_handshake ssl::stream_service::async_handshake]
 
-Start an asynchronous SSL handshake.
+[indexterm2 async_handshake..ssl::stream_service] Start an asynchronous SSL handshake.
 
   template<
       typename Stream,
@@ -54354,7 +54737,7 @@
 
 [section:async_read_some ssl::stream_service::async_read_some]
 
-Start an asynchronous read.
+[indexterm2 async_read_some..ssl::stream_service] Start an asynchronous read.
 
   template<
       typename Stream,
@@ -54374,7 +54757,7 @@
 
 [section:async_shutdown ssl::stream_service::async_shutdown]
 
-Asynchronously shut down SSL on the stream.
+[indexterm2 async_shutdown..ssl::stream_service] Asynchronously shut down SSL on the stream.
 
   template<
       typename Stream,
@@ -54392,7 +54775,7 @@
 
 [section:async_write_some ssl::stream_service::async_write_some]
 
-Start an asynchronous write.
+[indexterm2 async_write_some..ssl::stream_service] Start an asynchronous write.
 
   template<
       typename Stream,
@@ -54412,7 +54795,7 @@
 
 [section:create ssl::stream_service::create]
 
-Create a new stream implementation.
+[indexterm2 create..ssl::stream_service] Create a new stream implementation.
 
   template<
       typename Stream,
@@ -54430,7 +54813,7 @@
 
 [section:destroy ssl::stream_service::destroy]
 
-Destroy a stream implementation.
+[indexterm2 destroy..ssl::stream_service] Destroy a stream implementation.
 
   template<
       typename Stream>
@@ -54449,7 +54832,7 @@
 
 ['Inherited from io_service.]
 
-Get the io_service object that owns the service.
+[indexterm2 get_io_service..ssl::stream_service] Get the io_service object that owns the service.
 
   boost::asio::io_service & get_io_service();
 
@@ -54461,7 +54844,7 @@
 
 [section:handshake ssl::stream_service::handshake]
 
-Perform SSL handshaking.
+[indexterm2 handshake..ssl::stream_service] Perform SSL handshaking.
 
   template<
       typename Stream>
@@ -54479,7 +54862,7 @@
 
 [section:id ssl::stream_service::id]
 
-The unique service identifier.
+[indexterm2 id..ssl::stream_service] The unique service identifier.
 
   static boost::asio::io_service::id id;
 
@@ -54491,7 +54874,7 @@
 
 [section:impl_type ssl::stream_service::impl_type]
 
-The type of a stream implementation.
+[indexterm2 impl_type..ssl::stream_service] The type of a stream implementation.
 
   typedef implementation_defined impl_type;
 
@@ -54504,7 +54887,7 @@
 
 [section:in_avail ssl::stream_service::in_avail]
 
-Determine the amount of data that may be read without blocking.
+[indexterm2 in_avail..ssl::stream_service] Determine the amount of data that may be read without blocking.
 
   template<
       typename Stream>
@@ -54524,7 +54907,7 @@
 
 ['Inherited from io_service.]
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+[indexterm2 io_service..ssl::stream_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
   boost::asio::io_service & io_service();
 
@@ -54536,7 +54919,7 @@
 
 [section:null ssl::stream_service::null]
 
-Return a null stream implementation.
+[indexterm2 null..ssl::stream_service] Return a null stream implementation.
 
   impl_type null() const;
 
@@ -54548,7 +54931,7 @@
 
 [section:peek ssl::stream_service::peek]
 
-Peek at the incoming data on the stream.
+[indexterm2 peek..ssl::stream_service] Peek at the incoming data on the stream.
 
   template<
       typename Stream,
@@ -54567,7 +54950,7 @@
 
 [section:read_some ssl::stream_service::read_some]
 
-Read some data from the stream.
+[indexterm2 read_some..ssl::stream_service] Read some data from the stream.
 
   template<
       typename Stream,
@@ -54586,7 +54969,7 @@
 
 [section:shutdown ssl::stream_service::shutdown]
 
-Shut down SSL on the stream.
+[indexterm2 shutdown..ssl::stream_service] Shut down SSL on the stream.
 
   template<
       typename Stream>
@@ -54603,7 +54986,7 @@
 
 [section:shutdown_service ssl::stream_service::shutdown_service]
 
-Destroy all user-defined handler objects owned by the service.
+[indexterm2 shutdown_service..ssl::stream_service] Destroy all user-defined handler objects owned by the service.
 
   void shutdown_service();
 
@@ -54615,7 +54998,7 @@
 
 [section:stream_service ssl::stream_service::stream_service]
 
-Construct a new stream service for the specified io_service.
+[indexterm2 stream_service..ssl::stream_service] Construct a new stream service for the specified io_service.
 
   stream_service(
       boost::asio::io_service & io_service);
@@ -54628,7 +55011,7 @@
 
 [section:write_some ssl::stream_service::write_some]
 
-Write some data to the stream.
+[indexterm2 write_some..ssl::stream_service] Write some data to the stream.
 
   template<
       typename Stream,
@@ -54650,7 +55033,7 @@
 
 [section:strand strand]
 
-Typedef for backwards compatibility.
+[indexterm1 strand] Typedef for backwards compatibility.
 
   typedef boost::asio::io_service::strand strand;
 
@@ -54910,7 +55293,7 @@
 
 [section:assign stream_socket_service::assign]
 
-Assign an existing native socket to a stream socket.
+[indexterm2 assign..stream_socket_service] Assign an existing native socket to a stream socket.
 
   boost::system::error_code assign(
       implementation_type & impl,
@@ -54926,7 +55309,7 @@
 
 [section:async_connect stream_socket_service::async_connect]
 
-Start an asynchronous connect.
+[indexterm2 async_connect..stream_socket_service] Start an asynchronous connect.
 
   template<
       typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
@@ -54943,7 +55326,7 @@
 
 [section:async_receive stream_socket_service::async_receive]
 
-Start an asynchronous receive.
+[indexterm2 async_receive..stream_socket_service] Start an asynchronous receive.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -54962,7 +55345,7 @@
 
 [section:async_send stream_socket_service::async_send]
 
-Start an asynchronous send.
+[indexterm2 async_send..stream_socket_service] Start an asynchronous send.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -54981,7 +55364,7 @@
 
 [section:at_mark stream_socket_service::at_mark]
 
-Determine whether the socket is at the out-of-band data mark.
+[indexterm2 at_mark..stream_socket_service] Determine whether the socket is at the out-of-band data mark.
 
   bool at_mark(
       const implementation_type & impl,
@@ -54995,7 +55378,7 @@
 
 [section:available stream_socket_service::available]
 
-Determine the number of bytes available for reading.
+[indexterm2 available..stream_socket_service] Determine the number of bytes available for reading.
 
   std::size_t available(
       const implementation_type & impl,
@@ -55009,7 +55392,7 @@
 
 [section:bind stream_socket_service::bind]
 
-Bind the stream socket to the specified local endpoint.
+[indexterm2 bind..stream_socket_service] Bind the stream socket to the specified local endpoint.
 
   boost::system::error_code bind(
       implementation_type & impl,
@@ -55024,7 +55407,7 @@
 
 [section:cancel stream_socket_service::cancel]
 
-Cancel all asynchronous operations associated with the socket.
+[indexterm2 cancel..stream_socket_service] Cancel all asynchronous operations associated with the socket.
 
   boost::system::error_code cancel(
       implementation_type & impl,
@@ -55038,7 +55421,7 @@
 
 [section:close stream_socket_service::close]
 
-Close a stream socket implementation.
+[indexterm2 close..stream_socket_service] Close a stream socket implementation.
 
   boost::system::error_code close(
       implementation_type & impl,
@@ -55052,7 +55435,7 @@
 
 [section:connect stream_socket_service::connect]
 
-Connect the stream socket to the specified endpoint.
+[indexterm2 connect..stream_socket_service] Connect the stream socket to the specified endpoint.
 
   boost::system::error_code connect(
       implementation_type & impl,
@@ -55067,7 +55450,7 @@
 
 [section:construct stream_socket_service::construct]
 
-Construct a new stream socket implementation.
+[indexterm2 construct..stream_socket_service] Construct a new stream socket implementation.
 
   void construct(
       implementation_type & impl);
@@ -55080,7 +55463,7 @@
 
 [section:destroy stream_socket_service::destroy]
 
-Destroy a stream socket implementation.
+[indexterm2 destroy..stream_socket_service] Destroy a stream socket implementation.
 
   void destroy(
       implementation_type & impl);
@@ -55093,7 +55476,7 @@
 
 [section:endpoint_type stream_socket_service::endpoint_type]
 
-The endpoint type.
+[indexterm2 endpoint_type..stream_socket_service] The endpoint type.
 
   typedef Protocol::endpoint endpoint_type;
 
@@ -55109,7 +55492,7 @@
 
 ['Inherited from io_service.]
 
-Get the io_service object that owns the service.
+[indexterm2 get_io_service..stream_socket_service] Get the io_service object that owns the service.
 
   boost::asio::io_service & get_io_service();
 
@@ -55121,7 +55504,7 @@
 
 [section:get_option stream_socket_service::get_option]
 
-Get a socket option.
+[indexterm2 get_option..stream_socket_service] Get a socket option.
 
   template<
       typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
@@ -55138,7 +55521,7 @@
 
 [section:id stream_socket_service::id]
 
-The unique service identifier.
+[indexterm2 id..stream_socket_service] The unique service identifier.
 
   static boost::asio::io_service::id id;
 
@@ -55150,7 +55533,7 @@
 
 [section:implementation_type stream_socket_service::implementation_type]
 
-The type of a stream socket implementation.
+[indexterm2 implementation_type..stream_socket_service] The type of a stream socket implementation.
 
   typedef implementation_defined implementation_type;
 
@@ -55163,7 +55546,7 @@
 
 [section:io_control stream_socket_service::io_control]
 
-Perform an IO control command on the socket.
+[indexterm2 io_control..stream_socket_service] Perform an IO control command on the socket.
 
   template<
       typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
@@ -55183,7 +55566,7 @@
 
 ['Inherited from io_service.]
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+[indexterm2 io_service..stream_socket_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
   boost::asio::io_service & io_service();
 
@@ -55195,7 +55578,7 @@
 
 [section:is_open stream_socket_service::is_open]
 
-Determine whether the socket is open.
+[indexterm2 is_open..stream_socket_service] Determine whether the socket is open.
 
   bool is_open(
       const implementation_type & impl) const;
@@ -55208,7 +55591,7 @@
 
 [section:local_endpoint stream_socket_service::local_endpoint]
 
-Get the local endpoint.
+[indexterm2 local_endpoint..stream_socket_service] Get the local endpoint.
 
   endpoint_type local_endpoint(
       const implementation_type & impl,
@@ -55222,7 +55605,7 @@
 
 [section:native stream_socket_service::native]
 
-Get the native socket implementation.
+[indexterm2 native..stream_socket_service] Get the native socket implementation.
 
   native_type native(
       implementation_type & impl);
@@ -55235,7 +55618,7 @@
 
 [section:native_type stream_socket_service::native_type]
 
-The native socket type.
+[indexterm2 native_type..stream_socket_service] The native socket type.
 
   typedef implementation_defined native_type;
 
@@ -55248,7 +55631,7 @@
 
 [section:open stream_socket_service::open]
 
-Open a stream socket.
+[indexterm2 open..stream_socket_service] Open a stream socket.
 
   boost::system::error_code open(
       implementation_type & impl,
@@ -55263,7 +55646,7 @@
 
 [section:protocol_type stream_socket_service::protocol_type]
 
-The protocol type.
+[indexterm2 protocol_type..stream_socket_service] The protocol type.
 
   typedef Protocol protocol_type;
 
@@ -55276,7 +55659,7 @@
 
 [section:receive stream_socket_service::receive]
 
-Receive some data from the peer.
+[indexterm2 receive..stream_socket_service] Receive some data from the peer.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -55294,7 +55677,7 @@
 
 [section:remote_endpoint stream_socket_service::remote_endpoint]
 
-Get the remote endpoint.
+[indexterm2 remote_endpoint..stream_socket_service] Get the remote endpoint.
 
   endpoint_type remote_endpoint(
       const implementation_type & impl,
@@ -55308,7 +55691,7 @@
 
 [section:send stream_socket_service::send]
 
-Send the given data to the peer.
+[indexterm2 send..stream_socket_service] Send the given data to the peer.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -55326,7 +55709,7 @@
 
 [section:set_option stream_socket_service::set_option]
 
-Set a socket option.
+[indexterm2 set_option..stream_socket_service] Set a socket option.
 
   template<
       typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
@@ -55343,7 +55726,7 @@
 
 [section:shutdown stream_socket_service::shutdown]
 
-Disable sends or receives on the socket.
+[indexterm2 shutdown..stream_socket_service] Disable sends or receives on the socket.
 
   boost::system::error_code shutdown(
       implementation_type & impl,
@@ -55358,7 +55741,7 @@
 
 [section:shutdown_service stream_socket_service::shutdown_service]
 
-Destroy all user-defined handler objects owned by the service.
+[indexterm2 shutdown_service..stream_socket_service] Destroy all user-defined handler objects owned by the service.
 
   void shutdown_service();
 
@@ -55370,7 +55753,7 @@
 
 [section:stream_socket_service stream_socket_service::stream_socket_service]
 
-Construct a new stream socket service for the specified io_service.
+[indexterm2 stream_socket_service..stream_socket_service] Construct a new stream socket service for the specified io_service.
 
   stream_socket_service(
       boost::asio::io_service & io_service);
@@ -55386,7 +55769,7 @@
 
 [section:streambuf streambuf]
 
-Typedef for the typical usage of basic_streambuf.
+[indexterm1 streambuf] Typedef for the typical usage of basic_streambuf.
 
   typedef basic_streambuf streambuf;
 
@@ -55540,7 +55923,7 @@
 
 [section:add time_traits< boost::posix_time::ptime >::add]
 
-Add a duration to a time.
+[indexterm2 add..time_traits< boost::posix_time::ptime >] Add a duration to a time.
 
   static time_type add(
       const time_type & t,
@@ -55554,7 +55937,7 @@
 
 [section:duration_type time_traits< boost::posix_time::ptime >::duration_type]
 
-The duration type.
+[indexterm2 duration_type..time_traits< boost::posix_time::ptime >] The duration type.
 
   typedef boost::posix_time::time_duration duration_type;
 
@@ -55567,7 +55950,7 @@
 
 [section:less_than time_traits< boost::posix_time::ptime >::less_than]
 
-Test whether one time is less than another.
+[indexterm2 less_than..time_traits< boost::posix_time::ptime >] Test whether one time is less than another.
 
   static bool less_than(
       const time_type & t1,
@@ -55581,7 +55964,7 @@
 
 [section:now time_traits< boost::posix_time::ptime >::now]
 
-Get the current time.
+[indexterm2 now..time_traits< boost::posix_time::ptime >] Get the current time.
 
   static time_type now();
 
@@ -55593,7 +55976,7 @@
 
 [section:subtract time_traits< boost::posix_time::ptime >::subtract]
 
-Subtract one time from another.
+[indexterm2 subtract..time_traits< boost::posix_time::ptime >] Subtract one time from another.
 
   static duration_type subtract(
       const time_type & t1,
@@ -55607,7 +55990,7 @@
 
 [section:time_type time_traits< boost::posix_time::ptime >::time_type]
 
-The time type.
+[indexterm2 time_type..time_traits< boost::posix_time::ptime >] The time type.
 
   typedef boost::posix_time::ptime time_type;
 
@@ -55620,7 +56003,7 @@
 
 [section:to_posix_duration time_traits< boost::posix_time::ptime >::to_posix_duration]
 
-Convert to POSIX duration type.
+[indexterm2 to_posix_duration..time_traits< boost::posix_time::ptime >] Convert to POSIX duration type.
 
   static boost::posix_time::time_duration to_posix_duration(
       const duration_type & d);
@@ -55636,7 +56019,7 @@
 
 [section:transfer_all transfer_all]
 
-Return a completion condition function object that indicates that a read or write operation should continue until all of the data has been transferred, or until an error occurs.
+[indexterm1 transfer_all] Return a completion condition function object that indicates that a read or write operation should continue until all of the data has been transferred, or until an error occurs.
 
   unspecified transfer_all();
 
@@ -55673,7 +56056,7 @@
 
 [section:transfer_at_least transfer_at_least]
 
-Return a completion condition function object that indicates that a read or write operation should continue until a minimum number of bytes has been transferred, or until an error occurs.
+[indexterm1 transfer_at_least] Return a completion condition function object that indicates that a read or write operation should continue until a minimum number of bytes has been transferred, or until an error occurs.
 
   unspecified transfer_at_least(
       std::size_t minimum);
@@ -55711,7 +56094,7 @@
 
 [section:use_service use_service]
 
-
+[indexterm1 use_service]
 
   template<
       typename ``[link boost_asio.reference.Service Service]``>
@@ -55874,7 +56257,7 @@
 
 [section:assign windows::basic_handle::assign]
 
-Assign an existing native handle to the handle.
+[indexterm2 assign..windows::basic_handle] Assign an existing native handle to the handle.
 
   void ``[link boost_asio.reference.windows__basic_handle.assign.overload1 assign]``(
       const native_type & native_handle);
@@ -55914,7 +56297,7 @@
 
 [section:basic_handle windows::basic_handle::basic_handle]
 
-Construct a basic_handle without opening it.
+[indexterm2 basic_handle..windows::basic_handle] Construct a basic_handle without opening it.
 
   ``[link boost_asio.reference.windows__basic_handle.basic_handle.overload1 basic_handle]``(
       boost::asio::io_service & io_service);
@@ -55991,7 +56374,7 @@
 
 [section:cancel windows::basic_handle::cancel]
 
-Cancel all asynchronous operations associated with the handle.
+[indexterm2 cancel..windows::basic_handle] Cancel all asynchronous operations associated with the handle.
 
   void ``[link boost_asio.reference.windows__basic_handle.cancel.overload1 cancel]``();
 
@@ -56053,7 +56436,7 @@
 
 [section:close windows::basic_handle::close]
 
-Close the handle.
+[indexterm2 close..windows::basic_handle] Close the handle.
 
   void ``[link boost_asio.reference.windows__basic_handle.close.overload1 close]``();
 
@@ -56119,7 +56502,7 @@
 
 ['Inherited from basic_io_object.]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..windows::basic_handle] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -56142,7 +56525,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation of the I/O object.
+[indexterm2 implementation..windows::basic_handle] The underlying implementation of the I/O object.
 
   implementation_type implementation;
 
@@ -56157,7 +56540,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation type of I/O object.
+[indexterm2 implementation_type..windows::basic_handle] The underlying implementation type of I/O object.
 
   typedef service_type::implementation_type implementation_type;
 
@@ -56173,7 +56556,7 @@
 
 ['Inherited from basic_io_object.]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..windows::basic_handle] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -56193,7 +56576,7 @@
 
 [section:is_open windows::basic_handle::is_open]
 
-Determine whether the handle is open.
+[indexterm2 is_open..windows::basic_handle] Determine whether the handle is open.
 
   bool is_open() const;
 
@@ -56205,7 +56588,7 @@
 
 [section:lowest_layer windows::basic_handle::lowest_layer]
 
-Get a reference to the lowest layer.
+[indexterm2 lowest_layer..windows::basic_handle] Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -56225,7 +56608,7 @@
 
 [section:lowest_layer_type windows::basic_handle::lowest_layer_type]
 
-A basic_handle is always the lowest layer.
+[indexterm2 lowest_layer_type..windows::basic_handle] A basic_handle is always the lowest layer.
 
   typedef basic_handle< HandleService > lowest_layer_type;
 
@@ -56360,7 +56743,7 @@
 
 [section:native windows::basic_handle::native]
 
-Get the native handle representation.
+[indexterm2 native..windows::basic_handle] Get the native handle representation.
 
   native_type native();
 
@@ -56374,7 +56757,7 @@
 
 [section:native_type windows::basic_handle::native_type]
 
-The native representation of a handle.
+[indexterm2 native_type..windows::basic_handle] The native representation of a handle.
 
   typedef HandleService::native_type native_type;
 
@@ -56390,7 +56773,7 @@
 
 ['Inherited from basic_io_object.]
 
-The service associated with the I/O object.
+[indexterm2 service..windows::basic_handle] The service associated with the I/O object.
 
   service_type & service;
 
@@ -56405,7 +56788,7 @@
 
 ['Inherited from basic_io_object.]
 
-The type of the service that will be used to provide I/O operations.
+[indexterm2 service_type..windows::basic_handle] The type of the service that will be used to provide I/O operations.
 
   typedef HandleService service_type;
 
@@ -56418,7 +56801,7 @@
 
 [section:_basic_handle windows::basic_handle::~basic_handle]
 
-Protected destructor to prevent deletion through this type.
+[indexterm2 ~basic_handle..windows::basic_handle] Protected destructor to prevent deletion through this type.
 
   ~basic_handle();
 
@@ -56573,7 +56956,7 @@
 
 [section:assign windows::basic_random_access_handle::assign]
 
-Assign an existing native handle to the handle.
+[indexterm2 assign..windows::basic_random_access_handle] Assign an existing native handle to the handle.
 
   void ``[link boost_asio.reference.windows__basic_random_access_handle.assign.overload1 assign]``(
       const native_type & native_handle);
@@ -56620,7 +57003,7 @@
 
 [section:async_read_some_at windows::basic_random_access_handle::async_read_some_at]
 
-Start an asynchronous read at the specified offset.
+[indexterm2 async_read_some_at..windows::basic_random_access_handle] Start an asynchronous read at the specified offset.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -56649,7 +57032,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes read.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -56679,7 +57061,7 @@
 
 [section:async_write_some_at windows::basic_random_access_handle::async_write_some_at]
 
-Start an asynchronous write at the specified offset.
+[indexterm2 async_write_some_at..windows::basic_random_access_handle] Start an asynchronous write at the specified offset.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -56708,7 +57090,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes written.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -56737,7 +57118,7 @@
 
 [section:basic_random_access_handle windows::basic_random_access_handle::basic_random_access_handle]
 
-Construct a basic_random_access_handle without opening it.
+[indexterm2 basic_random_access_handle..windows::basic_random_access_handle] Construct a basic_random_access_handle without opening it.
 
   ``[link boost_asio.reference.windows__basic_random_access_handle.basic_random_access_handle.overload1 basic_random_access_handle]``(
       boost::asio::io_service & io_service);
@@ -56814,7 +57195,7 @@
 
 [section:cancel windows::basic_random_access_handle::cancel]
 
-Cancel all asynchronous operations associated with the handle.
+[indexterm2 cancel..windows::basic_random_access_handle] Cancel all asynchronous operations associated with the handle.
 
   void ``[link boost_asio.reference.windows__basic_random_access_handle.cancel.overload1 cancel]``();
 
@@ -56882,7 +57263,7 @@
 
 [section:close windows::basic_random_access_handle::close]
 
-Close the handle.
+[indexterm2 close..windows::basic_random_access_handle] Close the handle.
 
   void ``[link boost_asio.reference.windows__basic_random_access_handle.close.overload1 close]``();
 
@@ -56954,7 +57335,7 @@
 
 ['Inherited from basic_io_object.]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..windows::basic_random_access_handle] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -56977,7 +57358,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation of the I/O object.
+[indexterm2 implementation..windows::basic_random_access_handle] The underlying implementation of the I/O object.
 
   implementation_type implementation;
 
@@ -56992,7 +57373,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation type of I/O object.
+[indexterm2 implementation_type..windows::basic_random_access_handle] The underlying implementation type of I/O object.
 
   typedef service_type::implementation_type implementation_type;
 
@@ -57008,7 +57389,7 @@
 
 ['Inherited from basic_io_object.]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..windows::basic_random_access_handle] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -57031,7 +57412,7 @@
 
 ['Inherited from windows::basic_handle.]
 
-Determine whether the handle is open.
+[indexterm2 is_open..windows::basic_random_access_handle] Determine whether the handle is open.
 
   bool is_open() const;
 
@@ -57046,7 +57427,7 @@
 
 ['Inherited from windows::basic_handle.]
 
-Get a reference to the lowest layer.
+[indexterm2 lowest_layer..windows::basic_random_access_handle] Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -57069,7 +57450,7 @@
 
 ['Inherited from windows::basic_handle.]
 
-A basic_handle is always the lowest layer.
+[indexterm2 lowest_layer_type..windows::basic_random_access_handle] A basic_handle is always the lowest layer.
 
   typedef basic_handle< RandomAccessHandleService > lowest_layer_type;
 
@@ -57207,7 +57588,7 @@
 
 ['Inherited from windows::basic_handle.]
 
-Get the native handle representation.
+[indexterm2 native..windows::basic_random_access_handle] Get the native handle representation.
 
   native_type native();
 
@@ -57221,7 +57602,7 @@
 
 [section:native_type windows::basic_random_access_handle::native_type]
 
-The native representation of a handle.
+[indexterm2 native_type..windows::basic_random_access_handle] The native representation of a handle.
 
   typedef RandomAccessHandleService::native_type native_type;
 
@@ -57233,7 +57614,7 @@
 
 [section:read_some_at windows::basic_random_access_handle::read_some_at]
 
-Read some data from the handle at the specified offset.
+[indexterm2 read_some_at..windows::basic_random_access_handle] Read some data from the handle at the specified offset.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -57359,7 +57740,7 @@
 
 ['Inherited from basic_io_object.]
 
-The service associated with the I/O object.
+[indexterm2 service..windows::basic_random_access_handle] The service associated with the I/O object.
 
   service_type & service;
 
@@ -57374,7 +57755,7 @@
 
 ['Inherited from basic_io_object.]
 
-The type of the service that will be used to provide I/O operations.
+[indexterm2 service_type..windows::basic_random_access_handle] The type of the service that will be used to provide I/O operations.
 
   typedef RandomAccessHandleService service_type;
 
@@ -57386,7 +57767,7 @@
 
 [section:write_some_at windows::basic_random_access_handle::write_some_at]
 
-Write some data to the handle at the specified offset.
+[indexterm2 write_some_at..windows::basic_random_access_handle] Write some data to the handle at the specified offset.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -57652,7 +58033,7 @@
 
 [section:assign windows::basic_stream_handle::assign]
 
-Assign an existing native handle to the handle.
+[indexterm2 assign..windows::basic_stream_handle] Assign an existing native handle to the handle.
 
   void ``[link boost_asio.reference.windows__basic_stream_handle.assign.overload1 assign]``(
       const native_type & native_handle);
@@ -57699,7 +58080,7 @@
 
 [section:async_read_some windows::basic_stream_handle::async_read_some]
 
-Start an asynchronous read.
+[indexterm2 async_read_some..windows::basic_stream_handle] Start an asynchronous read.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -57725,7 +58106,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes read.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -57755,7 +58135,7 @@
 
 [section:async_write_some windows::basic_stream_handle::async_write_some]
 
-Start an asynchronous write.
+[indexterm2 async_write_some..windows::basic_stream_handle] Start an asynchronous write.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -57781,7 +58161,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes written.
    );
-
 ``
 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io\_service::post().]]
 
@@ -57810,7 +58189,7 @@
 
 [section:basic_stream_handle windows::basic_stream_handle::basic_stream_handle]
 
-Construct a basic_stream_handle without opening it.
+[indexterm2 basic_stream_handle..windows::basic_stream_handle] Construct a basic_stream_handle without opening it.
 
   ``[link boost_asio.reference.windows__basic_stream_handle.basic_stream_handle.overload1 basic_stream_handle]``(
       boost::asio::io_service & io_service);
@@ -57887,7 +58266,7 @@
 
 [section:cancel windows::basic_stream_handle::cancel]
 
-Cancel all asynchronous operations associated with the handle.
+[indexterm2 cancel..windows::basic_stream_handle] Cancel all asynchronous operations associated with the handle.
 
   void ``[link boost_asio.reference.windows__basic_stream_handle.cancel.overload1 cancel]``();
 
@@ -57955,7 +58334,7 @@
 
 [section:close windows::basic_stream_handle::close]
 
-Close the handle.
+[indexterm2 close..windows::basic_stream_handle] Close the handle.
 
   void ``[link boost_asio.reference.windows__basic_stream_handle.close.overload1 close]``();
 
@@ -58027,7 +58406,7 @@
 
 ['Inherited from basic_io_object.]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..windows::basic_stream_handle] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -58050,7 +58429,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation of the I/O object.
+[indexterm2 implementation..windows::basic_stream_handle] The underlying implementation of the I/O object.
 
   implementation_type implementation;
 
@@ -58065,7 +58444,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation type of I/O object.
+[indexterm2 implementation_type..windows::basic_stream_handle] The underlying implementation type of I/O object.
 
   typedef service_type::implementation_type implementation_type;
 
@@ -58081,7 +58460,7 @@
 
 ['Inherited from basic_io_object.]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..windows::basic_stream_handle] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -58104,7 +58483,7 @@
 
 ['Inherited from windows::basic_handle.]
 
-Determine whether the handle is open.
+[indexterm2 is_open..windows::basic_stream_handle] Determine whether the handle is open.
 
   bool is_open() const;
 
@@ -58119,7 +58498,7 @@
 
 ['Inherited from windows::basic_handle.]
 
-Get a reference to the lowest layer.
+[indexterm2 lowest_layer..windows::basic_stream_handle] Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -58142,7 +58521,7 @@
 
 ['Inherited from windows::basic_handle.]
 
-A basic_handle is always the lowest layer.
+[indexterm2 lowest_layer_type..windows::basic_stream_handle] A basic_handle is always the lowest layer.
 
   typedef basic_handle< StreamHandleService > lowest_layer_type;
 
@@ -58280,7 +58659,7 @@
 
 ['Inherited from windows::basic_handle.]
 
-Get the native handle representation.
+[indexterm2 native..windows::basic_stream_handle] Get the native handle representation.
 
   native_type native();
 
@@ -58294,7 +58673,7 @@
 
 [section:native_type windows::basic_stream_handle::native_type]
 
-The native representation of a handle.
+[indexterm2 native_type..windows::basic_stream_handle] The native representation of a handle.
 
   typedef StreamHandleService::native_type native_type;
 
@@ -58306,7 +58685,7 @@
 
 [section:read_some windows::basic_stream_handle::read_some]
 
-Read some data from the handle.
+[indexterm2 read_some..windows::basic_stream_handle] Read some data from the handle.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -58424,7 +58803,7 @@
 
 ['Inherited from basic_io_object.]
 
-The service associated with the I/O object.
+[indexterm2 service..windows::basic_stream_handle] The service associated with the I/O object.
 
   service_type & service;
 
@@ -58439,7 +58818,7 @@
 
 ['Inherited from basic_io_object.]
 
-The type of the service that will be used to provide I/O operations.
+[indexterm2 service_type..windows::basic_stream_handle] The type of the service that will be used to provide I/O operations.
 
   typedef StreamHandleService service_type;
 
@@ -58451,7 +58830,7 @@
 
 [section:write_some windows::basic_stream_handle::write_some]
 
-Write some data to the handle.
+[indexterm2 write_some..windows::basic_stream_handle] Write some data to the handle.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -58569,7 +58948,7 @@
 
 [section:windows__random_access_handle windows::random_access_handle]
 
-Typedef for the typical usage of a random-access handle.
+[indexterm1 windows::random_access_handle] Typedef for the typical usage of a random-access handle.
 
   typedef basic_random_access_handle random_access_handle;
 
@@ -58833,7 +59212,7 @@
 
 [section:assign windows::random_access_handle_service::assign]
 
-Assign an existing native handle to a random-access handle.
+[indexterm2 assign..windows::random_access_handle_service] Assign an existing native handle to a random-access handle.
 
   boost::system::error_code assign(
       implementation_type & impl,
@@ -58848,7 +59227,7 @@
 
 [section:async_read_some_at windows::random_access_handle_service::async_read_some_at]
 
-Start an asynchronous read at the specified offset.
+[indexterm2 async_read_some_at..windows::random_access_handle_service] Start an asynchronous read at the specified offset.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -58867,7 +59246,7 @@
 
 [section:async_write_some_at windows::random_access_handle_service::async_write_some_at]
 
-Start an asynchronous write at the specified offset.
+[indexterm2 async_write_some_at..windows::random_access_handle_service] Start an asynchronous write at the specified offset.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -58886,7 +59265,7 @@
 
 [section:cancel windows::random_access_handle_service::cancel]
 
-Cancel all asynchronous operations associated with the handle.
+[indexterm2 cancel..windows::random_access_handle_service] Cancel all asynchronous operations associated with the handle.
 
   boost::system::error_code cancel(
       implementation_type & impl,
@@ -58900,7 +59279,7 @@
 
 [section:close windows::random_access_handle_service::close]
 
-Close a random-access handle implementation.
+[indexterm2 close..windows::random_access_handle_service] Close a random-access handle implementation.
 
   boost::system::error_code close(
       implementation_type & impl,
@@ -58914,7 +59293,7 @@
 
 [section:construct windows::random_access_handle_service::construct]
 
-Construct a new random-access handle implementation.
+[indexterm2 construct..windows::random_access_handle_service] Construct a new random-access handle implementation.
 
   void construct(
       implementation_type & impl);
@@ -58927,7 +59306,7 @@
 
 [section:destroy windows::random_access_handle_service::destroy]
 
-Destroy a random-access handle implementation.
+[indexterm2 destroy..windows::random_access_handle_service] Destroy a random-access handle implementation.
 
   void destroy(
       implementation_type & impl);
@@ -58943,7 +59322,7 @@
 
 ['Inherited from io_service.]
 
-Get the io_service object that owns the service.
+[indexterm2 get_io_service..windows::random_access_handle_service] Get the io_service object that owns the service.
 
   boost::asio::io_service & get_io_service();
 
@@ -58955,7 +59334,7 @@
 
 [section:id windows::random_access_handle_service::id]
 
-The unique service identifier.
+[indexterm2 id..windows::random_access_handle_service] The unique service identifier.
 
   static boost::asio::io_service::id id;
 
@@ -58967,7 +59346,7 @@
 
 [section:implementation_type windows::random_access_handle_service::implementation_type]
 
-The type of a random-access handle implementation.
+[indexterm2 implementation_type..windows::random_access_handle_service] The type of a random-access handle implementation.
 
   typedef implementation_defined implementation_type;
 
@@ -58983,7 +59362,7 @@
 
 ['Inherited from io_service.]
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+[indexterm2 io_service..windows::random_access_handle_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
   boost::asio::io_service & io_service();
 
@@ -58995,7 +59374,7 @@
 
 [section:is_open windows::random_access_handle_service::is_open]
 
-Determine whether the handle is open.
+[indexterm2 is_open..windows::random_access_handle_service] Determine whether the handle is open.
 
   bool is_open(
       const implementation_type & impl) const;
@@ -59008,7 +59387,7 @@
 
 [section:native windows::random_access_handle_service::native]
 
-Get the native handle implementation.
+[indexterm2 native..windows::random_access_handle_service] Get the native handle implementation.
 
   native_type native(
       implementation_type & impl);
@@ -59021,7 +59400,7 @@
 
 [section:native_type windows::random_access_handle_service::native_type]
 
-The native handle type.
+[indexterm2 native_type..windows::random_access_handle_service] The native handle type.
 
   typedef implementation_defined native_type;
 
@@ -59034,7 +59413,7 @@
 
 [section:random_access_handle_service windows::random_access_handle_service::random_access_handle_service]
 
-Construct a new random-access handle service for the specified io_service.
+[indexterm2 random_access_handle_service..windows::random_access_handle_service] Construct a new random-access handle service for the specified io_service.
 
   random_access_handle_service(
       boost::asio::io_service & io_service);
@@ -59047,7 +59426,7 @@
 
 [section:read_some_at windows::random_access_handle_service::read_some_at]
 
-Read some data from the specified offset.
+[indexterm2 read_some_at..windows::random_access_handle_service] Read some data from the specified offset.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -59065,7 +59444,7 @@
 
 [section:shutdown_service windows::random_access_handle_service::shutdown_service]
 
-Destroy all user-defined handler objects owned by the service.
+[indexterm2 shutdown_service..windows::random_access_handle_service] Destroy all user-defined handler objects owned by the service.
 
   void shutdown_service();
 
@@ -59077,7 +59456,7 @@
 
 [section:write_some_at windows::random_access_handle_service::write_some_at]
 
-Write the given data at the specified offset.
+[indexterm2 write_some_at..windows::random_access_handle_service] Write the given data at the specified offset.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -59098,7 +59477,7 @@
 
 [section:windows__stream_handle windows::stream_handle]
 
-Typedef for the typical usage of a stream-oriented handle.
+[indexterm1 windows::stream_handle] Typedef for the typical usage of a stream-oriented handle.
 
   typedef basic_stream_handle stream_handle;
 
@@ -59362,7 +59741,7 @@
 
 [section:assign windows::stream_handle_service::assign]
 
-Assign an existing native handle to a stream handle.
+[indexterm2 assign..windows::stream_handle_service] Assign an existing native handle to a stream handle.
 
   boost::system::error_code assign(
       implementation_type & impl,
@@ -59377,7 +59756,7 @@
 
 [section:async_read_some windows::stream_handle_service::async_read_some]
 
-Start an asynchronous read.
+[indexterm2 async_read_some..windows::stream_handle_service] Start an asynchronous read.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -59395,7 +59774,7 @@
 
 [section:async_write_some windows::stream_handle_service::async_write_some]
 
-Start an asynchronous write.
+[indexterm2 async_write_some..windows::stream_handle_service] Start an asynchronous write.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -59413,7 +59792,7 @@
 
 [section:cancel windows::stream_handle_service::cancel]
 
-Cancel all asynchronous operations associated with the handle.
+[indexterm2 cancel..windows::stream_handle_service] Cancel all asynchronous operations associated with the handle.
 
   boost::system::error_code cancel(
       implementation_type & impl,
@@ -59427,7 +59806,7 @@
 
 [section:close windows::stream_handle_service::close]
 
-Close a stream handle implementation.
+[indexterm2 close..windows::stream_handle_service] Close a stream handle implementation.
 
   boost::system::error_code close(
       implementation_type & impl,
@@ -59441,7 +59820,7 @@
 
 [section:construct windows::stream_handle_service::construct]
 
-Construct a new stream handle implementation.
+[indexterm2 construct..windows::stream_handle_service] Construct a new stream handle implementation.
 
   void construct(
       implementation_type & impl);
@@ -59454,7 +59833,7 @@
 
 [section:destroy windows::stream_handle_service::destroy]
 
-Destroy a stream handle implementation.
+[indexterm2 destroy..windows::stream_handle_service] Destroy a stream handle implementation.
 
   void destroy(
       implementation_type & impl);
@@ -59470,7 +59849,7 @@
 
 ['Inherited from io_service.]
 
-Get the io_service object that owns the service.
+[indexterm2 get_io_service..windows::stream_handle_service] Get the io_service object that owns the service.
 
   boost::asio::io_service & get_io_service();
 
@@ -59482,7 +59861,7 @@
 
 [section:id windows::stream_handle_service::id]
 
-The unique service identifier.
+[indexterm2 id..windows::stream_handle_service] The unique service identifier.
 
   static boost::asio::io_service::id id;
 
@@ -59494,7 +59873,7 @@
 
 [section:implementation_type windows::stream_handle_service::implementation_type]
 
-The type of a stream handle implementation.
+[indexterm2 implementation_type..windows::stream_handle_service] The type of a stream handle implementation.
 
   typedef implementation_defined implementation_type;
 
@@ -59510,7 +59889,7 @@
 
 ['Inherited from io_service.]
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+[indexterm2 io_service..windows::stream_handle_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
   boost::asio::io_service & io_service();
 
@@ -59522,7 +59901,7 @@
 
 [section:is_open windows::stream_handle_service::is_open]
 
-Determine whether the handle is open.
+[indexterm2 is_open..windows::stream_handle_service] Determine whether the handle is open.
 
   bool is_open(
       const implementation_type & impl) const;
@@ -59535,7 +59914,7 @@
 
 [section:native windows::stream_handle_service::native]
 
-Get the native handle implementation.
+[indexterm2 native..windows::stream_handle_service] Get the native handle implementation.
 
   native_type native(
       implementation_type & impl);
@@ -59548,7 +59927,7 @@
 
 [section:native_type windows::stream_handle_service::native_type]
 
-The native handle type.
+[indexterm2 native_type..windows::stream_handle_service] The native handle type.
 
   typedef implementation_defined native_type;
 
@@ -59561,7 +59940,7 @@
 
 [section:read_some windows::stream_handle_service::read_some]
 
-Read some data from the stream.
+[indexterm2 read_some..windows::stream_handle_service] Read some data from the stream.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -59578,7 +59957,7 @@
 
 [section:shutdown_service windows::stream_handle_service::shutdown_service]
 
-Destroy all user-defined handler objects owned by the service.
+[indexterm2 shutdown_service..windows::stream_handle_service] Destroy all user-defined handler objects owned by the service.
 
   void shutdown_service();
 
@@ -59590,7 +59969,7 @@
 
 [section:stream_handle_service windows::stream_handle_service::stream_handle_service]
 
-Construct a new stream handle service for the specified io_service.
+[indexterm2 stream_handle_service..windows::stream_handle_service] Construct a new stream handle service for the specified io_service.
 
   stream_handle_service(
       boost::asio::io_service & io_service);
@@ -59603,7 +59982,7 @@
 
 [section:write_some windows::stream_handle_service::write_some]
 
-Write the given data to the stream.
+[indexterm2 write_some..windows::stream_handle_service] Write the given data to the stream.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -59622,8 +60001,8 @@
 
 [section:write write]
 
-Write all of the supplied data to a stream before returning.
-
+[indexterm1 write] Write a certain amount of data to a stream before returning.
+
   template<
       typename ``[link boost_asio.reference.SyncWriteStream SyncWriteStream]``,
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -59793,7 +60172,6 @@
      std::size_t bytes_transferred // Number of bytes transferred
                                              // so far.
    );
-
 ``
 A return value of true indicates that the write operation is complete. False indicates that further calls to the stream's write\_some function are required.]]
 
@@ -59873,7 +60251,6 @@
      std::size_t bytes_transferred // Number of bytes transferred
                                              // so far.
    );
-
 ``
 A return value of true indicates that the write operation is complete. False indicates that further calls to the stream's write\_some function are required.]]
 
@@ -59996,7 +60373,6 @@
      std::size_t bytes_transferred // Number of bytes transferred
                                              // so far.
    );
-
 ``
 A return value of true indicates that the write operation is complete. False indicates that further calls to the stream's write\_some function are required.]]
 
@@ -60064,7 +60440,6 @@
      std::size_t bytes_transferred // Number of bytes transferred
                                              // so far.
    );
-
 ``
 A return value of true indicates that the write operation is complete. False indicates that further calls to the stream's write\_some function are required.]]
 
@@ -60085,8 +60460,8 @@
 
 [section:write_at write_at]
 
-Write all of the supplied data at the specified offset before returning.
-
+[indexterm1 write_at] Write a certain amount of data at a specified offset before returning.
+
   template<
       typename ``[link boost_asio.reference.SyncRandomAccessWriteDevice SyncRandomAccessWriteDevice]``,
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -60268,7 +60643,6 @@
      // Number of bytes transferred so far.
      std::size_t bytes_transferred
    );
-
 ``
 A return value of true indicates that the write operation is complete. False indicates that further calls to the device's write\_some\_at function are required.]]
 
@@ -60351,7 +60725,6 @@
      // Number of bytes transferred so far.
      std::size_t bytes_transferred
    );
-
 ``
 A return value of true indicates that the write operation is complete. False indicates that further calls to the device's write\_some\_at function are required.]]
 
@@ -60480,7 +60853,6 @@
      // Number of bytes transferred so far.
      std::size_t bytes_transferred
    );
-
 ``
 A return value of true indicates that the write operation is complete. False indicates that further calls to the device's write\_some\_at function are required.]]
 
@@ -60551,7 +60923,6 @@
      // Number of bytes transferred so far.
      std::size_t bytes_transferred
    );
-
 ``
 A return value of true indicates that the write operation is complete. False indicates that further calls to the device's write\_some\_at function are required.]]
 
@@ -60592,7 +60963,7 @@
 
 [section:value boost::system::is_error_code_enum< boost::asio::error::addrinfo_errors >::value]
 
-
+[indexterm2 value..boost::system::is_error_code_enum< boost::asio::error::addrinfo_errors >]
 
   static const bool value = true;
 
@@ -60626,7 +60997,7 @@
 
 [section:value boost::system::is_error_code_enum< boost::asio::error::basic_errors >::value]
 
-
+[indexterm2 value..boost::system::is_error_code_enum< boost::asio::error::basic_errors >]
 
   static const bool value = true;
 
@@ -60660,7 +61031,7 @@
 
 [section:value boost::system::is_error_code_enum< boost::asio::error::misc_errors >::value]
 
-
+[indexterm2 value..boost::system::is_error_code_enum< boost::asio::error::misc_errors >]
 
   static const bool value = true;
 
@@ -60694,7 +61065,7 @@
 
 [section:value boost::system::is_error_code_enum< boost::asio::error::netdb_errors >::value]
 
-
+[indexterm2 value..boost::system::is_error_code_enum< boost::asio::error::netdb_errors >]
 
   static const bool value = true;
 
@@ -60728,7 +61099,7 @@
 
 [section:value boost::system::is_error_code_enum< boost::asio::error::ssl_errors >::value]
 
-
+[indexterm2 value..boost::system::is_error_code_enum< boost::asio::error::ssl_errors >]
 
   static const bool value = true;
 

Modified: branches/release/libs/asio/doc/reference.xsl
==============================================================================
--- branches/release/libs/asio/doc/reference.xsl (original)
+++ branches/release/libs/asio/doc/reference.xsl 2008-07-03 09:05:33 EDT (Thu, 03 Jul 2008)
@@ -271,7 +271,9 @@
   <xsl:text>``</xsl:text>
   <xsl:value-of select="$newline"/>
   <xsl:apply-templates mode="codeline"/>
- <xsl:value-of select="$newline"/>
+ <xsl:if test="substring(., string-length(.)) = $newline">
+ <xsl:value-of select="$newline"/>
+ </xsl:if>
   <xsl:text>``</xsl:text>
   <xsl:value-of select="$newline"/>
 </xsl:template>
@@ -315,6 +317,16 @@
 </xsl:template>
 
 
+<xsl:template match="computeroutput" mode="markup">
+<xsl:text>`</xsl:text><xsl:value-of select="."/><xsl:text>`</xsl:text>
+</xsl:template>
+
+
+<xsl:template match="computeroutput" mode="markup-nested">
+<xsl:text>`</xsl:text><xsl:value-of select="."/><xsl:text>`</xsl:text>
+</xsl:template>
+
+
 <xsl:template match="listitem" mode="markup">
 * <xsl:value-of select="."/><xsl:text>
 </xsl:text>
@@ -808,6 +820,12 @@
 [section:<xsl:value-of select="$id"/><xsl:text> </xsl:text>
 <xsl:value-of select="$class-name"/>::<xsl:value-of select="$name"/>]
 
+<xsl:text>[indexterm2 </xsl:text>
+<xsl:value-of select="$name"/>
+<xsl:text>..</xsl:text>
+<xsl:value-of select="$class-name"/>
+<xsl:text>] </xsl:text>
+
 <xsl:value-of select="briefdescription"/><xsl:text>
 </xsl:text>
 
@@ -838,6 +856,14 @@
 
 </xsl:text></xsl:if></xsl:if>
 
+<xsl:if test="$overload-count = 1">
+ <xsl:text>[indexterm2 </xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:text>..</xsl:text>
+ <xsl:value-of select="$class-name"/>
+ <xsl:text>] </xsl:text>
+</xsl:if>
+
 <xsl:value-of select="briefdescription"/><xsl:text>
 </xsl:text>
 
@@ -956,18 +982,33 @@
         <xsl:when test="declname = 'Arg'">
           <xsl:value-of select="declname"/>
         </xsl:when>
+ <xsl:when test="declname = 'BufferSequence'">
+ <xsl:value-of select="declname"/>
+ </xsl:when>
+ <xsl:when test="declname = 'ByteType'">
+ <xsl:value-of select="declname"/>
+ </xsl:when>
         <xsl:when test="declname = 'CompletionCondition'">
           <xsl:value-of select="declname"/>
         </xsl:when>
         <xsl:when test="declname = 'Context_Service'">
           <xsl:value-of select="declname"/>
         </xsl:when>
+ <xsl:when test="declname = 'Elem'">
+ <xsl:value-of select="declname"/>
+ </xsl:when>
+ <xsl:when test="declname = 'ErrorEnum'">
+ <xsl:value-of select="declname"/>
+ </xsl:when>
         <xsl:when test="declname = 'Function'">
           <xsl:value-of select="declname"/>
         </xsl:when>
         <xsl:when test="declname = 'HandshakeHandler'">
           <xsl:value-of select="declname"/>
         </xsl:when>
+ <xsl:when test="declname = 'MatchCondition'">
+ <xsl:value-of select="declname"/>
+ </xsl:when>
         <xsl:when test="declname = 'N'">
           <xsl:value-of select="declname"/>
         </xsl:when>
@@ -977,9 +1018,15 @@
         <xsl:when test="declname = 'PodType'">
           <xsl:value-of select="declname"/>
         </xsl:when>
+ <xsl:when test="declname = 'PointerToPodType'">
+ <xsl:value-of select="declname"/>
+ </xsl:when>
         <xsl:when test="declname = 'ShutdownHandler'">
           <xsl:value-of select="declname"/>
         </xsl:when>
+ <xsl:when test="declname = 'SocketService1' or declname = 'SocketService2'">
+ <xsl:value-of select="concat('``[link boost_asio.reference.SocketService ', declname, ']``')"/>
+ </xsl:when>
         <xsl:when test="declname = 'Stream'">
           <xsl:value-of select="declname"/>
         </xsl:when>
@@ -995,6 +1042,12 @@
         <xsl:when test="declname = 'Time'">
           <xsl:value-of select="declname"/>
         </xsl:when>
+ <xsl:when test="declname = 'TimeType'">
+ <xsl:value-of select="declname"/>
+ </xsl:when>
+ <xsl:when test="declname = 'Traits'">
+ <xsl:value-of select="declname"/>
+ </xsl:when>
         <xsl:when test="count(declname) = 0">
         </xsl:when>
         <xsl:otherwise>
@@ -1052,8 +1105,22 @@
 <xsl:if test="$overload-count &gt; 1 and $overload-position = 1">
 [section:<xsl:value-of select="$id"/><xsl:text> </xsl:text><xsl:value-of select="$name"/>]
 
-<xsl:value-of select="briefdescription"/><xsl:text>
-</xsl:text>
+<xsl:text>[indexterm1 </xsl:text>
+<xsl:value-of select="$name"/>
+<xsl:text>] </xsl:text>
+
+<xsl:choose>
+ <xsl:when test="count(/doxygen/compounddef[@kind='group' and compoundname=$name]) &gt; 0">
+ <xsl:for-each select="/doxygen/compounddef[@kind='group' and compoundname=$name]">
+ <xsl:value-of select="briefdescription"/><xsl:text>
+ </xsl:text>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="briefdescription"/><xsl:text>
+ </xsl:text>
+ </xsl:otherwise>
+</xsl:choose>
 
 <xsl:for-each select="../memberdef[name = $unqualified-name]">
 <xsl:text>
@@ -1076,6 +1143,12 @@
 <xsl:if test="$overload-count &gt; 1"> (<xsl:value-of
  select="$overload-position"/> of <xsl:value-of select="$overload-count"/> overloads)</xsl:if>]
 
+<xsl:if test="$overload-count = 1">
+ <xsl:text>[indexterm1 </xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:text>] </xsl:text>
+</xsl:if>
+
 <xsl:value-of select="briefdescription"/><xsl:text>
 </xsl:text>
 

Modified: branches/release/libs/asio/doc/requirements/StreamDescriptorService.qbk
==============================================================================
--- branches/release/libs/asio/doc/requirements/StreamDescriptorService.qbk (original)
+++ branches/release/libs/asio/doc/requirements/StreamDescriptorService.qbk 2008-07-03 09:05:33 EDT (Thu, 03 Jul 2008)
@@ -29,7 +29,7 @@
     [
       pre: `a.is_open(b)`.\n
       \n
- Reads one or more bytes of data from a decsriptor `b`.\n
+ Reads one or more bytes of data from a descriptor `b`.\n
       \n
       The mutable buffer sequence `mb` specifies memory where the data should
       be placed. The operation shall always fill a buffer in the sequence
@@ -105,7 +105,7 @@
       pre: `a.is_open(b)`.\n
       \n
       Initiates an asynchronous operation to write one or more bytes of data to
- a decsriptor `b`. The operation is performed via the `io_service`
+ a descriptor `b`. The operation is performed via the `io_service`
       object `a.io_service()` and behaves according to [link
       boost_asio.reference.asynchronous_operations asynchronous operation]
       requirements.\n

Modified: branches/release/libs/asio/doc/requirements/StreamHandleService.qbk
==============================================================================
--- branches/release/libs/asio/doc/requirements/StreamHandleService.qbk (original)
+++ branches/release/libs/asio/doc/requirements/StreamHandleService.qbk 2008-07-03 09:05:33 EDT (Thu, 03 Jul 2008)
@@ -29,7 +29,7 @@
     [
       pre: `a.is_open(b)`.\n
       \n
- Reads one or more bytes of data from a decsriptor `b`.\n
+ Reads one or more bytes of data from a handle `b`.\n
       \n
       The mutable buffer sequence `mb` specifies memory where the data should
       be placed. The operation shall always fill a buffer in the sequence
@@ -105,7 +105,7 @@
       pre: `a.is_open(b)`.\n
       \n
       Initiates an asynchronous operation to write one or more bytes of data to
- a decsriptor `b`. The operation is performed via the `io_service`
+ a handle `b`. The operation is performed via the `io_service`
       object `a.io_service()` and behaves according to [link
       boost_asio.reference.asynchronous_operations asynchronous operation]
       requirements.\n

Modified: branches/release/libs/asio/example/porthopper/client.cpp
==============================================================================
--- branches/release/libs/asio/example/porthopper/client.cpp (original)
+++ branches/release/libs/asio/example/porthopper/client.cpp 2008-07-03 09:05:33 EDT (Thu, 03 Jul 2008)
@@ -1,3 +1,13 @@
+//
+// client.cpp
+// ~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 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)
+//
+
 #include <boost/asio.hpp>
 #include <boost/lambda/lambda.hpp>
 #include <boost/lambda/bind.hpp>

Modified: branches/release/libs/asio/example/porthopper/protocol.hpp
==============================================================================
--- branches/release/libs/asio/example/porthopper/protocol.hpp (original)
+++ branches/release/libs/asio/example/porthopper/protocol.hpp 2008-07-03 09:05:33 EDT (Thu, 03 Jul 2008)
@@ -1,3 +1,13 @@
+//
+// protocol.hpp
+// ~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 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)
+//
+
 #ifndef PORTHOPPER_PROTOCOL_HPP
 #define PORTHOPPER_PROTOCOL_HPP
 

Modified: branches/release/libs/asio/example/porthopper/server.cpp
==============================================================================
--- branches/release/libs/asio/example/porthopper/server.cpp (original)
+++ branches/release/libs/asio/example/porthopper/server.cpp 2008-07-03 09:05:33 EDT (Thu, 03 Jul 2008)
@@ -1,3 +1,13 @@
+//
+// server.cpp
+// ~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 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)
+//
+
 #include <boost/asio.hpp>
 #include <boost/bind.hpp>
 #include <boost/shared_ptr.hpp>

Modified: branches/release/libs/asio/test/Jamfile.v2
==============================================================================
--- branches/release/libs/asio/test/Jamfile.v2 (original)
+++ branches/release/libs/asio/test/Jamfile.v2 2008-07-03 09:05:33 EDT (Thu, 03 Jul 2008)
@@ -37,6 +37,8 @@
     <library>/boost/thread//boost_thread
     <define>BOOST_ALL_NO_LIB=1
     <threading>multi
+ <os>LINUX:<define>_XOPEN_SOURCE=600
+ <os>LINUX:<define>_GNU_SOURCE=1
     <os>SOLARIS:<define>_XOPEN_SOURCE=500
     <os>SOLARIS:<define>__EXTENSIONS__
     <os>SOLARIS:<library>socket


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk