Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r84494 - trunk/libs/asio/doc
From: chris_at_[hidden]
Date: 2013-05-25 09:03:50


Author: chris_kohlhoff
Date: 2013-05-25 09:03:48 EDT (Sat, 25 May 2013)
New Revision: 84494
URL: http://svn.boost.org/trac/boost/changeset/84494

Log:
Regenerate documentation.
Text files modified:
   trunk/libs/asio/doc/reference.dox | 1
   trunk/libs/asio/doc/reference.qbk | 8555 +++++++++++++++++++++++++++++++++++++--
   trunk/libs/asio/doc/tutorial.dox | 6
   3 files changed, 7950 insertions(+), 612 deletions(-)

Modified: trunk/libs/asio/doc/reference.dox
==============================================================================
--- trunk/libs/asio/doc/reference.dox (original)
+++ trunk/libs/asio/doc/reference.dox 2013-05-25 09:03:48 EDT (Sat, 25 May 2013)
@@ -74,6 +74,7 @@
 #---------------------------------------------------------------------------
 INPUT = ./../../../boost/asio.hpp \
                          ./../../../boost/asio \
+ ./../../../boost/asio/generic \
                          ./../../../boost/asio/impl \
                          ./../../../boost/asio/ip \
                          ./../../../boost/asio/local \

Modified: trunk/libs/asio/doc/reference.qbk
==============================================================================
--- trunk/libs/asio/doc/reference.qbk (original)
+++ trunk/libs/asio/doc/reference.qbk 2013-05-25 09:03:48 EDT (Sat, 25 May 2013)
@@ -15,6 +15,7 @@
 [include requirements/AsyncRandomAccessWriteDevice.qbk]
 [include requirements/AsyncReadStream.qbk]
 [include requirements/AsyncWriteStream.qbk]
+[include requirements/BufferedHandshakeHandler.qbk]
 [include requirements/CompletionHandler.qbk]
 [include requirements/ComposedConnectHandler.qbk]
 [include requirements/ConnectHandler.qbk]
@@ -260,6 +261,50 @@
 [endsect]
 
 
+
+[section:asio_handler_is_continuation asio_handler_is_continuation]
+
+[indexterm1 asio_handler_is_continuation]
+Default continuation function for handlers.
+
+
+ bool asio_handler_is_continuation(
+ ... );
+
+
+Asynchronous operations may represent a continuation of the asynchronous control flow associated with the current handler. The implementation can use this knowledge to optimise scheduling of the handler.
+
+Implement asio\_handler\_is\_continuation for your own handlers to indicate when a handler represents a continuation.
+
+The default implementation of the continuation hook returns `false`.
+
+
+[heading Example]
+
+
+
+ class my_handler;
+
+ bool asio_handler_is_continuation(my_handler* context)
+ {
+ return true;
+ }
+
+
+
+
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/handler_continuation_hook.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
 [section:async_connect async_connect]
 
 [indexterm1 async_connect]
@@ -271,7 +316,7 @@
       typename ``[link boost_asio.reference.SocketService SocketService]``,
       typename Iterator,
       typename ``[link boost_asio.reference.ComposedConnectHandler ComposedConnectHandler]``>
- void ``[link boost_asio.reference.async_connect.overload1 async_connect]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_connect.overload1 async_connect]``(
       basic_socket< Protocol, SocketService > & s,
       Iterator begin,
       ComposedConnectHandler handler);
@@ -282,7 +327,7 @@
       typename ``[link boost_asio.reference.SocketService SocketService]``,
       typename Iterator,
       typename ``[link boost_asio.reference.ComposedConnectHandler ComposedConnectHandler]``>
- void ``[link boost_asio.reference.async_connect.overload2 async_connect]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_connect.overload2 async_connect]``(
       basic_socket< Protocol, SocketService > & s,
       Iterator begin,
       Iterator end,
@@ -295,7 +340,7 @@
       typename Iterator,
       typename ConnectCondition,
       typename ``[link boost_asio.reference.ComposedConnectHandler ComposedConnectHandler]``>
- void ``[link boost_asio.reference.async_connect.overload3 async_connect]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_connect.overload3 async_connect]``(
       basic_socket< Protocol, SocketService > & s,
       Iterator begin,
       ConnectCondition connect_condition,
@@ -308,7 +353,7 @@
       typename Iterator,
       typename ConnectCondition,
       typename ``[link boost_asio.reference.ComposedConnectHandler ComposedConnectHandler]``>
- void ``[link boost_asio.reference.async_connect.overload4 async_connect]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_connect.overload4 async_connect]``(
       basic_socket< Protocol, SocketService > & s,
       Iterator begin,
       Iterator end,
@@ -334,7 +379,7 @@
       typename ``[link boost_asio.reference.SocketService SocketService]``,
       typename Iterator,
       typename ``[link boost_asio.reference.ComposedConnectHandler ComposedConnectHandler]``>
- void async_connect(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
       basic_socket< Protocol, SocketService > & s,
       Iterator begin,
       ComposedConnectHandler handler);
@@ -429,7 +474,7 @@
       typename ``[link boost_asio.reference.SocketService SocketService]``,
       typename Iterator,
       typename ``[link boost_asio.reference.ComposedConnectHandler ComposedConnectHandler]``>
- void async_connect(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
       basic_socket< Protocol, SocketService > & s,
       Iterator begin,
       Iterator end,
@@ -524,7 +569,7 @@
       typename Iterator,
       typename ConnectCondition,
       typename ``[link boost_asio.reference.ComposedConnectHandler ComposedConnectHandler]``>
- void async_connect(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
       basic_socket< Protocol, SocketService > & s,
       Iterator begin,
       ConnectCondition connect_condition,
@@ -654,7 +699,7 @@
       typename Iterator,
       typename ConnectCondition,
       typename ``[link boost_asio.reference.ComposedConnectHandler ComposedConnectHandler]``>
- void async_connect(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
       basic_socket< Protocol, SocketService > & s,
       Iterator begin,
       Iterator end,
@@ -782,7 +827,7 @@
       typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.async_read.overload1 async_read]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_read.overload1 async_read]``(
       AsyncReadStream & s,
       const MutableBufferSequence & buffers,
       ReadHandler handler);
@@ -793,7 +838,7 @@
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename CompletionCondition,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.async_read.overload2 async_read]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_read.overload2 async_read]``(
       AsyncReadStream & s,
       const MutableBufferSequence & buffers,
       CompletionCondition completion_condition,
@@ -804,7 +849,7 @@
       typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
       typename Allocator,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.async_read.overload3 async_read]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_read.overload3 async_read]``(
       AsyncReadStream & s,
       basic_streambuf< Allocator > & b,
       ReadHandler handler);
@@ -815,7 +860,7 @@
       typename Allocator,
       typename CompletionCondition,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.async_read.overload4 async_read]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_read.overload4 async_read]``(
       AsyncReadStream & s,
       basic_streambuf< Allocator > & b,
       CompletionCondition completion_condition,
@@ -839,7 +884,7 @@
       typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read(
       AsyncReadStream & s,
       const MutableBufferSequence & buffers,
       ReadHandler handler);
@@ -853,7 +898,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a [*composed operation]. The program must ensure that the stream performs no other read operations (such as async\_read, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
+This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a ['composed operation]. The program must ensure that the stream performs no other read operations (such as async\_read, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
 
 
 [heading Parameters]
@@ -922,7 +967,7 @@
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename CompletionCondition,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read(
       AsyncReadStream & s,
       const MutableBufferSequence & buffers,
       CompletionCondition completion_condition,
@@ -1005,7 +1050,7 @@
       typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
       typename Allocator,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read(
       AsyncReadStream & s,
       basic_streambuf< Allocator > & b,
       ReadHandler handler);
@@ -1019,7 +1064,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a [*composed operation]. The program must ensure that the stream performs no other read operations (such as async\_read, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
+This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a ['composed operation]. The program must ensure that the stream performs no other read operations (such as async\_read, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
 
 
 [heading Parameters]
@@ -1078,7 +1123,7 @@
       typename Allocator,
       typename CompletionCondition,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read(
       AsyncReadStream & s,
       basic_streambuf< Allocator > & b,
       CompletionCondition completion_condition,
@@ -1093,7 +1138,7 @@
 
 * The completion\_condition function object returns 0.
 
-This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a [*composed operation]. The program must ensure that the stream performs no other read operations (such as async\_read, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
+This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a ['composed operation]. The program must ensure that the stream performs no other read operations (such as async\_read, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
 
 
 [heading Parameters]
@@ -1151,9 +1196,9 @@
       typename ``[link boost_asio.reference.AsyncRandomAccessReadDevice AsyncRandomAccessReadDevice]``,
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.async_read_at.overload1 async_read_at]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_read_at.overload1 async_read_at]``(
       AsyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const MutableBufferSequence & buffers,
       ReadHandler handler);
   `` [''''&raquo;''' [link boost_asio.reference.async_read_at.overload1 more...]]``
@@ -1163,9 +1208,9 @@
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename CompletionCondition,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.async_read_at.overload2 async_read_at]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_read_at.overload2 async_read_at]``(
       AsyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const MutableBufferSequence & buffers,
       CompletionCondition completion_condition,
       ReadHandler handler);
@@ -1175,9 +1220,9 @@
       typename ``[link boost_asio.reference.AsyncRandomAccessReadDevice AsyncRandomAccessReadDevice]``,
       typename Allocator,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.async_read_at.overload3 async_read_at]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_read_at.overload3 async_read_at]``(
       AsyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b,
       ReadHandler handler);
   `` [''''&raquo;''' [link boost_asio.reference.async_read_at.overload3 more...]]``
@@ -1187,9 +1232,9 @@
       typename Allocator,
       typename CompletionCondition,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.async_read_at.overload4 async_read_at]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_read_at.overload4 async_read_at]``(
       AsyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b,
       CompletionCondition completion_condition,
       ReadHandler handler);
@@ -1212,9 +1257,9 @@
       typename ``[link boost_asio.reference.AsyncRandomAccessReadDevice AsyncRandomAccessReadDevice]``,
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_at(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_at(
       AsyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const MutableBufferSequence & buffers,
       ReadHandler handler);
 
@@ -1298,9 +1343,9 @@
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename CompletionCondition,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_at(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_at(
       AsyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const MutableBufferSequence & buffers,
       CompletionCondition completion_condition,
       ReadHandler handler);
@@ -1384,9 +1429,9 @@
       typename ``[link boost_asio.reference.AsyncRandomAccessReadDevice AsyncRandomAccessReadDevice]``,
       typename Allocator,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_at(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_at(
       AsyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b,
       ReadHandler handler);
 
@@ -1457,9 +1502,9 @@
       typename Allocator,
       typename CompletionCondition,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_at(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_at(
       AsyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b,
       CompletionCondition completion_condition,
       ReadHandler handler);
@@ -1530,7 +1575,7 @@
       typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
       typename Allocator,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.async_read_until.overload1 async_read_until]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_read_until.overload1 async_read_until]``(
       AsyncReadStream & s,
       boost::asio::basic_streambuf< Allocator > & b,
       char delim,
@@ -1541,7 +1586,7 @@
       typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
       typename Allocator,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.async_read_until.overload2 async_read_until]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_read_until.overload2 async_read_until]``(
       AsyncReadStream & s,
       boost::asio::basic_streambuf< Allocator > & b,
       const std::string & delim,
@@ -1552,7 +1597,7 @@
       typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
       typename Allocator,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.async_read_until.overload3 async_read_until]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_read_until.overload3 async_read_until]``(
       AsyncReadStream & s,
       boost::asio::basic_streambuf< Allocator > & b,
       const boost::regex & expr,
@@ -1564,12 +1609,12 @@
       typename Allocator,
       typename MatchCondition,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.async_read_until.overload4 async_read_until]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_read_until.overload4 async_read_until]``(
       AsyncReadStream & s,
       boost::asio::basic_streambuf< Allocator > & b,
       MatchCondition match_condition,
       ReadHandler handler,
- typename boost::enable_if< is_match_condition< MatchCondition > >::type * = 0);
+ typename enable_if< is_match_condition< MatchCondition >::value >::type * = 0);
   `` [''''&raquo;''' [link boost_asio.reference.async_read_until.overload4 more...]]``
 
 [heading Requirements]
@@ -1589,7 +1634,7 @@
       typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
       typename Allocator,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_until(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_until(
       AsyncReadStream & s,
       boost::asio::basic_streambuf< Allocator > & b,
       char delim,
@@ -1604,7 +1649,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a [*composed operation]. If the streambuf's get area already contains the delimiter, this asynchronous operation completes immediately. The program must ensure that the stream performs no other read operations (such as async\_read, async\_read\_until, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
+This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a ['composed operation]. If the streambuf's get area already contains the delimiter, this asynchronous operation completes immediately. The program must ensure that the stream performs no other read operations (such as async\_read, async\_read\_until, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
 
 
 [heading Parameters]
@@ -1694,7 +1739,7 @@
       typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
       typename Allocator,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_until(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_until(
       AsyncReadStream & s,
       boost::asio::basic_streambuf< Allocator > & b,
       const std::string & delim,
@@ -1709,7 +1754,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a [*composed operation]. If the streambuf's get area already contains the delimiter, this asynchronous operation completes immediately. The program must ensure that the stream performs no other read operations (such as async\_read, async\_read\_until, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
+This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a ['composed operation]. If the streambuf's get area already contains the delimiter, this asynchronous operation completes immediately. The program must ensure that the stream performs no other read operations (such as async\_read, async\_read\_until, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
 
 
 [heading Parameters]
@@ -1799,7 +1844,7 @@
       typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
       typename Allocator,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_until(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_until(
       AsyncReadStream & s,
       boost::asio::basic_streambuf< Allocator > & b,
       const boost::regex & expr,
@@ -1814,7 +1859,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a [*composed operation]. If the streambuf's get area already contains data that matches the regular expression, this asynchronous operation completes immediately. The program must ensure that the stream performs no other read operations (such as async\_read, async\_read\_until, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
+This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a ['composed operation]. If the streambuf's get area already contains data that matches the regular expression, this asynchronous operation completes immediately. The program must ensure that the stream performs no other read operations (such as async\_read, async\_read\_until, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
 
 
 [heading Parameters]
@@ -1906,12 +1951,12 @@
       typename Allocator,
       typename MatchCondition,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_until(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_until(
       AsyncReadStream & s,
       boost::asio::basic_streambuf< Allocator > & b,
       MatchCondition match_condition,
       ReadHandler handler,
- typename boost::enable_if< is_match_condition< MatchCondition > >::type * = 0);
+ typename enable_if< is_match_condition< MatchCondition >::value >::type * = 0);
 
 
 This function is used to asynchronously read data into the specified streambuf until a user-defined match condition function object, when applied to the data contained in the streambuf, indicates a successful match. The function call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
@@ -1922,7 +1967,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a [*composed operation]. If the match condition function object already indicates a match, this asynchronous operation completes immediately. The program must ensure that the stream performs no other read operations (such as async\_read, async\_read\_until, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
+This operation is implemented in terms of zero or more calls to the stream's async\_read\_some function, and is known as a ['composed operation]. If the match condition function object already indicates a match, this asynchronous operation completes immediately. The program must ensure that the stream performs no other read operations (such as async\_read, async\_read\_until, the stream's async\_read\_some function, or any other composed operations that perform reads) until this operation completes.
 
 
 [heading Parameters]
@@ -2034,6 +2079,109 @@
 
 [endsect]
 
+[section:async_result async_result]
+
+
+An interface for customising the behaviour of an initiating function.
+
+
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``>
+ class async_result
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.async_result.type [*type]]]
+ [The return type of the initiating function. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.async_result.async_result [*async_result]]]
+ [Construct an async result from a given handler. ]
+ ]
+
+ [
+ [[link boost_asio.reference.async_result.get [*get]]]
+ [Obtain the value to be returned from the initiating function. ]
+ ]
+
+]
+
+This template may be specialised for user-defined handler types.
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/async_result.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[section:async_result async_result::async_result]
+
+[indexterm2 async_result..async_result]
+Construct an async result from a given handler.
+
+
+ async_result(
+ Handler & );
+
+
+When using a specalised [link boost_asio.reference.async_result `async_result`], the constructor has an opportunity to initialise some state associated with the handler, which is then returned from the initiating function.
+
+
+[endsect]
+
+
+
+[section:get async_result::get]
+
+[indexterm2 get..async_result]
+Obtain the value to be returned from the initiating function.
+
+
+ type get();
+
+
+
+[endsect]
+
+
+
+[section:type async_result::type]
+
+[indexterm2 type..async_result]
+The return type of the initiating function.
+
+
+ typedef void type;
+
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/async_result.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[endsect]
+
 [section:async_write async_write]
 
 [indexterm1 async_write]
@@ -2044,7 +2192,7 @@
       typename ``[link boost_asio.reference.AsyncWriteStream AsyncWriteStream]``,
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void ``[link boost_asio.reference.async_write.overload1 async_write]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_write.overload1 async_write]``(
       AsyncWriteStream & s,
       const ConstBufferSequence & buffers,
       WriteHandler handler);
@@ -2055,7 +2203,7 @@
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename CompletionCondition,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void ``[link boost_asio.reference.async_write.overload2 async_write]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_write.overload2 async_write]``(
       AsyncWriteStream & s,
       const ConstBufferSequence & buffers,
       CompletionCondition completion_condition,
@@ -2066,7 +2214,7 @@
       typename ``[link boost_asio.reference.AsyncWriteStream AsyncWriteStream]``,
       typename Allocator,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void ``[link boost_asio.reference.async_write.overload3 async_write]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_write.overload3 async_write]``(
       AsyncWriteStream & s,
       basic_streambuf< Allocator > & b,
       WriteHandler handler);
@@ -2077,7 +2225,7 @@
       typename Allocator,
       typename CompletionCondition,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void ``[link boost_asio.reference.async_write.overload4 async_write]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_write.overload4 async_write]``(
       AsyncWriteStream & s,
       basic_streambuf< Allocator > & b,
       CompletionCondition completion_condition,
@@ -2101,7 +2249,7 @@
       typename ``[link boost_asio.reference.AsyncWriteStream AsyncWriteStream]``,
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write(
       AsyncWriteStream & s,
       const ConstBufferSequence & buffers,
       WriteHandler handler);
@@ -2115,7 +2263,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of zero or more calls to the stream's async\_write\_some function, and is known as a [*composed operation]. The program must ensure that the stream performs no other write operations (such as async\_write, the stream's async\_write\_some function, or any other composed operations that perform writes) until this operation completes.
+This operation is implemented in terms of zero or more calls to the stream's async\_write\_some function, and is known as a ['composed operation]. The program must ensure that the stream performs no other write operations (such as async\_write, the stream's async\_write\_some function, or any other composed operations that perform writes) until this operation completes.
 
 
 [heading Parameters]
@@ -2170,7 +2318,7 @@
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename CompletionCondition,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write(
       AsyncWriteStream & s,
       const ConstBufferSequence & buffers,
       CompletionCondition completion_condition,
@@ -2185,7 +2333,7 @@
 
 * The completion\_condition function object returns 0.
 
-This operation is implemented in terms of zero or more calls to the stream's async\_write\_some function, and is known as a [*composed operation]. The program must ensure that the stream performs no other write operations (such as async\_write, the stream's async\_write\_some function, or any other composed operations that perform writes) until this operation completes.
+This operation is implemented in terms of zero or more calls to the stream's async\_write\_some function, and is known as a ['composed operation]. The program must ensure that the stream performs no other write operations (such as async\_write, the stream's async\_write\_some function, or any other composed operations that perform writes) until this operation completes.
 
 
 [heading Parameters]
@@ -2254,7 +2402,7 @@
       typename ``[link boost_asio.reference.AsyncWriteStream AsyncWriteStream]``,
       typename Allocator,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write(
       AsyncWriteStream & s,
       basic_streambuf< Allocator > & b,
       WriteHandler handler);
@@ -2268,7 +2416,7 @@
 
 * An error occurred.
 
-This operation is implemented in terms of zero or more calls to the stream's async\_write\_some function, and is known as a [*composed operation]. The program must ensure that the stream performs no other write operations (such as async\_write, the stream's async\_write\_some function, or any other composed operations that perform writes) until this operation completes.
+This operation is implemented in terms of zero or more calls to the stream's async\_write\_some function, and is known as a ['composed operation]. The program must ensure that the stream performs no other write operations (such as async\_write, the stream's async\_write\_some function, or any other composed operations that perform writes) until this operation completes.
 
 
 [heading Parameters]
@@ -2313,7 +2461,7 @@
       typename Allocator,
       typename CompletionCondition,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write(
       AsyncWriteStream & s,
       basic_streambuf< Allocator > & b,
       CompletionCondition completion_condition,
@@ -2328,7 +2476,7 @@
 
 * The completion\_condition function object returns 0.
 
-This operation is implemented in terms of zero or more calls to the stream's async\_write\_some function, and is known as a [*composed operation]. The program must ensure that the stream performs no other write operations (such as async\_write, the stream's async\_write\_some function, or any other composed operations that perform writes) until this operation completes.
+This operation is implemented in terms of zero or more calls to the stream's async\_write\_some function, and is known as a ['composed operation]. The program must ensure that the stream performs no other write operations (such as async\_write, the stream's async\_write\_some function, or any other composed operations that perform writes) until this operation completes.
 
 
 [heading Parameters]
@@ -2385,9 +2533,9 @@
       typename ``[link boost_asio.reference.AsyncRandomAccessWriteDevice AsyncRandomAccessWriteDevice]``,
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void ``[link boost_asio.reference.async_write_at.overload1 async_write_at]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_write_at.overload1 async_write_at]``(
       AsyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const ConstBufferSequence & buffers,
       WriteHandler handler);
   `` [''''&raquo;''' [link boost_asio.reference.async_write_at.overload1 more...]]``
@@ -2397,9 +2545,9 @@
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename CompletionCondition,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void ``[link boost_asio.reference.async_write_at.overload2 async_write_at]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_write_at.overload2 async_write_at]``(
       AsyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const ConstBufferSequence & buffers,
       CompletionCondition completion_condition,
       WriteHandler handler);
@@ -2409,9 +2557,9 @@
       typename ``[link boost_asio.reference.AsyncRandomAccessWriteDevice AsyncRandomAccessWriteDevice]``,
       typename Allocator,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void ``[link boost_asio.reference.async_write_at.overload3 async_write_at]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_write_at.overload3 async_write_at]``(
       AsyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b,
       WriteHandler handler);
   `` [''''&raquo;''' [link boost_asio.reference.async_write_at.overload3 more...]]``
@@ -2421,9 +2569,9 @@
       typename Allocator,
       typename CompletionCondition,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void ``[link boost_asio.reference.async_write_at.overload4 async_write_at]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.async_write_at.overload4 async_write_at]``(
       AsyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b,
       CompletionCondition completion_condition,
       WriteHandler handler);
@@ -2446,9 +2594,9 @@
       typename ``[link boost_asio.reference.AsyncRandomAccessWriteDevice AsyncRandomAccessWriteDevice]``,
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write_at(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_at(
       AsyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const ConstBufferSequence & buffers,
       WriteHandler handler);
 
@@ -2518,9 +2666,9 @@
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename CompletionCondition,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write_at(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_at(
       AsyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const ConstBufferSequence & buffers,
       CompletionCondition completion_condition,
       WriteHandler handler);
@@ -2605,9 +2753,9 @@
       typename ``[link boost_asio.reference.AsyncRandomAccessWriteDevice AsyncRandomAccessWriteDevice]``,
       typename Allocator,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write_at(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_at(
       AsyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b,
       WriteHandler handler);
 
@@ -2667,9 +2815,9 @@
       typename Allocator,
       typename CompletionCondition,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write_at(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_at(
       AsyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b,
       CompletionCondition completion_condition,
       WriteHandler handler);
@@ -2959,7 +3107,9 @@
 
      Construct a basic_datagram_socket on an existing native socket.
 
- Move-construct a basic_datagram_socket from another. ]
+ Move-construct a basic_datagram_socket from another.
+
+ Move-construct a basic_datagram_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -3045,7 +3195,9 @@
   
   [
     [[link boost_asio.reference.basic_datagram_socket.operator_eq_ [*operator=]]]
- [Move-assign a basic_datagram_socket from another. ]
+ [Move-assign a basic_datagram_socket from another.
+
+ Move-assign a basic_datagram_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -3153,9 +3305,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -3235,7 +3387,7 @@
 
   template<
       typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
- void async_connect(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
       const endpoint_type & peer_endpoint,
       ConnectHandler handler);
 
@@ -3300,7 +3452,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.basic_datagram_socket.async_receive.overload1 async_receive]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_datagram_socket.async_receive.overload1 async_receive]``(
       const MutableBufferSequence & buffers,
       ReadHandler handler);
   `` [''''&raquo;''' [link boost_asio.reference.basic_datagram_socket.async_receive.overload1 more...]]``
@@ -3308,7 +3460,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.basic_datagram_socket.async_receive.overload2 async_receive]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_datagram_socket.async_receive.overload2 async_receive]``(
       const MutableBufferSequence & buffers,
       socket_base::message_flags flags,
       ReadHandler handler);
@@ -3324,7 +3476,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive(
       const MutableBufferSequence & buffers,
       ReadHandler handler);
 
@@ -3381,7 +3533,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive(
       const MutableBufferSequence & buffers,
       socket_base::message_flags flags,
       ReadHandler handler);
@@ -3432,7 +3584,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.basic_datagram_socket.async_receive_from.overload1 async_receive_from]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_datagram_socket.async_receive_from.overload1 async_receive_from]``(
       const MutableBufferSequence & buffers,
       endpoint_type & sender_endpoint,
       ReadHandler handler);
@@ -3441,7 +3593,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.basic_datagram_socket.async_receive_from.overload2 async_receive_from]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_datagram_socket.async_receive_from.overload2 async_receive_from]``(
       const MutableBufferSequence & buffers,
       endpoint_type & sender_endpoint,
       socket_base::message_flags flags,
@@ -3458,7 +3610,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive_from(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive_from(
       const MutableBufferSequence & buffers,
       endpoint_type & sender_endpoint,
       ReadHandler handler);
@@ -3514,7 +3666,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive_from(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive_from(
       const MutableBufferSequence & buffers,
       endpoint_type & sender_endpoint,
       socket_base::message_flags flags,
@@ -3563,7 +3715,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void ``[link boost_asio.reference.basic_datagram_socket.async_send.overload1 async_send]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_datagram_socket.async_send.overload1 async_send]``(
       const ConstBufferSequence & buffers,
       WriteHandler handler);
   `` [''''&raquo;''' [link boost_asio.reference.basic_datagram_socket.async_send.overload1 more...]]``
@@ -3571,7 +3723,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void ``[link boost_asio.reference.basic_datagram_socket.async_send.overload2 async_send]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_datagram_socket.async_send.overload2 async_send]``(
       const ConstBufferSequence & buffers,
       socket_base::message_flags flags,
       WriteHandler handler);
@@ -3587,7 +3739,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send(
       const ConstBufferSequence & buffers,
       WriteHandler handler);
 
@@ -3644,7 +3796,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send(
       const ConstBufferSequence & buffers,
       socket_base::message_flags flags,
       WriteHandler handler);
@@ -3695,7 +3847,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void ``[link boost_asio.reference.basic_datagram_socket.async_send_to.overload1 async_send_to]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_datagram_socket.async_send_to.overload1 async_send_to]``(
       const ConstBufferSequence & buffers,
       const endpoint_type & destination,
       WriteHandler handler);
@@ -3704,7 +3856,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void ``[link boost_asio.reference.basic_datagram_socket.async_send_to.overload2 async_send_to]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_datagram_socket.async_send_to.overload2 async_send_to]``(
       const ConstBufferSequence & buffers,
       const endpoint_type & destination,
       socket_base::message_flags flags,
@@ -3721,7 +3873,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send_to(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send_to(
       const ConstBufferSequence & buffers,
       const endpoint_type & destination,
       WriteHandler handler);
@@ -3779,7 +3931,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send_to(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send_to(
       const ConstBufferSequence & buffers,
       const endpoint_type & destination,
       socket_base::message_flags flags,
@@ -4042,7 +4194,19 @@
   `` [''''&raquo;''' [link boost_asio.reference.basic_datagram_socket.basic_datagram_socket.overload5 more...]]``
 
 
-[section:overload1 basic_datagram_socket::basic_datagram_socket (1 of 5 overloads)]
+Move-construct a [link boost_asio.reference.basic_datagram_socket `basic_datagram_socket`] from a socket of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.DatagramSocketService DatagramSocketService1]``>
+ ``[link boost_asio.reference.basic_datagram_socket.basic_datagram_socket.overload6 basic_datagram_socket]``(
+ basic_datagram_socket< Protocol1, DatagramSocketService1 > && other,
+ typename enable_if< is_convertible< Protocol1, Protocol >::value >::type * = 0);
+ `` [''''&raquo;''' [link boost_asio.reference.basic_datagram_socket.basic_datagram_socket.overload6 more...]]``
+
+
+[section:overload1 basic_datagram_socket::basic_datagram_socket (1 of 6 overloads)]
 
 
 Construct a [link boost_asio.reference.basic_datagram_socket `basic_datagram_socket`] without opening it.
@@ -4071,7 +4235,7 @@
 
 
 
-[section:overload2 basic_datagram_socket::basic_datagram_socket (2 of 5 overloads)]
+[section:overload2 basic_datagram_socket::basic_datagram_socket (2 of 6 overloads)]
 
 
 Construct and open a [link boost_asio.reference.basic_datagram_socket `basic_datagram_socket`].
@@ -4113,7 +4277,7 @@
 
 
 
-[section:overload3 basic_datagram_socket::basic_datagram_socket (3 of 5 overloads)]
+[section:overload3 basic_datagram_socket::basic_datagram_socket (3 of 6 overloads)]
 
 
 Construct a [link boost_asio.reference.basic_datagram_socket `basic_datagram_socket`], opening it and binding it to the given local endpoint.
@@ -4155,7 +4319,7 @@
 
 
 
-[section:overload4 basic_datagram_socket::basic_datagram_socket (4 of 5 overloads)]
+[section:overload4 basic_datagram_socket::basic_datagram_socket (4 of 6 overloads)]
 
 
 Construct a [link boost_asio.reference.basic_datagram_socket `basic_datagram_socket`] on an existing native socket.
@@ -4200,7 +4364,7 @@
 
 
 
-[section:overload5 basic_datagram_socket::basic_datagram_socket (5 of 5 overloads)]
+[section:overload5 basic_datagram_socket::basic_datagram_socket (5 of 6 overloads)]
 
 
 Move-construct a [link boost_asio.reference.basic_datagram_socket `basic_datagram_socket`] from another.
@@ -4233,6 +4397,44 @@
 [endsect]
 
 
+
+[section:overload6 basic_datagram_socket::basic_datagram_socket (6 of 6 overloads)]
+
+
+Move-construct a [link boost_asio.reference.basic_datagram_socket `basic_datagram_socket`] from a socket of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.DatagramSocketService DatagramSocketService1]``>
+ basic_datagram_socket(
+ basic_datagram_socket< Protocol1, DatagramSocketService1 > && other,
+ typename enable_if< is_convertible< Protocol1, Protocol >::value >::type * = 0);
+
+
+This constructor moves a datagram socket from one object to another.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[other][The other [link boost_asio.reference.basic_datagram_socket `basic_datagram_socket`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+
+Following the move, the moved-from object is in the same state as if constructed using the `basic_datagram_socket(io_service&) constructor`.
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 [section:bind basic_datagram_socket::bind]
@@ -5939,7 +6141,9 @@
 
      Construct a basic_socket on an existing native socket.
 
- Move-construct a basic_socket from another. ]
+ Move-construct a basic_socket from another.
+
+ Move-construct a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -6025,7 +6229,9 @@
   
   [
     [[link boost_asio.reference.basic_socket.operator_eq_ [*operator=]]]
- [Move-assign a basic_socket from another. ]
+ [Move-assign a basic_socket from another.
+
+ Move-assign a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -6118,9 +6324,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -6974,13 +7180,34 @@
 
 [endsect]
 
-
 [section:operator_eq_ basic_datagram_socket::operator=]
 
 [indexterm2 operator=..basic_datagram_socket]
 Move-assign a [link boost_asio.reference.basic_datagram_socket `basic_datagram_socket`] from another.
 
 
+ basic_datagram_socket & ``[link boost_asio.reference.basic_datagram_socket.operator_eq_.overload1 operator=]``(
+ basic_datagram_socket && other);
+ `` [''''&raquo;''' [link boost_asio.reference.basic_datagram_socket.operator_eq_.overload1 more...]]``
+
+
+Move-assign a [link boost_asio.reference.basic_datagram_socket `basic_datagram_socket`] from a socket of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.DatagramSocketService DatagramSocketService1]``>
+ enable_if< is_convertible< Protocol1, Protocol >::value, basic_datagram_socket >::type & ``[link boost_asio.reference.basic_datagram_socket.operator_eq_.overload2 operator=]``(
+ basic_datagram_socket< Protocol1, DatagramSocketService1 > && other);
+ `` [''''&raquo;''' [link boost_asio.reference.basic_datagram_socket.operator_eq_.overload2 more...]]``
+
+
+[section:overload1 basic_datagram_socket::operator= (1 of 2 overloads)]
+
+
+Move-assign a [link boost_asio.reference.basic_datagram_socket `basic_datagram_socket`] from another.
+
+
   basic_datagram_socket & operator=(
       basic_datagram_socket && other);
 
@@ -7009,6 +7236,45 @@
 
 
 
+[section:overload2 basic_datagram_socket::operator= (2 of 2 overloads)]
+
+
+Move-assign a [link boost_asio.reference.basic_datagram_socket `basic_datagram_socket`] from a socket of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.DatagramSocketService DatagramSocketService1]``>
+ enable_if< is_convertible< Protocol1, Protocol >::value, basic_datagram_socket >::type & operator=(
+ basic_datagram_socket< Protocol1, DatagramSocketService1 > && other);
+
+
+This assignment operator moves a datagram socket from one object to another.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[other][The other [link boost_asio.reference.basic_datagram_socket `basic_datagram_socket`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+
+Following the move, the moved-from object is in the same state as if constructed using the `basic_datagram_socket(io_service&) constructor`.
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:protocol_type basic_datagram_socket::protocol_type]
 
 [indexterm2 protocol_type..basic_datagram_socket]
@@ -8674,9 +8940,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Examples]
@@ -8774,7 +9040,7 @@
 
   template<
       typename ``[link boost_asio.reference.WaitHandler WaitHandler]``>
- void async_wait(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_wait(
       WaitHandler handler);
 
 
@@ -10425,7 +10691,9 @@
 
      Construct a basic_raw_socket on an existing native socket.
 
- Move-construct a basic_raw_socket from another. ]
+ Move-construct a basic_raw_socket from another.
+
+ Move-construct a basic_raw_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -10511,7 +10779,9 @@
   
   [
     [[link boost_asio.reference.basic_raw_socket.operator_eq_ [*operator=]]]
- [Move-assign a basic_raw_socket from another. ]
+ [Move-assign a basic_raw_socket from another.
+
+ Move-assign a basic_raw_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -10619,9 +10889,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -10701,7 +10971,7 @@
 
   template<
       typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
- void async_connect(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
       const endpoint_type & peer_endpoint,
       ConnectHandler handler);
 
@@ -10766,7 +11036,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.basic_raw_socket.async_receive.overload1 async_receive]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_raw_socket.async_receive.overload1 async_receive]``(
       const MutableBufferSequence & buffers,
       ReadHandler handler);
   `` [''''&raquo;''' [link boost_asio.reference.basic_raw_socket.async_receive.overload1 more...]]``
@@ -10774,7 +11044,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.basic_raw_socket.async_receive.overload2 async_receive]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_raw_socket.async_receive.overload2 async_receive]``(
       const MutableBufferSequence & buffers,
       socket_base::message_flags flags,
       ReadHandler handler);
@@ -10790,7 +11060,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive(
       const MutableBufferSequence & buffers,
       ReadHandler handler);
 
@@ -10847,7 +11117,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive(
       const MutableBufferSequence & buffers,
       socket_base::message_flags flags,
       ReadHandler handler);
@@ -10898,7 +11168,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.basic_raw_socket.async_receive_from.overload1 async_receive_from]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_raw_socket.async_receive_from.overload1 async_receive_from]``(
       const MutableBufferSequence & buffers,
       endpoint_type & sender_endpoint,
       ReadHandler handler);
@@ -10907,7 +11177,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.basic_raw_socket.async_receive_from.overload2 async_receive_from]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_raw_socket.async_receive_from.overload2 async_receive_from]``(
       const MutableBufferSequence & buffers,
       endpoint_type & sender_endpoint,
       socket_base::message_flags flags,
@@ -10924,7 +11194,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive_from(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive_from(
       const MutableBufferSequence & buffers,
       endpoint_type & sender_endpoint,
       ReadHandler handler);
@@ -10980,7 +11250,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive_from(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive_from(
       const MutableBufferSequence & buffers,
       endpoint_type & sender_endpoint,
       socket_base::message_flags flags,
@@ -11029,7 +11299,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void ``[link boost_asio.reference.basic_raw_socket.async_send.overload1 async_send]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_raw_socket.async_send.overload1 async_send]``(
       const ConstBufferSequence & buffers,
       WriteHandler handler);
   `` [''''&raquo;''' [link boost_asio.reference.basic_raw_socket.async_send.overload1 more...]]``
@@ -11037,7 +11307,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void ``[link boost_asio.reference.basic_raw_socket.async_send.overload2 async_send]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_raw_socket.async_send.overload2 async_send]``(
       const ConstBufferSequence & buffers,
       socket_base::message_flags flags,
       WriteHandler handler);
@@ -11053,7 +11323,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send(
       const ConstBufferSequence & buffers,
       WriteHandler handler);
 
@@ -11110,7 +11380,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send(
       const ConstBufferSequence & buffers,
       socket_base::message_flags flags,
       WriteHandler handler);
@@ -11161,7 +11431,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void ``[link boost_asio.reference.basic_raw_socket.async_send_to.overload1 async_send_to]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_raw_socket.async_send_to.overload1 async_send_to]``(
       const ConstBufferSequence & buffers,
       const endpoint_type & destination,
       WriteHandler handler);
@@ -11170,7 +11440,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void ``[link boost_asio.reference.basic_raw_socket.async_send_to.overload2 async_send_to]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_raw_socket.async_send_to.overload2 async_send_to]``(
       const ConstBufferSequence & buffers,
       const endpoint_type & destination,
       socket_base::message_flags flags,
@@ -11187,7 +11457,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send_to(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send_to(
       const ConstBufferSequence & buffers,
       const endpoint_type & destination,
       WriteHandler handler);
@@ -11245,7 +11515,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send_to(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send_to(
       const ConstBufferSequence & buffers,
       const endpoint_type & destination,
       socket_base::message_flags flags,
@@ -11508,7 +11778,19 @@
   `` [''''&raquo;''' [link boost_asio.reference.basic_raw_socket.basic_raw_socket.overload5 more...]]``
 
 
-[section:overload1 basic_raw_socket::basic_raw_socket (1 of 5 overloads)]
+Move-construct a [link boost_asio.reference.basic_raw_socket `basic_raw_socket`] from a socket of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.RawSocketService RawSocketService1]``>
+ ``[link boost_asio.reference.basic_raw_socket.basic_raw_socket.overload6 basic_raw_socket]``(
+ basic_raw_socket< Protocol1, RawSocketService1 > && other,
+ typename enable_if< is_convertible< Protocol1, Protocol >::value >::type * = 0);
+ `` [''''&raquo;''' [link boost_asio.reference.basic_raw_socket.basic_raw_socket.overload6 more...]]``
+
+
+[section:overload1 basic_raw_socket::basic_raw_socket (1 of 6 overloads)]
 
 
 Construct a [link boost_asio.reference.basic_raw_socket `basic_raw_socket`] without opening it.
@@ -11537,7 +11819,7 @@
 
 
 
-[section:overload2 basic_raw_socket::basic_raw_socket (2 of 5 overloads)]
+[section:overload2 basic_raw_socket::basic_raw_socket (2 of 6 overloads)]
 
 
 Construct and open a [link boost_asio.reference.basic_raw_socket `basic_raw_socket`].
@@ -11579,7 +11861,7 @@
 
 
 
-[section:overload3 basic_raw_socket::basic_raw_socket (3 of 5 overloads)]
+[section:overload3 basic_raw_socket::basic_raw_socket (3 of 6 overloads)]
 
 
 Construct a [link boost_asio.reference.basic_raw_socket `basic_raw_socket`], opening it and binding it to the given local endpoint.
@@ -11621,7 +11903,7 @@
 
 
 
-[section:overload4 basic_raw_socket::basic_raw_socket (4 of 5 overloads)]
+[section:overload4 basic_raw_socket::basic_raw_socket (4 of 6 overloads)]
 
 
 Construct a [link boost_asio.reference.basic_raw_socket `basic_raw_socket`] on an existing native socket.
@@ -11666,7 +11948,7 @@
 
 
 
-[section:overload5 basic_raw_socket::basic_raw_socket (5 of 5 overloads)]
+[section:overload5 basic_raw_socket::basic_raw_socket (5 of 6 overloads)]
 
 
 Move-construct a [link boost_asio.reference.basic_raw_socket `basic_raw_socket`] from another.
@@ -11699,6 +11981,44 @@
 [endsect]
 
 
+
+[section:overload6 basic_raw_socket::basic_raw_socket (6 of 6 overloads)]
+
+
+Move-construct a [link boost_asio.reference.basic_raw_socket `basic_raw_socket`] from a socket of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.RawSocketService RawSocketService1]``>
+ basic_raw_socket(
+ basic_raw_socket< Protocol1, RawSocketService1 > && other,
+ typename enable_if< is_convertible< Protocol1, Protocol >::value >::type * = 0);
+
+
+This constructor moves a raw socket from one object to another.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[other][The other [link boost_asio.reference.basic_raw_socket `basic_raw_socket`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+
+Following the move, the moved-from object is in the same state as if constructed using the `basic_raw_socket(io_service&) constructor`.
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 [section:bind basic_raw_socket::bind]
@@ -13405,7 +13725,9 @@
 
      Construct a basic_socket on an existing native socket.
 
- Move-construct a basic_socket from another. ]
+ Move-construct a basic_socket from another.
+
+ Move-construct a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -13491,7 +13813,9 @@
   
   [
     [[link boost_asio.reference.basic_socket.operator_eq_ [*operator=]]]
- [Move-assign a basic_socket from another. ]
+ [Move-assign a basic_socket from another.
+
+ Move-assign a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -13584,9 +13908,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -14440,13 +14764,34 @@
 
 [endsect]
 
-
 [section:operator_eq_ basic_raw_socket::operator=]
 
 [indexterm2 operator=..basic_raw_socket]
 Move-assign a [link boost_asio.reference.basic_raw_socket `basic_raw_socket`] from another.
 
 
+ basic_raw_socket & ``[link boost_asio.reference.basic_raw_socket.operator_eq_.overload1 operator=]``(
+ basic_raw_socket && other);
+ `` [''''&raquo;''' [link boost_asio.reference.basic_raw_socket.operator_eq_.overload1 more...]]``
+
+
+Move-assign a [link boost_asio.reference.basic_raw_socket `basic_raw_socket`] from a socket of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.RawSocketService RawSocketService1]``>
+ enable_if< is_convertible< Protocol1, Protocol >::value, basic_raw_socket >::type & ``[link boost_asio.reference.basic_raw_socket.operator_eq_.overload2 operator=]``(
+ basic_raw_socket< Protocol1, RawSocketService1 > && other);
+ `` [''''&raquo;''' [link boost_asio.reference.basic_raw_socket.operator_eq_.overload2 more...]]``
+
+
+[section:overload1 basic_raw_socket::operator= (1 of 2 overloads)]
+
+
+Move-assign a [link boost_asio.reference.basic_raw_socket `basic_raw_socket`] from another.
+
+
   basic_raw_socket & operator=(
       basic_raw_socket && other);
 
@@ -14475,6 +14820,45 @@
 
 
 
+[section:overload2 basic_raw_socket::operator= (2 of 2 overloads)]
+
+
+Move-assign a [link boost_asio.reference.basic_raw_socket `basic_raw_socket`] from a socket of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.RawSocketService RawSocketService1]``>
+ enable_if< is_convertible< Protocol1, Protocol >::value, basic_raw_socket >::type & operator=(
+ basic_raw_socket< Protocol1, RawSocketService1 > && other);
+
+
+This assignment operator moves a raw socket from one object to another.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[other][The other [link boost_asio.reference.basic_raw_socket `basic_raw_socket`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+
+Following the move, the moved-from object is in the same state as if constructed using the `basic_raw_socket(io_service&) constructor`.
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:protocol_type basic_raw_socket::protocol_type]
 
 [indexterm2 protocol_type..basic_raw_socket]
@@ -16207,7 +16591,9 @@
 
      Construct a basic_seq_packet_socket on an existing native socket.
 
- Move-construct a basic_seq_packet_socket from another. ]
+ Move-construct a basic_seq_packet_socket from another.
+
+ Move-construct a basic_seq_packet_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -16293,7 +16679,9 @@
   
   [
     [[link boost_asio.reference.basic_seq_packet_socket.operator_eq_ [*operator=]]]
- [Move-assign a basic_seq_packet_socket from another. ]
+ [Move-assign a basic_seq_packet_socket from another.
+
+ Move-assign a basic_seq_packet_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -16393,9 +16781,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -16475,7 +16863,7 @@
 
   template<
       typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
- void async_connect(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
       const endpoint_type & peer_endpoint,
       ConnectHandler handler);
 
@@ -16540,7 +16928,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.basic_seq_packet_socket.async_receive.overload1 async_receive]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_seq_packet_socket.async_receive.overload1 async_receive]``(
       const MutableBufferSequence & buffers,
       socket_base::message_flags & out_flags,
       ReadHandler handler);
@@ -16549,7 +16937,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.basic_seq_packet_socket.async_receive.overload2 async_receive]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_seq_packet_socket.async_receive.overload2 async_receive]``(
       const MutableBufferSequence & buffers,
       socket_base::message_flags in_flags,
       socket_base::message_flags & out_flags,
@@ -16566,7 +16954,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive(
       const MutableBufferSequence & buffers,
       socket_base::message_flags & out_flags,
       ReadHandler handler);
@@ -16621,7 +17009,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive(
       const MutableBufferSequence & buffers,
       socket_base::message_flags in_flags,
       socket_base::message_flags & out_flags,
@@ -16683,7 +17071,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send(
       const ConstBufferSequence & buffers,
       socket_base::message_flags flags,
       WriteHandler handler);
@@ -16951,7 +17339,19 @@
   `` [''''&raquo;''' [link boost_asio.reference.basic_seq_packet_socket.basic_seq_packet_socket.overload5 more...]]``
 
 
-[section:overload1 basic_seq_packet_socket::basic_seq_packet_socket (1 of 5 overloads)]
+Move-construct a [link boost_asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] from a socket of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.SeqPacketSocketService SeqPacketSocketService1]``>
+ ``[link boost_asio.reference.basic_seq_packet_socket.basic_seq_packet_socket.overload6 basic_seq_packet_socket]``(
+ basic_seq_packet_socket< Protocol1, SeqPacketSocketService1 > && other,
+ typename enable_if< is_convertible< Protocol1, Protocol >::value >::type * = 0);
+ `` [''''&raquo;''' [link boost_asio.reference.basic_seq_packet_socket.basic_seq_packet_socket.overload6 more...]]``
+
+
+[section:overload1 basic_seq_packet_socket::basic_seq_packet_socket (1 of 6 overloads)]
 
 
 Construct a [link boost_asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] without opening it.
@@ -16980,7 +17380,7 @@
 
 
 
-[section:overload2 basic_seq_packet_socket::basic_seq_packet_socket (2 of 5 overloads)]
+[section:overload2 basic_seq_packet_socket::basic_seq_packet_socket (2 of 6 overloads)]
 
 
 Construct and open a [link boost_asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`].
@@ -17022,7 +17422,7 @@
 
 
 
-[section:overload3 basic_seq_packet_socket::basic_seq_packet_socket (3 of 5 overloads)]
+[section:overload3 basic_seq_packet_socket::basic_seq_packet_socket (3 of 6 overloads)]
 
 
 Construct a [link boost_asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`], opening it and binding it to the given local endpoint.
@@ -17064,7 +17464,7 @@
 
 
 
-[section:overload4 basic_seq_packet_socket::basic_seq_packet_socket (4 of 5 overloads)]
+[section:overload4 basic_seq_packet_socket::basic_seq_packet_socket (4 of 6 overloads)]
 
 
 Construct a [link boost_asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] on an existing native socket.
@@ -17109,7 +17509,7 @@
 
 
 
-[section:overload5 basic_seq_packet_socket::basic_seq_packet_socket (5 of 5 overloads)]
+[section:overload5 basic_seq_packet_socket::basic_seq_packet_socket (5 of 6 overloads)]
 
 
 Move-construct a [link boost_asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] from another.
@@ -17142,6 +17542,44 @@
 [endsect]
 
 
+
+[section:overload6 basic_seq_packet_socket::basic_seq_packet_socket (6 of 6 overloads)]
+
+
+Move-construct a [link boost_asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] from a socket of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.SeqPacketSocketService SeqPacketSocketService1]``>
+ basic_seq_packet_socket(
+ basic_seq_packet_socket< Protocol1, SeqPacketSocketService1 > && other,
+ typename enable_if< is_convertible< Protocol1, Protocol >::value >::type * = 0);
+
+
+This constructor moves a sequenced packet socket from one object to another.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[other][The other [link boost_asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+
+Following the move, the moved-from object is in the same state as if constructed using the `basic_seq_packet_socket(io_service&) constructor`.
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 [section:bind basic_seq_packet_socket::bind]
@@ -18848,7 +19286,9 @@
 
      Construct a basic_socket on an existing native socket.
 
- Move-construct a basic_socket from another. ]
+ Move-construct a basic_socket from another.
+
+ Move-construct a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -18934,7 +19374,9 @@
   
   [
     [[link boost_asio.reference.basic_socket.operator_eq_ [*operator=]]]
- [Move-assign a basic_socket from another. ]
+ [Move-assign a basic_socket from another.
+
+ Move-assign a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -19027,9 +19469,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -19883,13 +20325,34 @@
 
 [endsect]
 
-
 [section:operator_eq_ basic_seq_packet_socket::operator=]
 
 [indexterm2 operator=..basic_seq_packet_socket]
 Move-assign a [link boost_asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] from another.
 
 
+ basic_seq_packet_socket & ``[link boost_asio.reference.basic_seq_packet_socket.operator_eq_.overload1 operator=]``(
+ basic_seq_packet_socket && other);
+ `` [''''&raquo;''' [link boost_asio.reference.basic_seq_packet_socket.operator_eq_.overload1 more...]]``
+
+
+Move-assign a [link boost_asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] from a socket of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.SeqPacketSocketService SeqPacketSocketService1]``>
+ enable_if< is_convertible< Protocol1, Protocol >::value, basic_seq_packet_socket >::type & ``[link boost_asio.reference.basic_seq_packet_socket.operator_eq_.overload2 operator=]``(
+ basic_seq_packet_socket< Protocol1, SeqPacketSocketService1 > && other);
+ `` [''''&raquo;''' [link boost_asio.reference.basic_seq_packet_socket.operator_eq_.overload2 more...]]``
+
+
+[section:overload1 basic_seq_packet_socket::operator= (1 of 2 overloads)]
+
+
+Move-assign a [link boost_asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] from another.
+
+
   basic_seq_packet_socket & operator=(
       basic_seq_packet_socket && other);
 
@@ -19918,6 +20381,45 @@
 
 
 
+[section:overload2 basic_seq_packet_socket::operator= (2 of 2 overloads)]
+
+
+Move-assign a [link boost_asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] from a socket of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.SeqPacketSocketService SeqPacketSocketService1]``>
+ enable_if< is_convertible< Protocol1, Protocol >::value, basic_seq_packet_socket >::type & operator=(
+ basic_seq_packet_socket< Protocol1, SeqPacketSocketService1 > && other);
+
+
+This assignment operator moves a sequenced packet socket from one object to another.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[other][The other [link boost_asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+
+Following the move, the moved-from object is in the same state as if constructed using the `basic_seq_packet_socket(io_service&) constructor`.
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:protocol_type basic_seq_packet_socket::protocol_type]
 
 [indexterm2 protocol_type..basic_seq_packet_socket]
@@ -21207,9 +21709,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -21277,7 +21779,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_some(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_some(
       const MutableBufferSequence & buffers,
       ReadHandler handler);
 
@@ -21334,7 +21836,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write_some(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_some(
       const ConstBufferSequence & buffers,
       WriteHandler handler);
 
@@ -22268,9 +22770,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -23072,9 +23574,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Example]
@@ -23230,7 +23732,7 @@
 
   template<
       typename ``[link boost_asio.reference.SignalHandler SignalHandler]``>
- void async_wait(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_wait(
       SignalHandler handler);
 
 
@@ -24179,7 +24681,9 @@
 
      Construct a basic_socket on an existing native socket.
 
- Move-construct a basic_socket from another. ]
+ Move-construct a basic_socket from another.
+
+ Move-construct a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -24265,7 +24769,9 @@
   
   [
     [[link boost_asio.reference.basic_socket.operator_eq_ [*operator=]]]
- [Move-assign a basic_socket from another. ]
+ [Move-assign a basic_socket from another.
+
+ Move-assign a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -24358,9 +24864,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -24431,7 +24937,7 @@
 
   template<
       typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
- void async_connect(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
       const endpoint_type & peer_endpoint,
       ConnectHandler handler);
 
@@ -24698,7 +25204,19 @@
   `` [''''&raquo;''' [link boost_asio.reference.basic_socket.basic_socket.overload5 more...]]``
 
 
-[section:overload1 basic_socket::basic_socket (1 of 5 overloads)]
+Move-construct a [link boost_asio.reference.basic_socket `basic_socket`] from a socket of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.SocketService SocketService1]``>
+ ``[link boost_asio.reference.basic_socket.basic_socket.overload6 basic_socket]``(
+ basic_socket< Protocol1, SocketService1 > && other,
+ typename enable_if< is_convertible< Protocol1, Protocol >::value >::type * = 0);
+ `` [''''&raquo;''' [link boost_asio.reference.basic_socket.basic_socket.overload6 more...]]``
+
+
+[section:overload1 basic_socket::basic_socket (1 of 6 overloads)]
 
 
 Construct a [link boost_asio.reference.basic_socket `basic_socket`] without opening it.
@@ -24727,7 +25245,7 @@
 
 
 
-[section:overload2 basic_socket::basic_socket (2 of 5 overloads)]
+[section:overload2 basic_socket::basic_socket (2 of 6 overloads)]
 
 
 Construct and open a [link boost_asio.reference.basic_socket `basic_socket`].
@@ -24769,7 +25287,7 @@
 
 
 
-[section:overload3 basic_socket::basic_socket (3 of 5 overloads)]
+[section:overload3 basic_socket::basic_socket (3 of 6 overloads)]
 
 
 Construct a [link boost_asio.reference.basic_socket `basic_socket`], opening it and binding it to the given local endpoint.
@@ -24811,7 +25329,7 @@
 
 
 
-[section:overload4 basic_socket::basic_socket (4 of 5 overloads)]
+[section:overload4 basic_socket::basic_socket (4 of 6 overloads)]
 
 
 Construct a [link boost_asio.reference.basic_socket `basic_socket`] on an existing native socket.
@@ -24856,7 +25374,7 @@
 
 
 
-[section:overload5 basic_socket::basic_socket (5 of 5 overloads)]
+[section:overload5 basic_socket::basic_socket (5 of 6 overloads)]
 
 
 Move-construct a [link boost_asio.reference.basic_socket `basic_socket`] from another.
@@ -24889,6 +25407,44 @@
 [endsect]
 
 
+
+[section:overload6 basic_socket::basic_socket (6 of 6 overloads)]
+
+
+Move-construct a [link boost_asio.reference.basic_socket `basic_socket`] from a socket of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.SocketService SocketService1]``>
+ basic_socket(
+ basic_socket< Protocol1, SocketService1 > && other,
+ typename enable_if< is_convertible< Protocol1, Protocol >::value >::type * = 0);
+
+
+This constructor moves a socket from one object to another.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[other][The other [link boost_asio.reference.basic_socket `basic_socket`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+
+Following the move, the moved-from object is in the same state as if constructed using the `basic_socket(io_service&) constructor`.
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 [section:bind basic_socket::bind]
@@ -26549,7 +27105,9 @@
 
      Construct a basic_socket on an existing native socket.
 
- Move-construct a basic_socket from another. ]
+ Move-construct a basic_socket from another.
+
+ Move-construct a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -26635,7 +27193,9 @@
   
   [
     [[link boost_asio.reference.basic_socket.operator_eq_ [*operator=]]]
- [Move-assign a basic_socket from another. ]
+ [Move-assign a basic_socket from another.
+
+ Move-assign a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -26728,9 +27288,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -27554,13 +28114,34 @@
 
 [endsect]
 
-
 [section:operator_eq_ basic_socket::operator=]
 
 [indexterm2 operator=..basic_socket]
 Move-assign a [link boost_asio.reference.basic_socket `basic_socket`] from another.
 
 
+ basic_socket & ``[link boost_asio.reference.basic_socket.operator_eq_.overload1 operator=]``(
+ basic_socket && other);
+ `` [''''&raquo;''' [link boost_asio.reference.basic_socket.operator_eq_.overload1 more...]]``
+
+
+Move-assign a [link boost_asio.reference.basic_socket `basic_socket`] from a socket of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.SocketService SocketService1]``>
+ enable_if< is_convertible< Protocol1, Protocol >::value, basic_socket >::type & ``[link boost_asio.reference.basic_socket.operator_eq_.overload2 operator=]``(
+ basic_socket< Protocol1, SocketService1 > && other);
+ `` [''''&raquo;''' [link boost_asio.reference.basic_socket.operator_eq_.overload2 more...]]``
+
+
+[section:overload1 basic_socket::operator= (1 of 2 overloads)]
+
+
+Move-assign a [link boost_asio.reference.basic_socket `basic_socket`] from another.
+
+
   basic_socket & operator=(
       basic_socket && other);
 
@@ -27589,6 +28170,45 @@
 
 
 
+[section:overload2 basic_socket::operator= (2 of 2 overloads)]
+
+
+Move-assign a [link boost_asio.reference.basic_socket `basic_socket`] from a socket of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.SocketService SocketService1]``>
+ enable_if< is_convertible< Protocol1, Protocol >::value, basic_socket >::type & operator=(
+ basic_socket< Protocol1, SocketService1 > && other);
+
+
+This assignment operator moves a socket from one object to another.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[other][The other [link boost_asio.reference.basic_socket `basic_socket`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+
+Following the move, the moved-from object is in the same state as if constructed using the `basic_socket(io_service&) constructor`.
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:protocol_type basic_socket::protocol_type]
 
 [indexterm2 protocol_type..basic_socket]
@@ -28540,7 +29160,9 @@
 
      Construct a basic_socket_acceptor on an existing native acceptor.
 
- Move-construct a basic_socket_acceptor from another. ]
+ Move-construct a basic_socket_acceptor from another.
+
+ Move-construct a basic_socket_acceptor from an acceptor of another protocol type. ]
   ]
   
   [
@@ -28619,7 +29241,9 @@
   
   [
     [[link boost_asio.reference.basic_socket_acceptor.operator_eq_ [*operator=]]]
- [Move-assign a basic_socket_acceptor from another. ]
+ [Move-assign a basic_socket_acceptor from another.
+
+ Move-assign a basic_socket_acceptor from an acceptor of another protocol type. ]
   ]
   
   [
@@ -28697,9 +29321,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Example]
@@ -28731,16 +29355,20 @@
 
 
   template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
       typename ``[link boost_asio.reference.SocketService SocketService]``>
   void ``[link boost_asio.reference.basic_socket_acceptor.accept.overload1 accept]``(
- basic_socket< protocol_type, SocketService > & peer);
+ basic_socket< Protocol1, SocketService > & peer,
+ typename enable_if< is_convertible< Protocol, Protocol1 >::value >::type * = 0);
   `` [''''&raquo;''' [link boost_asio.reference.basic_socket_acceptor.accept.overload1 more...]]``
 
   template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
       typename ``[link boost_asio.reference.SocketService SocketService]``>
   boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.accept.overload2 accept]``(
- basic_socket< protocol_type, SocketService > & peer,
- boost::system::error_code & ec);
+ basic_socket< Protocol1, SocketService > & peer,
+ boost::system::error_code & ec,
+ typename enable_if< is_convertible< Protocol, Protocol1 >::value >::type * = 0);
   `` [''''&raquo;''' [link boost_asio.reference.basic_socket_acceptor.accept.overload2 more...]]``
 
 
@@ -28770,9 +29398,11 @@
 
 
   template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
       typename ``[link boost_asio.reference.SocketService SocketService]``>
   void accept(
- basic_socket< protocol_type, SocketService > & peer);
+ basic_socket< Protocol1, SocketService > & peer,
+ typename enable_if< is_convertible< Protocol, Protocol1 >::value >::type * = 0);
 
 
 This function is used to accept a new connection from a peer into the given socket. The function call will block until a new connection has been accepted successfully or an error occurs.
@@ -28824,10 +29454,12 @@
 
 
   template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
       typename ``[link boost_asio.reference.SocketService SocketService]``>
   boost::system::error_code accept(
- basic_socket< protocol_type, SocketService > & peer,
- boost::system::error_code & ec);
+ basic_socket< Protocol1, SocketService > & peer,
+ boost::system::error_code & ec,
+ typename enable_if< is_convertible< Protocol, Protocol1 >::value >::type * = 0);
 
 
 This function is used to accept a new connection from a peer into the given socket. The function call will block until a new connection has been accepted successfully or an error occurs.
@@ -29043,17 +29675,19 @@
 
 
   template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
       typename ``[link boost_asio.reference.SocketService SocketService]``,
       typename ``[link boost_asio.reference.AcceptHandler AcceptHandler]``>
- void ``[link boost_asio.reference.basic_socket_acceptor.async_accept.overload1 async_accept]``(
- basic_socket< protocol_type, SocketService > & peer,
- AcceptHandler handler);
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_socket_acceptor.async_accept.overload1 async_accept]``(
+ basic_socket< Protocol1, SocketService > & peer,
+ AcceptHandler handler,
+ typename enable_if< is_convertible< Protocol, Protocol1 >::value >::type * = 0);
   `` [''''&raquo;''' [link boost_asio.reference.basic_socket_acceptor.async_accept.overload1 more...]]``
 
   template<
       typename ``[link boost_asio.reference.SocketService SocketService]``,
       typename ``[link boost_asio.reference.AcceptHandler AcceptHandler]``>
- void ``[link boost_asio.reference.basic_socket_acceptor.async_accept.overload2 async_accept]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_socket_acceptor.async_accept.overload2 async_accept]``(
       basic_socket< protocol_type, SocketService > & peer,
       endpoint_type & peer_endpoint,
       AcceptHandler handler);
@@ -29067,11 +29701,13 @@
 
 
   template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
       typename ``[link boost_asio.reference.SocketService SocketService]``,
       typename ``[link boost_asio.reference.AcceptHandler AcceptHandler]``>
- void async_accept(
- basic_socket< protocol_type, SocketService > & peer,
- AcceptHandler handler);
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_accept(
+ basic_socket< Protocol1, SocketService > & peer,
+ AcceptHandler handler,
+ typename enable_if< is_convertible< Protocol, Protocol1 >::value >::type * = 0);
 
 
 This function is used to asynchronously accept a new connection into a socket. The function call always returns immediately.
@@ -29133,7 +29769,7 @@
   template<
       typename ``[link boost_asio.reference.SocketService SocketService]``,
       typename ``[link boost_asio.reference.AcceptHandler AcceptHandler]``>
- void async_accept(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_accept(
       basic_socket< protocol_type, SocketService > & peer,
       endpoint_type & peer_endpoint,
       AcceptHandler handler);
@@ -29217,7 +29853,19 @@
   `` [''''&raquo;''' [link boost_asio.reference.basic_socket_acceptor.basic_socket_acceptor.overload5 more...]]``
 
 
-[section:overload1 basic_socket_acceptor::basic_socket_acceptor (1 of 5 overloads)]
+Move-construct a [link boost_asio.reference.basic_socket_acceptor `basic_socket_acceptor`] from an acceptor of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.SocketAcceptorService1 SocketAcceptorService1]``>
+ ``[link boost_asio.reference.basic_socket_acceptor.basic_socket_acceptor.overload6 basic_socket_acceptor]``(
+ basic_socket_acceptor< Protocol1, SocketAcceptorService1 > && other,
+ typename enable_if< is_convertible< Protocol1, Protocol >::value >::type * = 0);
+ `` [''''&raquo;''' [link boost_asio.reference.basic_socket_acceptor.basic_socket_acceptor.overload6 more...]]``
+
+
+[section:overload1 basic_socket_acceptor::basic_socket_acceptor (1 of 6 overloads)]
 
 
 Construct an acceptor without opening it.
@@ -29246,7 +29894,7 @@
 
 
 
-[section:overload2 basic_socket_acceptor::basic_socket_acceptor (2 of 5 overloads)]
+[section:overload2 basic_socket_acceptor::basic_socket_acceptor (2 of 6 overloads)]
 
 
 Construct an open acceptor.
@@ -29288,7 +29936,7 @@
 
 
 
-[section:overload3 basic_socket_acceptor::basic_socket_acceptor (3 of 5 overloads)]
+[section:overload3 basic_socket_acceptor::basic_socket_acceptor (3 of 6 overloads)]
 
 
 Construct an acceptor opened on the given endpoint.
@@ -29348,7 +29996,7 @@
 
 
 
-[section:overload4 basic_socket_acceptor::basic_socket_acceptor (4 of 5 overloads)]
+[section:overload4 basic_socket_acceptor::basic_socket_acceptor (4 of 6 overloads)]
 
 
 Construct a [link boost_asio.reference.basic_socket_acceptor `basic_socket_acceptor`] on an existing native acceptor.
@@ -29393,7 +30041,7 @@
 
 
 
-[section:overload5 basic_socket_acceptor::basic_socket_acceptor (5 of 5 overloads)]
+[section:overload5 basic_socket_acceptor::basic_socket_acceptor (5 of 6 overloads)]
 
 
 Move-construct a [link boost_asio.reference.basic_socket_acceptor `basic_socket_acceptor`] from another.
@@ -29426,28 +30074,66 @@
 [endsect]
 
 
-[endsect]
-
-[section:bind basic_socket_acceptor::bind]
 
-[indexterm2 bind..basic_socket_acceptor]
-Bind the acceptor to the given local endpoint.
+[section:overload6 basic_socket_acceptor::basic_socket_acceptor (6 of 6 overloads)]
 
 
- void ``[link boost_asio.reference.basic_socket_acceptor.bind.overload1 bind]``(
- const endpoint_type & endpoint);
- `` [''''&raquo;''' [link boost_asio.reference.basic_socket_acceptor.bind.overload1 more...]]``
+Move-construct a [link boost_asio.reference.basic_socket_acceptor `basic_socket_acceptor`] from an acceptor of another protocol type.
 
- boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.bind.overload2 bind]``(
- const endpoint_type & endpoint,
- boost::system::error_code & ec);
- `` [''''&raquo;''' [link boost_asio.reference.basic_socket_acceptor.bind.overload2 more...]]``
 
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.SocketAcceptorService1 SocketAcceptorService1]``>
+ basic_socket_acceptor(
+ basic_socket_acceptor< Protocol1, SocketAcceptorService1 > && other,
+ typename enable_if< is_convertible< Protocol1, Protocol >::value >::type * = 0);
 
-[section:overload1 basic_socket_acceptor::bind (1 of 2 overloads)]
 
+This constructor moves an acceptor from one object to another.
 
-Bind the acceptor to the given local endpoint.
+
+[heading Parameters]
+
+
+[variablelist
+
+[[other][The other [link boost_asio.reference.basic_socket_acceptor `basic_socket_acceptor`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+
+Following the move, the moved-from object is in the same state as if constructed using the `basic_socket(io_service&) constructor`.
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+[section:bind basic_socket_acceptor::bind]
+
+[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);
+ `` [''''&raquo;''' [link boost_asio.reference.basic_socket_acceptor.bind.overload1 more...]]``
+
+ boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.bind.overload2 bind]``(
+ const endpoint_type & endpoint,
+ boost::system::error_code & ec);
+ `` [''''&raquo;''' [link boost_asio.reference.basic_socket_acceptor.bind.overload2 more...]]``
+
+
+[section:overload1 basic_socket_acceptor::bind (1 of 2 overloads)]
+
+
+Bind the acceptor to the given local endpoint.
 
 
   void bind(
@@ -29482,8 +30168,9 @@
 
 
    boost::asio::ip::tcp::acceptor acceptor(io_service);
- acceptor.open(boost::asio::ip::tcp::v4());
- acceptor.bind(boost::asio::ip::tcp::endpoint(12345));
+ boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::tcp::v4(), 12345);
+ acceptor.open(endpoint.protocol());
+ acceptor.bind(endpoint);
 
 
 
@@ -29526,9 +30213,10 @@
 
 
    boost::asio::ip::tcp::acceptor acceptor(io_service);
- acceptor.open(boost::asio::ip::tcp::v4());
+ boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::tcp::v4(), 12345);
+ acceptor.open(endpoint.protocol());
    boost::system::error_code ec;
- acceptor.bind(boost::asio::ip::tcp::endpoint(12345), ec);
+ acceptor.bind(endpoint, ec);
    if (ec)
    {
      // An error occurred.
@@ -31342,13 +32030,34 @@
 
 [endsect]
 
-
 [section:operator_eq_ basic_socket_acceptor::operator=]
 
 [indexterm2 operator=..basic_socket_acceptor]
 Move-assign a [link boost_asio.reference.basic_socket_acceptor `basic_socket_acceptor`] from another.
 
 
+ basic_socket_acceptor & ``[link boost_asio.reference.basic_socket_acceptor.operator_eq_.overload1 operator=]``(
+ basic_socket_acceptor && other);
+ `` [''''&raquo;''' [link boost_asio.reference.basic_socket_acceptor.operator_eq_.overload1 more...]]``
+
+
+Move-assign a [link boost_asio.reference.basic_socket_acceptor `basic_socket_acceptor`] from an acceptor of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.SocketAcceptorService1 SocketAcceptorService1]``>
+ enable_if< is_convertible< Protocol1, Protocol >::value, basic_socket_acceptor >::type & ``[link boost_asio.reference.basic_socket_acceptor.operator_eq_.overload2 operator=]``(
+ basic_socket_acceptor< Protocol1, SocketAcceptorService1 > && other);
+ `` [''''&raquo;''' [link boost_asio.reference.basic_socket_acceptor.operator_eq_.overload2 more...]]``
+
+
+[section:overload1 basic_socket_acceptor::operator= (1 of 2 overloads)]
+
+
+Move-assign a [link boost_asio.reference.basic_socket_acceptor `basic_socket_acceptor`] from another.
+
+
   basic_socket_acceptor & operator=(
       basic_socket_acceptor && other);
 
@@ -31377,6 +32086,45 @@
 
 
 
+[section:overload2 basic_socket_acceptor::operator= (2 of 2 overloads)]
+
+
+Move-assign a [link boost_asio.reference.basic_socket_acceptor `basic_socket_acceptor`] from an acceptor of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.SocketAcceptorService1 SocketAcceptorService1]``>
+ enable_if< is_convertible< Protocol1, Protocol >::value, basic_socket_acceptor >::type & operator=(
+ basic_socket_acceptor< Protocol1, SocketAcceptorService1 > && other);
+
+
+This assignment operator moves an acceptor from one object to another.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[other][The other [link boost_asio.reference.basic_socket_acceptor `basic_socket_acceptor`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+
+Following the move, the moved-from object is in the same state as if constructed using the `basic_socket(io_service&) constructor`.
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:protocol_type basic_socket_acceptor::protocol_type]
 
 [indexterm2 protocol_type..basic_socket_acceptor]
@@ -32860,7 +33608,7 @@
 
   template<
       typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
- void async_connect(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
       const endpoint_type & peer_endpoint,
       ConnectHandler handler);
 
@@ -35008,7 +35756,9 @@
 
      Construct a basic_socket on an existing native socket.
 
- Move-construct a basic_socket from another. ]
+ Move-construct a basic_socket from another.
+
+ Move-construct a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -35094,7 +35844,9 @@
   
   [
     [[link boost_asio.reference.basic_socket.operator_eq_ [*operator=]]]
- [Move-assign a basic_socket from another. ]
+ [Move-assign a basic_socket from another.
+
+ Move-assign a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -35187,9 +35939,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -37158,7 +37910,9 @@
 
      Construct a basic_stream_socket on an existing native socket.
 
- Move-construct a basic_stream_socket from another. ]
+ Move-construct a basic_stream_socket from another.
+
+ Move-construct a basic_stream_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -37244,7 +37998,9 @@
   
   [
     [[link boost_asio.reference.basic_stream_socket.operator_eq_ [*operator=]]]
- [Move-assign a basic_stream_socket from another. ]
+ [Move-assign a basic_stream_socket from another.
+
+ Move-assign a basic_stream_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -37354,9 +38110,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -37437,7 +38193,7 @@
 
   template<
       typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
- void async_connect(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
       const endpoint_type & peer_endpoint,
       ConnectHandler handler);
 
@@ -37503,7 +38259,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_some(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_some(
       const MutableBufferSequence & buffers,
       ReadHandler handler);
 
@@ -37559,7 +38315,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.basic_stream_socket.async_receive.overload1 async_receive]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_stream_socket.async_receive.overload1 async_receive]``(
       const MutableBufferSequence & buffers,
       ReadHandler handler);
   `` [''''&raquo;''' [link boost_asio.reference.basic_stream_socket.async_receive.overload1 more...]]``
@@ -37567,7 +38323,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.basic_stream_socket.async_receive.overload2 async_receive]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_stream_socket.async_receive.overload2 async_receive]``(
       const MutableBufferSequence & buffers,
       socket_base::message_flags flags,
       ReadHandler handler);
@@ -37583,7 +38339,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive(
       const MutableBufferSequence & buffers,
       ReadHandler handler);
 
@@ -37640,7 +38396,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive(
       const MutableBufferSequence & buffers,
       socket_base::message_flags flags,
       ReadHandler handler);
@@ -37701,7 +38457,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void ``[link boost_asio.reference.basic_stream_socket.async_send.overload1 async_send]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_stream_socket.async_send.overload1 async_send]``(
       const ConstBufferSequence & buffers,
       WriteHandler handler);
   `` [''''&raquo;''' [link boost_asio.reference.basic_stream_socket.async_send.overload1 more...]]``
@@ -37709,7 +38465,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void ``[link boost_asio.reference.basic_stream_socket.async_send.overload2 async_send]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.basic_stream_socket.async_send.overload2 async_send]``(
       const ConstBufferSequence & buffers,
       socket_base::message_flags flags,
       WriteHandler handler);
@@ -37725,7 +38481,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send(
       const ConstBufferSequence & buffers,
       WriteHandler handler);
 
@@ -37782,7 +38538,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send(
       const ConstBufferSequence & buffers,
       socket_base::message_flags flags,
       WriteHandler handler);
@@ -37844,7 +38600,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write_some(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_some(
       const ConstBufferSequence & buffers,
       WriteHandler handler);
 
@@ -38114,7 +38870,19 @@
   `` [''''&raquo;''' [link boost_asio.reference.basic_stream_socket.basic_stream_socket.overload5 more...]]``
 
 
-[section:overload1 basic_stream_socket::basic_stream_socket (1 of 5 overloads)]
+Move-construct a [link boost_asio.reference.basic_stream_socket `basic_stream_socket`] from a socket of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.StreamSocketService StreamSocketService1]``>
+ ``[link boost_asio.reference.basic_stream_socket.basic_stream_socket.overload6 basic_stream_socket]``(
+ basic_stream_socket< Protocol1, StreamSocketService1 > && other,
+ typename enable_if< is_convertible< Protocol1, Protocol >::value >::type * = 0);
+ `` [''''&raquo;''' [link boost_asio.reference.basic_stream_socket.basic_stream_socket.overload6 more...]]``
+
+
+[section:overload1 basic_stream_socket::basic_stream_socket (1 of 6 overloads)]
 
 
 Construct a [link boost_asio.reference.basic_stream_socket `basic_stream_socket`] without opening it.
@@ -38143,7 +38911,7 @@
 
 
 
-[section:overload2 basic_stream_socket::basic_stream_socket (2 of 5 overloads)]
+[section:overload2 basic_stream_socket::basic_stream_socket (2 of 6 overloads)]
 
 
 Construct and open a [link boost_asio.reference.basic_stream_socket `basic_stream_socket`].
@@ -38185,7 +38953,7 @@
 
 
 
-[section:overload3 basic_stream_socket::basic_stream_socket (3 of 5 overloads)]
+[section:overload3 basic_stream_socket::basic_stream_socket (3 of 6 overloads)]
 
 
 Construct a [link boost_asio.reference.basic_stream_socket `basic_stream_socket`], opening it and binding it to the given local endpoint.
@@ -38227,7 +38995,7 @@
 
 
 
-[section:overload4 basic_stream_socket::basic_stream_socket (4 of 5 overloads)]
+[section:overload4 basic_stream_socket::basic_stream_socket (4 of 6 overloads)]
 
 
 Construct a [link boost_asio.reference.basic_stream_socket `basic_stream_socket`] on an existing native socket.
@@ -38272,7 +39040,7 @@
 
 
 
-[section:overload5 basic_stream_socket::basic_stream_socket (5 of 5 overloads)]
+[section:overload5 basic_stream_socket::basic_stream_socket (5 of 6 overloads)]
 
 
 Move-construct a [link boost_asio.reference.basic_stream_socket `basic_stream_socket`] from another.
@@ -38305,6 +39073,44 @@
 [endsect]
 
 
+
+[section:overload6 basic_stream_socket::basic_stream_socket (6 of 6 overloads)]
+
+
+Move-construct a [link boost_asio.reference.basic_stream_socket `basic_stream_socket`] from a socket of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.StreamSocketService StreamSocketService1]``>
+ basic_stream_socket(
+ basic_stream_socket< Protocol1, StreamSocketService1 > && other,
+ typename enable_if< is_convertible< Protocol1, Protocol >::value >::type * = 0);
+
+
+This constructor moves a stream socket from one object to another.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[other][The other [link boost_asio.reference.basic_stream_socket `basic_stream_socket`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+
+Following the move, the moved-from object is in the same state as if constructed using the `basic_stream_socket(io_service&) constructor`.
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 [section:bind basic_stream_socket::bind]
@@ -40011,7 +40817,9 @@
 
      Construct a basic_socket on an existing native socket.
 
- Move-construct a basic_socket from another. ]
+ Move-construct a basic_socket from another.
+
+ Move-construct a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -40097,7 +40905,9 @@
   
   [
     [[link boost_asio.reference.basic_socket.operator_eq_ [*operator=]]]
- [Move-assign a basic_socket from another. ]
+ [Move-assign a basic_socket from another.
+
+ Move-assign a basic_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -40190,9 +41000,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -41046,13 +41856,34 @@
 
 [endsect]
 
-
 [section:operator_eq_ basic_stream_socket::operator=]
 
 [indexterm2 operator=..basic_stream_socket]
 Move-assign a [link boost_asio.reference.basic_stream_socket `basic_stream_socket`] from another.
 
 
+ basic_stream_socket & ``[link boost_asio.reference.basic_stream_socket.operator_eq_.overload1 operator=]``(
+ basic_stream_socket && other);
+ `` [''''&raquo;''' [link boost_asio.reference.basic_stream_socket.operator_eq_.overload1 more...]]``
+
+
+Move-assign a [link boost_asio.reference.basic_stream_socket `basic_stream_socket`] from a socket of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.StreamSocketService StreamSocketService1]``>
+ enable_if< is_convertible< Protocol1, Protocol >::value, basic_stream_socket >::type & ``[link boost_asio.reference.basic_stream_socket.operator_eq_.overload2 operator=]``(
+ basic_stream_socket< Protocol1, StreamSocketService1 > && other);
+ `` [''''&raquo;''' [link boost_asio.reference.basic_stream_socket.operator_eq_.overload2 more...]]``
+
+
+[section:overload1 basic_stream_socket::operator= (1 of 2 overloads)]
+
+
+Move-assign a [link boost_asio.reference.basic_stream_socket `basic_stream_socket`] from another.
+
+
   basic_stream_socket & operator=(
       basic_stream_socket && other);
 
@@ -41081,6 +41912,45 @@
 
 
 
+[section:overload2 basic_stream_socket::operator= (2 of 2 overloads)]
+
+
+Move-assign a [link boost_asio.reference.basic_stream_socket `basic_stream_socket`] from a socket of another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
+ typename ``[link boost_asio.reference.StreamSocketService StreamSocketService1]``>
+ enable_if< is_convertible< Protocol1, Protocol >::value, basic_stream_socket >::type & operator=(
+ basic_stream_socket< Protocol1, StreamSocketService1 > && other);
+
+
+This assignment operator moves a stream socket from one object to another.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[other][The other [link boost_asio.reference.basic_stream_socket `basic_stream_socket`] object from which the move will occur.]]
+
+]
+
+
+[heading Remarks]
+
+Following the move, the moved-from object is in the same state as if constructed using the `basic_stream_socket(io_service&) constructor`.
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:protocol_type basic_stream_socket::protocol_type]
 
 [indexterm2 protocol_type..basic_stream_socket]
@@ -43090,7 +43960,7 @@
 
 A waitable timer is always in one of two states: "expired" or "not expired". If the `wait()` or `async_wait()` function is called on an expired timer, the wait operation will complete immediately.
 
-Most applications will use the boost::asio::waitable\_timer typedef.
+Most applications will use one of the [link boost_asio.reference.steady_timer `steady_timer`], [link boost_asio.reference.system_timer `system_timer`] or [link boost_asio.reference.high_resolution_timer `high_resolution_timer`] typedefs.
 
 
 [heading Remarks]
@@ -43100,20 +43970,20 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Examples]
   
-Performing a blocking wait:
+Performing a blocking wait (C++11):
 
    // Construct a timer without setting an expiry time.
- boost::asio::waitable_timer timer(io_service);
+ boost::asio::steady_timer timer(io_service);
 
    // Set an expiry time relative to now.
- timer.expires_from_now(boost::posix_time::seconds(5));
+ timer.expires_from_now(std::chrono::seconds(5));
 
    // Wait for the timer to expire.
    timer.wait();
@@ -43122,7 +43992,7 @@
 
 
 
-Performing an asynchronous wait:
+Performing an asynchronous wait (C++11):
 
    void handler(const boost::system::error_code& error)
    {
@@ -43135,8 +44005,8 @@
    ...
 
    // Construct a timer with an absolute expiry time.
- boost::asio::waitable_timer timer(io_service,
- boost::posix_time::time_from_string("2005-12-07 23:59:59.000"));
+ boost::asio::steady_timer timer(io_service,
+ std::chrono::steady_clock::now() + std::chrono::seconds(60));
 
    // Start an asynchronous wait.
    timer.async_wait(handler);
@@ -43145,7 +44015,7 @@
 
 
 
-[heading Changing an active waitable_timer's expiry time]
+[heading Changing an active waitable timer's expiry time]
   
 
 
@@ -43200,7 +44070,7 @@
 
   template<
       typename ``[link boost_asio.reference.WaitHandler WaitHandler]``>
- void async_wait(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_wait(
       WaitHandler handler);
 
 
@@ -44231,6 +45101,68 @@
 
 [endsect]
 
+[section:basic_yield_context basic_yield_context]
+
+
+
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``>
+ class basic_yield_context
+
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_yield_context.basic_yield_context [*basic_yield_context]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.basic_yield_context.operator_lb__rb_ [*operator\[\]]]]
+ []
+ ]
+
+]
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/spawn.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[section:basic_yield_context basic_yield_context::basic_yield_context]
+
+[indexterm2 basic_yield_context..basic_yield_context]
+
+ basic_yield_context(
+ const detail::weak_ptr< boost::coroutines::coroutine< void()> > & coro,
+ boost::coroutines::coroutine< void()>::caller_type & ca,
+ Handler & handler);
+
+
+
+[endsect]
+
+
+
+[section:operator_lb__rb_ basic_yield_context::operator\[\]]
+
+[indexterm2 operator\[\]..basic_yield_context]
+
+ basic_yield_context operator[](
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+
+[endsect]
+
 [section:buffer buffer]
 
 [indexterm1 buffer]
@@ -44464,7 +45396,7 @@
 
 
 
-In all three cases above, the buffers created are exactly 128 bytes long. Note that a vector is [*never] automatically resized when creating or using a buffer. The buffer size is determined using the vector's `size()` member function, and not its capacity.
+In all three cases above, the buffers created are exactly 128 bytes long. Note that a vector is ['never] automatically resized when creating or using a buffer. The buffer size is determined using the vector's `size()` member function, and not its capacity.
 
 
 [heading Accessing Buffer Contents]
@@ -47559,9 +48491,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -47935,7 +48867,7 @@
 The type of the next layer.
 
 
- typedef boost::remove_reference< Stream >::type next_layer_type;
+ typedef remove_reference< Stream >::type next_layer_type;
 
 
 
@@ -48262,9 +49194,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -48691,7 +49623,7 @@
 The type of the next layer.
 
 
- typedef boost::remove_reference< Stream >::type next_layer_type;
+ typedef remove_reference< Stream >::type next_layer_type;
 
 
 
@@ -49017,9 +49949,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -49393,7 +50325,7 @@
 The type of the next layer.
 
 
- typedef boost::remove_reference< Stream >::type next_layer_type;
+ typedef remove_reference< Stream >::type next_layer_type;
 
 
 
@@ -51624,6 +52556,379 @@
 
 [endsect]
 
+[section:coroutine coroutine]
+
+
+Provides support for implementing stackless coroutines.
+
+
+ class coroutine
+
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.coroutine.coroutine [*coroutine]]]
+ [Constructs a coroutine in its initial state. ]
+ ]
+
+ [
+ [[link boost_asio.reference.coroutine.is_child [*is_child]]]
+ [Returns true if the coroutine is the child of a fork. ]
+ ]
+
+ [
+ [[link boost_asio.reference.coroutine.is_complete [*is_complete]]]
+ [Returns true if the coroutine has reached its terminal state. ]
+ ]
+
+ [
+ [[link boost_asio.reference.coroutine.is_parent [*is_parent]]]
+ [Returns true if the coroutine is the parent of a fork. ]
+ ]
+
+]
+
+The `coroutine` class may be used to implement stackless coroutines. The class itself is used to store the current state of the coroutine.
+
+Coroutines are copy-constructible and assignable, and the space overhead is a single int. They can be used as a base class:
+
+
+
+ class session : coroutine
+ {
+ ...
+ };
+
+
+
+
+or as a data member:
+
+
+
+ class session
+ {
+ ...
+ coroutine coro_;
+ };
+
+
+
+
+or even bound in as a function argument using lambdas or `bind()`. The important thing is that as the application maintains a copy of the object for as long as the coroutine must be kept alive.
+
+
+[heading Pseudo-keywords]
+
+
+
+A coroutine is used in conjunction with certain "pseudo-keywords", which are implemented as macros. These macros are defined by a header file:
+
+
+
+ #include <boost/asio/yield.hpp>
+
+
+
+
+and may conversely be undefined as follows:
+
+
+
+ #include <boost/asio/unyield.hpp>
+
+
+
+
+[*reenter]
+
+The `reenter` macro is used to define the body of a coroutine. It takes a single argument: a pointer or reference to a coroutine object. For example, if the base class is a coroutine object you may write:
+
+
+
+ reenter (this)
+ {
+ ... coroutine body ...
+ }
+
+
+
+
+and if a data member or other variable you can write:
+
+
+
+ reenter (coro_)
+ {
+ ... coroutine body ...
+ }
+
+
+
+
+When `reenter` is executed at runtime, control jumps to the location of the last `yield` or `fork`.
+
+The coroutine body may also be a single statement, such as:
+
+
+
+ reenter (this) for (;;)
+ {
+ ...
+ }
+
+
+
+
+[*Limitation:] The `reenter` macro is implemented using a switch. This means that you must take care when using local variables within the coroutine body. The local variable is not allowed in a position where reentering the coroutine could bypass the variable definition.
+
+[*yield ['statement]]
+
+This form of the `yield` keyword is often used with asynchronous operations:
+
+
+
+ yield socket_->async_read_some(buffer(*buffer_), *this);
+
+
+
+
+This divides into four logical steps:
+
+
+* `yield` saves the current state of the coroutine.
+
+* The statement initiates the asynchronous operation.
+
+* The resume point is defined immediately following the statement.
+
+* Control is transferred to the end of the coroutine body.
+
+When the asynchronous operation completes, the function object is invoked and `reenter` causes control to transfer to the resume point. It is important to remember to carry the coroutine state forward with the asynchronous operation. In the above snippet, the current class is a function object object with a coroutine object as base class or data member.
+
+The statement may also be a compound statement, and this permits us to define local variables with limited scope:
+
+
+
+ yield
+ {
+ mutable_buffers_1 b = buffer(*buffer_);
+ socket_->async_read_some(b, *this);
+ }
+
+
+
+
+[*yield return ['expression] ;]
+
+This form of `yield` is often used in generators or coroutine-based parsers. For example, the function object:
+
+
+
+ struct interleave : coroutine
+ {
+ istream& is1;
+ istream& is2;
+ char operator()(char c)
+ {
+ reenter (this) for (;;)
+ {
+ yield return is1.get();
+ yield return is2.get();
+ }
+ }
+ };
+
+
+
+
+defines a trivial coroutine that interleaves the characters from two input streams.
+
+This type of `yield` divides into three logical steps:
+
+
+* `yield` saves the current state of the coroutine.
+
+* The resume point is defined immediately following the semicolon.
+
+* The value of the expression is returned from the function.
+
+[*yield ;]
+
+This form of `yield` is equivalent to the following steps:
+
+
+* `yield` saves the current state of the coroutine.
+
+* The resume point is defined immediately following the semicolon.
+
+* Control is transferred to the end of the coroutine body.
+
+This form might be applied when coroutines are used for cooperative threading and scheduling is explicitly managed. For example:
+
+
+
+ struct task : coroutine
+ {
+ ...
+ void operator()()
+ {
+ reenter (this)
+ {
+ while (... not finished ...)
+ {
+ ... do something ...
+ yield;
+ ... do some more ...
+ yield;
+ }
+ }
+ }
+ ...
+ };
+ ...
+ task t1, t2;
+ for (;;)
+ {
+ t1();
+ t2();
+ }
+
+
+
+
+[*yield break ;]
+
+The final form of `yield` is used to explicitly terminate the coroutine. This form is comprised of two steps:
+
+
+* `yield` sets the coroutine state to indicate termination.
+
+* Control is transferred to the end of the coroutine body.
+
+Once terminated, calls to `is_complete()` return true and the coroutine cannot be reentered.
+
+Note that a coroutine may also be implicitly terminated if the coroutine body is exited without a yield, e.g. by return, throw or by running to the end of the body.
+
+[*fork ['statement]]
+
+The `fork` pseudo-keyword is used when "forking" a coroutine, i.e. splitting it into two (or more) copies. One use of `fork` is in a server, where a new coroutine is created to handle each client connection:
+
+
+
+ reenter (this)
+ {
+ do
+ {
+ socket_.reset(new tcp::socket(io_service_));
+ yield acceptor->async_accept(*socket_, *this);
+ fork server(*this)();
+ } while (is_parent());
+ ... client-specific handling follows ...
+ }
+
+
+
+
+The logical steps involved in a `fork` are:
+
+
+* `fork` saves the current state of the coroutine.
+
+* The statement creates a copy of the coroutine and either executes it immediately or schedules it for later execution.
+
+* The resume point is defined immediately following the semicolon.
+
+* For the "parent", control immediately continues from the next line.
+
+The functions `is_parent()` and `is_child()` can be used to differentiate between parent and child. You would use these functions to alter subsequent control flow.
+
+Note that `fork` doesn't do the actual forking by itself. It is the application's responsibility to create a clone of the coroutine and call it. The clone can be called immediately, as above, or scheduled for delayed execution using something like `io_service::post()`.
+
+
+[heading Alternate macro names]
+
+
+
+If preferred, an application can use macro names that follow a more typical naming convention, rather than the pseudo-keywords. These are:
+
+
+* `BOOST_ASIO_CORO_REENTER` instead of `reenter`
+
+* `BOOST_ASIO_CORO_YIELD` instead of `yield`
+
+* `BOOST_ASIO_CORO_FORK` instead of `fork`
+
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/coroutine.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[section:coroutine coroutine::coroutine]
+
+[indexterm2 coroutine..coroutine]
+Constructs a coroutine in its initial state.
+
+
+ coroutine();
+
+
+
+[endsect]
+
+
+
+[section:is_child coroutine::is_child]
+
+[indexterm2 is_child..coroutine]
+Returns true if the coroutine is the child of a fork.
+
+
+ bool is_child() const;
+
+
+
+[endsect]
+
+
+
+[section:is_complete coroutine::is_complete]
+
+[indexterm2 is_complete..coroutine]
+Returns true if the coroutine has reached its terminal state.
+
+
+ bool is_complete() const;
+
+
+
+[endsect]
+
+
+
+[section:is_parent coroutine::is_parent]
+
+[indexterm2 is_parent..coroutine]
+Returns true if the coroutine is the parent of a fork.
+
+
+ bool is_parent() const;
+
+
+
+[endsect]
+
+
+
+[endsect]
+
 [section:datagram_socket_service datagram_socket_service]
 
 
@@ -51747,6 +53052,11 @@
   ]
   
   [
+ [[link boost_asio.reference.datagram_socket_service.converting_move_construct [*converting_move_construct]]]
+ [Move-construct a new datagram socket implementation from another protocol type. ]
+ ]
+
+ [
     [[link boost_asio.reference.datagram_socket_service.datagram_socket_service [*datagram_socket_service]]]
     [Construct a new datagram socket service for the specified io_service. ]
   ]
@@ -51901,7 +53211,7 @@
 
   template<
       typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
- void async_connect(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
       implementation_type & impl,
       const endpoint_type & peer_endpoint,
       ConnectHandler handler);
@@ -51921,7 +53231,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive(
       implementation_type & impl,
       const MutableBufferSequence & buffers,
       socket_base::message_flags flags,
@@ -51942,7 +53252,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive_from(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive_from(
       implementation_type & impl,
       const MutableBufferSequence & buffers,
       endpoint_type & sender_endpoint,
@@ -51964,7 +53274,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send(
       implementation_type & impl,
       const ConstBufferSequence & buffers,
       socket_base::message_flags flags,
@@ -51985,7 +53295,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send_to(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send_to(
       implementation_type & impl,
       const ConstBufferSequence & buffers,
       const endpoint_type & destination,
@@ -52109,6 +53419,25 @@
 
 
 
+[section:converting_move_construct datagram_socket_service::converting_move_construct]
+
+[indexterm2 converting_move_construct..datagram_socket_service]
+Move-construct a new datagram socket implementation from another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``>
+ void converting_move_construct(
+ implementation_type & impl,
+ typename datagram_socket_service< Protocol1 >::implementation_type & other_impl,
+ typename enable_if< is_convertible< Protocol1, Protocol >::value >::type * = 0);
+
+
+
+[endsect]
+
+
+
 [section:datagram_socket_service datagram_socket_service::datagram_socket_service]
 
 [indexterm2 datagram_socket_service..datagram_socket_service]
@@ -52812,9 +54141,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Examples]
@@ -53039,7 +54368,7 @@
 
   template<
       typename ``[link boost_asio.reference.WaitHandler WaitHandler]``>
- void async_wait(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_wait(
       implementation_type & impl,
       WaitHandler handler);
 
@@ -54014,15 +55343,4333 @@
 [endsect]
 
 
+[section:generic__basic_endpoint generic::basic_endpoint]
 
-[section:has_service has_service]
 
-[indexterm1 has_service]
+Describes an endpoint for any socket type.
+
 
   template<
- typename ``[link boost_asio.reference.Service Service]``>
- bool has_service(
- io_service & ios);
+ typename ``[link boost_asio.reference.Protocol Protocol]``>
+ class basic_endpoint
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.generic__basic_endpoint.data_type [*data_type]]]
+ [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.generic__basic_endpoint.protocol_type [*protocol_type]]]
+ [The protocol type associated with the endpoint. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.basic_endpoint [*basic_endpoint]]]
+ [Default constructor.
+
+ Construct an endpoint from the specified socket address.
+
+ Construct an endpoint from the specific endpoint type.
+
+ Copy constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.capacity [*capacity]]]
+ [Get the capacity of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.data [*data]]]
+ [Get the underlying endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_eq_ [*operator=]]]
+ [Assign from another endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.protocol [*protocol]]]
+ [The protocol associated with the endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.resize [*resize]]]
+ [Set the underlying size of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.size [*size]]]
+ [Get the underlying size of the endpoint in the native type. ]
+ ]
+
+]
+
+[heading Friends]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_not__eq_ [*operator!=]]]
+ [Compare two endpoints for inequality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_lt_ [*operator<]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_lt__eq_ [*operator<=]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_eq__eq_ [*operator==]]]
+ [Compare two endpoints for equality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_gt_ [*operator>]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_gt__eq_ [*operator>=]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+]
+
+The [link boost_asio.reference.generic__basic_endpoint `generic::basic_endpoint`] class template describes an endpoint that may be associated with any socket type.
+
+
+[heading Remarks]
+
+The socket types sockaddr type must be able to fit into a `sockaddr_storage` structure.
+
+
+[heading Thread Safety]
+
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Unsafe.
+
+
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/basic_endpoint.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+[section:basic_endpoint generic::basic_endpoint::basic_endpoint]
+
+[indexterm2 basic_endpoint..generic::basic_endpoint]
+Default constructor.
+
+
+ ``[link boost_asio.reference.generic__basic_endpoint.basic_endpoint.overload1 basic_endpoint]``();
+ `` [''''&raquo;''' [link boost_asio.reference.generic__basic_endpoint.basic_endpoint.overload1 more...]]``
+
+
+Construct an endpoint from the specified socket address.
+
+
+ ``[link boost_asio.reference.generic__basic_endpoint.basic_endpoint.overload2 basic_endpoint]``(
+ const void * socket_address,
+ std::size_t socket_address_size,
+ int socket_protocol = 0);
+ `` [''''&raquo;''' [link boost_asio.reference.generic__basic_endpoint.basic_endpoint.overload2 more...]]``
+
+
+Construct an endpoint from the specific endpoint type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Endpoint Endpoint]``>
+ ``[link boost_asio.reference.generic__basic_endpoint.basic_endpoint.overload3 basic_endpoint]``(
+ const Endpoint & endpoint);
+ `` [''''&raquo;''' [link boost_asio.reference.generic__basic_endpoint.basic_endpoint.overload3 more...]]``
+
+
+Copy constructor.
+
+
+ ``[link boost_asio.reference.generic__basic_endpoint.basic_endpoint.overload4 basic_endpoint]``(
+ const basic_endpoint & other);
+ `` [''''&raquo;''' [link boost_asio.reference.generic__basic_endpoint.basic_endpoint.overload4 more...]]``
+
+
+[section:overload1 generic::basic_endpoint::basic_endpoint (1 of 4 overloads)]
+
+
+Default constructor.
+
+
+ basic_endpoint();
+
+
+
+[endsect]
+
+
+
+[section:overload2 generic::basic_endpoint::basic_endpoint (2 of 4 overloads)]
+
+
+Construct an endpoint from the specified socket address.
+
+
+ basic_endpoint(
+ const void * socket_address,
+ std::size_t socket_address_size,
+ int socket_protocol = 0);
+
+
+
+[endsect]
+
+
+
+[section:overload3 generic::basic_endpoint::basic_endpoint (3 of 4 overloads)]
+
+
+Construct an endpoint from the specific endpoint type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Endpoint Endpoint]``>
+ basic_endpoint(
+ const Endpoint & endpoint);
+
+
+
+[endsect]
+
+
+
+[section:overload4 generic::basic_endpoint::basic_endpoint (4 of 4 overloads)]
+
+
+Copy constructor.
+
+
+ basic_endpoint(
+ const basic_endpoint & other);
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:capacity generic::basic_endpoint::capacity]
+
+[indexterm2 capacity..generic::basic_endpoint]
+Get the capacity of the endpoint in the native type.
+
+
+ std::size_t capacity() const;
+
+
+
+[endsect]
+
+
+[section:data generic::basic_endpoint::data]
+
+[indexterm2 data..generic::basic_endpoint]
+Get the underlying endpoint in the native type.
+
+
+ data_type * ``[link boost_asio.reference.generic__basic_endpoint.data.overload1 data]``();
+ `` [''''&raquo;''' [link boost_asio.reference.generic__basic_endpoint.data.overload1 more...]]``
+
+ const data_type * ``[link boost_asio.reference.generic__basic_endpoint.data.overload2 data]``() const;
+ `` [''''&raquo;''' [link boost_asio.reference.generic__basic_endpoint.data.overload2 more...]]``
+
+
+[section:overload1 generic::basic_endpoint::data (1 of 2 overloads)]
+
+
+Get the underlying endpoint in the native type.
+
+
+ data_type * data();
+
+
+
+[endsect]
+
+
+
+[section:overload2 generic::basic_endpoint::data (2 of 2 overloads)]
+
+
+Get the underlying endpoint in the native type.
+
+
+ const data_type * data() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:data_type generic::basic_endpoint::data_type]
+
+[indexterm2 data_type..generic::basic_endpoint]
+The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer.
+
+
+ typedef implementation_defined data_type;
+
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/basic_endpoint.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_not__eq_ generic::basic_endpoint::operator!=]
+
+[indexterm2 operator!=..generic::basic_endpoint]
+Compare two endpoints for inequality.
+
+
+ friend bool operator!=(
+ const basic_endpoint< Protocol > & e1,
+ const basic_endpoint< Protocol > & e2);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/basic_endpoint.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_lt_ generic::basic_endpoint::operator<]
+
+[indexterm2 operator<..generic::basic_endpoint]
+Compare endpoints for ordering.
+
+
+ friend bool operator<(
+ const basic_endpoint< Protocol > & e1,
+ const basic_endpoint< Protocol > & e2);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/basic_endpoint.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_lt__eq_ generic::basic_endpoint::operator<=]
+
+[indexterm2 operator<=..generic::basic_endpoint]
+Compare endpoints for ordering.
+
+
+ friend bool operator<=(
+ const basic_endpoint< Protocol > & e1,
+ const basic_endpoint< Protocol > & e2);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/basic_endpoint.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_eq_ generic::basic_endpoint::operator=]
+
+[indexterm2 operator=..generic::basic_endpoint]
+Assign from another endpoint.
+
+
+ basic_endpoint & operator=(
+ const basic_endpoint & other);
+
+
+
+[endsect]
+
+
+
+[section:operator_eq__eq_ generic::basic_endpoint::operator==]
+
+[indexterm2 operator==..generic::basic_endpoint]
+Compare two endpoints for equality.
+
+
+ friend bool operator==(
+ const basic_endpoint< Protocol > & e1,
+ const basic_endpoint< Protocol > & e2);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/basic_endpoint.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_gt_ generic::basic_endpoint::operator>]
+
+[indexterm2 operator>..generic::basic_endpoint]
+Compare endpoints for ordering.
+
+
+ friend bool operator>(
+ const basic_endpoint< Protocol > & e1,
+ const basic_endpoint< Protocol > & e2);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/basic_endpoint.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_gt__eq_ generic::basic_endpoint::operator>=]
+
+[indexterm2 operator>=..generic::basic_endpoint]
+Compare endpoints for ordering.
+
+
+ friend bool operator>=(
+ const basic_endpoint< Protocol > & e1,
+ const basic_endpoint< Protocol > & e2);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/basic_endpoint.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:protocol generic::basic_endpoint::protocol]
+
+[indexterm2 protocol..generic::basic_endpoint]
+The protocol associated with the endpoint.
+
+
+ protocol_type protocol() const;
+
+
+
+[endsect]
+
+
+
+[section:protocol_type generic::basic_endpoint::protocol_type]
+
+[indexterm2 protocol_type..generic::basic_endpoint]
+The protocol type associated with the endpoint.
+
+
+ typedef Protocol protocol_type;
+
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/basic_endpoint.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:resize generic::basic_endpoint::resize]
+
+[indexterm2 resize..generic::basic_endpoint]
+Set the underlying size of the endpoint in the native type.
+
+
+ void resize(
+ std::size_t new_size);
+
+
+
+[endsect]
+
+
+
+[section:size generic::basic_endpoint::size]
+
+[indexterm2 size..generic::basic_endpoint]
+Get the underlying size of the endpoint in the native type.
+
+
+ std::size_t size() const;
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:generic__datagram_protocol generic::datagram_protocol]
+
+
+Encapsulates the flags needed for a generic datagram-oriented socket.
+
+
+ class datagram_protocol
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.generic__datagram_protocol.endpoint [*endpoint]]]
+ [The type of an endpoint. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.generic__datagram_protocol.socket [*socket]]]
+ [The generic socket type. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.generic__datagram_protocol.datagram_protocol [*datagram_protocol]]]
+ [Construct a protocol object for a specific address family and protocol.
+
+ Construct a generic protocol object from a specific protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__datagram_protocol.family [*family]]]
+ [Obtain an identifier for the protocol family. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__datagram_protocol.protocol [*protocol]]]
+ [Obtain an identifier for the protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__datagram_protocol.type [*type]]]
+ [Obtain an identifier for the type of the protocol. ]
+ ]
+
+]
+
+[heading Friends]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.generic__datagram_protocol.operator_not__eq_ [*operator!=]]]
+ [Compare two protocols for inequality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__datagram_protocol.operator_eq__eq_ [*operator==]]]
+ [Compare two protocols for equality. ]
+ ]
+
+]
+
+The [link boost_asio.reference.generic__datagram_protocol `generic::datagram_protocol`] class contains flags necessary for datagram-oriented sockets of any address family and protocol.
+
+
+[heading Examples]
+
+Constructing using a native address family and socket protocol:
+
+ datagram_protocol p(AF_INET, IPPROTO_UDP);
+
+
+Constructing from a specific protocol type:
+
+ datagram_protocol p(boost::asio::ip::udp::v4());
+
+
+
+
+
+[heading Thread Safety]
+
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Safe.
+
+
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/datagram_protocol.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+[section:datagram_protocol generic::datagram_protocol::datagram_protocol]
+
+[indexterm2 datagram_protocol..generic::datagram_protocol]
+Construct a protocol object for a specific address family and protocol.
+
+
+ ``[link boost_asio.reference.generic__datagram_protocol.datagram_protocol.overload1 datagram_protocol]``(
+ int address_family,
+ int socket_protocol);
+ `` [''''&raquo;''' [link boost_asio.reference.generic__datagram_protocol.datagram_protocol.overload1 more...]]``
+
+
+Construct a generic protocol object from a specific protocol.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``>
+ ``[link boost_asio.reference.generic__datagram_protocol.datagram_protocol.overload2 datagram_protocol]``(
+ const Protocol & source_protocol);
+ `` [''''&raquo;''' [link boost_asio.reference.generic__datagram_protocol.datagram_protocol.overload2 more...]]``
+
+
+[section:overload1 generic::datagram_protocol::datagram_protocol (1 of 2 overloads)]
+
+
+Construct a protocol object for a specific address family and protocol.
+
+
+ datagram_protocol(
+ int address_family,
+ int socket_protocol);
+
+
+
+[endsect]
+
+
+
+[section:overload2 generic::datagram_protocol::datagram_protocol (2 of 2 overloads)]
+
+
+Construct a generic protocol object from a specific protocol.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``>
+ datagram_protocol(
+ const Protocol & source_protocol);
+
+
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[@c][bad\_cast Thrown if the source protocol is not datagram-oriented. ]]
+
+]
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:endpoint generic::datagram_protocol::endpoint]
+
+[indexterm2 endpoint..generic::datagram_protocol]
+The type of an endpoint.
+
+
+ typedef basic_endpoint< datagram_protocol > endpoint;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.generic__basic_endpoint.data_type [*data_type]]]
+ [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.generic__basic_endpoint.protocol_type [*protocol_type]]]
+ [The protocol type associated with the endpoint. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.basic_endpoint [*basic_endpoint]]]
+ [Default constructor.
+
+ Construct an endpoint from the specified socket address.
+
+ Construct an endpoint from the specific endpoint type.
+
+ Copy constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.capacity [*capacity]]]
+ [Get the capacity of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.data [*data]]]
+ [Get the underlying endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_eq_ [*operator=]]]
+ [Assign from another endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.protocol [*protocol]]]
+ [The protocol associated with the endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.resize [*resize]]]
+ [Set the underlying size of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.size [*size]]]
+ [Get the underlying size of the endpoint in the native type. ]
+ ]
+
+]
+
+[heading Friends]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_not__eq_ [*operator!=]]]
+ [Compare two endpoints for inequality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_lt_ [*operator<]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_lt__eq_ [*operator<=]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_eq__eq_ [*operator==]]]
+ [Compare two endpoints for equality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_gt_ [*operator>]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_gt__eq_ [*operator>=]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+]
+
+The [link boost_asio.reference.generic__basic_endpoint `generic::basic_endpoint`] class template describes an endpoint that may be associated with any socket type.
+
+
+[heading Remarks]
+
+The socket types sockaddr type must be able to fit into a `sockaddr_storage` structure.
+
+
+[heading Thread Safety]
+
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Unsafe.
+
+
+
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/datagram_protocol.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:family generic::datagram_protocol::family]
+
+[indexterm2 family..generic::datagram_protocol]
+Obtain an identifier for the protocol family.
+
+
+ int family() const;
+
+
+
+[endsect]
+
+
+
+[section:operator_not__eq_ generic::datagram_protocol::operator!=]
+
+[indexterm2 operator!=..generic::datagram_protocol]
+Compare two protocols for inequality.
+
+
+ friend bool operator!=(
+ const datagram_protocol & p1,
+ const datagram_protocol & p2);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/datagram_protocol.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_eq__eq_ generic::datagram_protocol::operator==]
+
+[indexterm2 operator==..generic::datagram_protocol]
+Compare two protocols for equality.
+
+
+ friend bool operator==(
+ const datagram_protocol & p1,
+ const datagram_protocol & p2);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/datagram_protocol.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:protocol generic::datagram_protocol::protocol]
+
+[indexterm2 protocol..generic::datagram_protocol]
+Obtain an identifier for the protocol.
+
+
+ int protocol() const;
+
+
+
+[endsect]
+
+
+
+[section:socket generic::datagram_protocol::socket]
+
+[indexterm2 socket..generic::datagram_protocol]
+The generic socket type.
+
+
+ typedef basic_datagram_socket< datagram_protocol > socket;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.broadcast [*broadcast]]]
+ [Socket option to permit sending of broadcast messages. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.debug [*debug]]]
+ [Socket option to enable socket-level debugging. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.do_not_route [*do_not_route]]]
+ [Socket option to prevent routing, use local interfaces only. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.enable_connection_aborted [*enable_connection_aborted]]]
+ [Socket option to report aborted connections on accept. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.keep_alive [*keep_alive]]]
+ [Socket option to send keep-alives. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.linger [*linger]]]
+ [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_socket is always the lowest layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.message_flags [*message_flags]]]
+ [Bitmask type for flags that can be passed to send and receive operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.native_handle_type [*native_handle_type]]]
+ [The native representation of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.native_type [*native_type]]]
+ [(Deprecated: Use native_handle_type.) The native representation of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.non_blocking_io [*non_blocking_io]]]
+ [(Deprecated: Use non_blocking().) IO control command to set the blocking mode of the socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.receive_buffer_size [*receive_buffer_size]]]
+ [Socket option for the receive buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.receive_low_watermark [*receive_low_watermark]]]
+ [Socket option for the receive low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.reuse_address [*reuse_address]]]
+ [Socket option to allow the socket to be bound to an address that is already in use. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.send_buffer_size [*send_buffer_size]]]
+ [Socket option for the send buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.send_low_watermark [*send_low_watermark]]]
+ [Socket option for the send low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.shutdown_type [*shutdown_type]]]
+ [Different ways a socket may be shutdown. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.assign [*assign]]]
+ [Assign an existing native socket to the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.async_connect [*async_connect]]]
+ [Start an asynchronous connect. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.async_receive [*async_receive]]]
+ [Start an asynchronous receive on a connected socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.async_receive_from [*async_receive_from]]]
+ [Start an asynchronous receive. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.async_send [*async_send]]]
+ [Start an asynchronous send on a connected socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.async_send_to [*async_send_to]]]
+ [Start an asynchronous send. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.at_mark [*at_mark]]]
+ [Determine whether the socket is at the out-of-band data mark. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.available [*available]]]
+ [Determine the number of bytes available for reading. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.basic_datagram_socket [*basic_datagram_socket]]]
+ [Construct a basic_datagram_socket without opening it.
+
+ Construct and open a basic_datagram_socket.
+
+ Construct a basic_datagram_socket, opening it and binding it to the given local endpoint.
+
+ Construct a basic_datagram_socket on an existing native socket.
+
+ Move-construct a basic_datagram_socket from another.
+
+ Move-construct a basic_datagram_socket from a socket of another protocol type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.bind [*bind]]]
+ [Bind the socket to the given local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.close [*close]]]
+ [Close the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.connect [*connect]]]
+ [Connect the socket to the specified endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.get_option [*get_option]]]
+ [Get an option from the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.io_control [*io_control]]]
+ [Perform an IO control command on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.is_open [*is_open]]]
+ [Determine whether the socket is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer.
+
+ Get a const reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.native [*native]]]
+ [(Deprecated: Use native_handle().) Get the native socket representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.native_handle [*native_handle]]]
+ [Get the native socket representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.native_non_blocking [*native_non_blocking]]]
+ [Gets the non-blocking mode of the native socket implementation.
+
+ Sets the non-blocking mode of the native socket implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.non_blocking [*non_blocking]]]
+ [Gets the non-blocking mode of the socket.
+
+ Sets the non-blocking mode of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.open [*open]]]
+ [Open the socket using the specified protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.operator_eq_ [*operator=]]]
+ [Move-assign a basic_datagram_socket from another.
+
+ Move-assign a basic_datagram_socket from a socket of another protocol type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.receive [*receive]]]
+ [Receive some data on a connected socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.receive_from [*receive_from]]]
+ [Receive a datagram with the endpoint of the sender. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.remote_endpoint [*remote_endpoint]]]
+ [Get the remote endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.send [*send]]]
+ [Send some data on a connected socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.send_to [*send_to]]]
+ [Send a datagram to the specified endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.set_option [*set_option]]]
+ [Set an option on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.shutdown [*shutdown]]]
+ [Disable sends or receives on the socket. ]
+ ]
+
+]
+
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.get_implementation [*get_implementation]]]
+ [Get the underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.get_service [*get_service]]]
+ [Get the service associated with the I/O object. ]
+ ]
+
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.max_connections [*max_connections]]]
+ [The maximum length of the queue of pending incoming connections. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.message_do_not_route [*message_do_not_route]]]
+ [Specify that the data should not be subject to routing. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.message_end_of_record [*message_end_of_record]]]
+ [Specifies that the data marks the end of a record. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.message_out_of_band [*message_out_of_band]]]
+ [Process out-of-band data. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.message_peek [*message_peek]]]
+ [Peek at incoming data without removing it from the input queue. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.implementation [*implementation]]]
+ [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.service [*service]]]
+ [(Deprecated: Use get_service().) The service associated with the I/O object. ]
+ ]
+
+]
+
+The [link boost_asio.reference.basic_datagram_socket `basic_datagram_socket`] class template provides asynchronous and blocking datagram-oriented socket functionality.
+
+
+[heading Thread Safety]
+
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Unsafe.
+
+
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/datagram_protocol.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:type generic::datagram_protocol::type]
+
+[indexterm2 type..generic::datagram_protocol]
+Obtain an identifier for the type of the protocol.
+
+
+ int type() const;
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:generic__raw_protocol generic::raw_protocol]
+
+
+Encapsulates the flags needed for a generic raw socket.
+
+
+ class raw_protocol
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.generic__raw_protocol.endpoint [*endpoint]]]
+ [The type of an endpoint. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.generic__raw_protocol.socket [*socket]]]
+ [The generic socket type. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.generic__raw_protocol.family [*family]]]
+ [Obtain an identifier for the protocol family. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__raw_protocol.protocol [*protocol]]]
+ [Obtain an identifier for the protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__raw_protocol.raw_protocol [*raw_protocol]]]
+ [Construct a protocol object for a specific address family and protocol.
+
+ Construct a generic protocol object from a specific protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__raw_protocol.type [*type]]]
+ [Obtain an identifier for the type of the protocol. ]
+ ]
+
+]
+
+[heading Friends]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.generic__raw_protocol.operator_not__eq_ [*operator!=]]]
+ [Compare two protocols for inequality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__raw_protocol.operator_eq__eq_ [*operator==]]]
+ [Compare two protocols for equality. ]
+ ]
+
+]
+
+The [link boost_asio.reference.generic__raw_protocol `generic::raw_protocol`] class contains flags necessary for raw sockets of any address family and protocol.
+
+
+[heading Examples]
+
+Constructing using a native address family and socket protocol:
+
+ raw_protocol p(AF_INET, IPPROTO_ICMP);
+
+
+Constructing from a specific protocol type:
+
+ raw_protocol p(boost::asio::ip::icmp::v4());
+
+
+
+
+
+[heading Thread Safety]
+
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Safe.
+
+
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/raw_protocol.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[section:endpoint generic::raw_protocol::endpoint]
+
+[indexterm2 endpoint..generic::raw_protocol]
+The type of an endpoint.
+
+
+ typedef basic_endpoint< raw_protocol > endpoint;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.generic__basic_endpoint.data_type [*data_type]]]
+ [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.generic__basic_endpoint.protocol_type [*protocol_type]]]
+ [The protocol type associated with the endpoint. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.basic_endpoint [*basic_endpoint]]]
+ [Default constructor.
+
+ Construct an endpoint from the specified socket address.
+
+ Construct an endpoint from the specific endpoint type.
+
+ Copy constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.capacity [*capacity]]]
+ [Get the capacity of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.data [*data]]]
+ [Get the underlying endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_eq_ [*operator=]]]
+ [Assign from another endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.protocol [*protocol]]]
+ [The protocol associated with the endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.resize [*resize]]]
+ [Set the underlying size of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.size [*size]]]
+ [Get the underlying size of the endpoint in the native type. ]
+ ]
+
+]
+
+[heading Friends]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_not__eq_ [*operator!=]]]
+ [Compare two endpoints for inequality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_lt_ [*operator<]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_lt__eq_ [*operator<=]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_eq__eq_ [*operator==]]]
+ [Compare two endpoints for equality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_gt_ [*operator>]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_gt__eq_ [*operator>=]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+]
+
+The [link boost_asio.reference.generic__basic_endpoint `generic::basic_endpoint`] class template describes an endpoint that may be associated with any socket type.
+
+
+[heading Remarks]
+
+The socket types sockaddr type must be able to fit into a `sockaddr_storage` structure.
+
+
+[heading Thread Safety]
+
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Unsafe.
+
+
+
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/raw_protocol.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:family generic::raw_protocol::family]
+
+[indexterm2 family..generic::raw_protocol]
+Obtain an identifier for the protocol family.
+
+
+ int family() const;
+
+
+
+[endsect]
+
+
+
+[section:operator_not__eq_ generic::raw_protocol::operator!=]
+
+[indexterm2 operator!=..generic::raw_protocol]
+Compare two protocols for inequality.
+
+
+ friend bool operator!=(
+ const raw_protocol & p1,
+ const raw_protocol & p2);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/raw_protocol.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_eq__eq_ generic::raw_protocol::operator==]
+
+[indexterm2 operator==..generic::raw_protocol]
+Compare two protocols for equality.
+
+
+ friend bool operator==(
+ const raw_protocol & p1,
+ const raw_protocol & p2);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/raw_protocol.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:protocol generic::raw_protocol::protocol]
+
+[indexterm2 protocol..generic::raw_protocol]
+Obtain an identifier for the protocol.
+
+
+ int protocol() const;
+
+
+
+[endsect]
+
+
+[section:raw_protocol generic::raw_protocol::raw_protocol]
+
+[indexterm2 raw_protocol..generic::raw_protocol]
+Construct a protocol object for a specific address family and protocol.
+
+
+ ``[link boost_asio.reference.generic__raw_protocol.raw_protocol.overload1 raw_protocol]``(
+ int address_family,
+ int socket_protocol);
+ `` [''''&raquo;''' [link boost_asio.reference.generic__raw_protocol.raw_protocol.overload1 more...]]``
+
+
+Construct a generic protocol object from a specific protocol.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``>
+ ``[link boost_asio.reference.generic__raw_protocol.raw_protocol.overload2 raw_protocol]``(
+ const Protocol & source_protocol);
+ `` [''''&raquo;''' [link boost_asio.reference.generic__raw_protocol.raw_protocol.overload2 more...]]``
+
+
+[section:overload1 generic::raw_protocol::raw_protocol (1 of 2 overloads)]
+
+
+Construct a protocol object for a specific address family and protocol.
+
+
+ raw_protocol(
+ int address_family,
+ int socket_protocol);
+
+
+
+[endsect]
+
+
+
+[section:overload2 generic::raw_protocol::raw_protocol (2 of 2 overloads)]
+
+
+Construct a generic protocol object from a specific protocol.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``>
+ raw_protocol(
+ const Protocol & source_protocol);
+
+
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[@c][bad\_cast Thrown if the source protocol is not raw-oriented. ]]
+
+]
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:socket generic::raw_protocol::socket]
+
+[indexterm2 socket..generic::raw_protocol]
+The generic socket type.
+
+
+ typedef basic_raw_socket< raw_protocol > socket;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.basic_raw_socket.broadcast [*broadcast]]]
+ [Socket option to permit sending of broadcast messages. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_raw_socket.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_raw_socket.debug [*debug]]]
+ [Socket option to enable socket-level debugging. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_raw_socket.do_not_route [*do_not_route]]]
+ [Socket option to prevent routing, use local interfaces only. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_raw_socket.enable_connection_aborted [*enable_connection_aborted]]]
+ [Socket option to report aborted connections on accept. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_raw_socket.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_raw_socket.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_raw_socket.keep_alive [*keep_alive]]]
+ [Socket option to send keep-alives. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_raw_socket.linger [*linger]]]
+ [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_raw_socket.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_socket is always the lowest layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_raw_socket.message_flags [*message_flags]]]
+ [Bitmask type for flags that can be passed to send and receive operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_raw_socket.native_handle_type [*native_handle_type]]]
+ [The native representation of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_raw_socket.native_type [*native_type]]]
+ [(Deprecated: Use native_handle_type.) The native representation of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_raw_socket.non_blocking_io [*non_blocking_io]]]
+ [(Deprecated: Use non_blocking().) IO control command to set the blocking mode of the socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_raw_socket.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_raw_socket.receive_buffer_size [*receive_buffer_size]]]
+ [Socket option for the receive buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_raw_socket.receive_low_watermark [*receive_low_watermark]]]
+ [Socket option for the receive low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_raw_socket.reuse_address [*reuse_address]]]
+ [Socket option to allow the socket to be bound to an address that is already in use. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_raw_socket.send_buffer_size [*send_buffer_size]]]
+ [Socket option for the send buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_raw_socket.send_low_watermark [*send_low_watermark]]]
+ [Socket option for the send low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_raw_socket.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_raw_socket.shutdown_type [*shutdown_type]]]
+ [Different ways a socket may be shutdown. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.assign [*assign]]]
+ [Assign an existing native socket to the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.async_connect [*async_connect]]]
+ [Start an asynchronous connect. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.async_receive [*async_receive]]]
+ [Start an asynchronous receive on a connected socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.async_receive_from [*async_receive_from]]]
+ [Start an asynchronous receive. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.async_send [*async_send]]]
+ [Start an asynchronous send on a connected socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.async_send_to [*async_send_to]]]
+ [Start an asynchronous send. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.at_mark [*at_mark]]]
+ [Determine whether the socket is at the out-of-band data mark. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.available [*available]]]
+ [Determine the number of bytes available for reading. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.basic_raw_socket [*basic_raw_socket]]]
+ [Construct a basic_raw_socket without opening it.
+
+ Construct and open a basic_raw_socket.
+
+ Construct a basic_raw_socket, opening it and binding it to the given local endpoint.
+
+ Construct a basic_raw_socket on an existing native socket.
+
+ Move-construct a basic_raw_socket from another.
+
+ Move-construct a basic_raw_socket from a socket of another protocol type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.bind [*bind]]]
+ [Bind the socket to the given local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.close [*close]]]
+ [Close the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.connect [*connect]]]
+ [Connect the socket to the specified endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.get_option [*get_option]]]
+ [Get an option from the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.io_control [*io_control]]]
+ [Perform an IO control command on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.is_open [*is_open]]]
+ [Determine whether the socket is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer.
+
+ Get a const reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.native [*native]]]
+ [(Deprecated: Use native_handle().) Get the native socket representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.native_handle [*native_handle]]]
+ [Get the native socket representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.native_non_blocking [*native_non_blocking]]]
+ [Gets the non-blocking mode of the native socket implementation.
+
+ Sets the non-blocking mode of the native socket implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.non_blocking [*non_blocking]]]
+ [Gets the non-blocking mode of the socket.
+
+ Sets the non-blocking mode of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.open [*open]]]
+ [Open the socket using the specified protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.operator_eq_ [*operator=]]]
+ [Move-assign a basic_raw_socket from another.
+
+ Move-assign a basic_raw_socket from a socket of another protocol type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.receive [*receive]]]
+ [Receive some data on a connected socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.receive_from [*receive_from]]]
+ [Receive raw data with the endpoint of the sender. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.remote_endpoint [*remote_endpoint]]]
+ [Get the remote endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.send [*send]]]
+ [Send some data on a connected socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.send_to [*send_to]]]
+ [Send raw data to the specified endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.set_option [*set_option]]]
+ [Set an option on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.shutdown [*shutdown]]]
+ [Disable sends or receives on the socket. ]
+ ]
+
+]
+
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.get_implementation [*get_implementation]]]
+ [Get the underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.get_service [*get_service]]]
+ [Get the service associated with the I/O object. ]
+ ]
+
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.max_connections [*max_connections]]]
+ [The maximum length of the queue of pending incoming connections. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.message_do_not_route [*message_do_not_route]]]
+ [Specify that the data should not be subject to routing. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.message_end_of_record [*message_end_of_record]]]
+ [Specifies that the data marks the end of a record. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.message_out_of_band [*message_out_of_band]]]
+ [Process out-of-band data. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.message_peek [*message_peek]]]
+ [Peek at incoming data without removing it from the input queue. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.implementation [*implementation]]]
+ [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_raw_socket.service [*service]]]
+ [(Deprecated: Use get_service().) The service associated with the I/O object. ]
+ ]
+
+]
+
+The [link boost_asio.reference.basic_raw_socket `basic_raw_socket`] class template provides asynchronous and blocking raw-oriented socket functionality.
+
+
+[heading Thread Safety]
+
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Unsafe.
+
+
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/raw_protocol.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:type generic::raw_protocol::type]
+
+[indexterm2 type..generic::raw_protocol]
+Obtain an identifier for the type of the protocol.
+
+
+ int type() const;
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:generic__seq_packet_protocol generic::seq_packet_protocol]
+
+
+Encapsulates the flags needed for a generic sequenced packet socket.
+
+
+ class seq_packet_protocol
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.generic__seq_packet_protocol.endpoint [*endpoint]]]
+ [The type of an endpoint. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.generic__seq_packet_protocol.socket [*socket]]]
+ [The generic socket type. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.generic__seq_packet_protocol.family [*family]]]
+ [Obtain an identifier for the protocol family. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__seq_packet_protocol.protocol [*protocol]]]
+ [Obtain an identifier for the protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__seq_packet_protocol.seq_packet_protocol [*seq_packet_protocol]]]
+ [Construct a protocol object for a specific address family and protocol.
+
+ Construct a generic protocol object from a specific protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__seq_packet_protocol.type [*type]]]
+ [Obtain an identifier for the type of the protocol. ]
+ ]
+
+]
+
+[heading Friends]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.generic__seq_packet_protocol.operator_not__eq_ [*operator!=]]]
+ [Compare two protocols for inequality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__seq_packet_protocol.operator_eq__eq_ [*operator==]]]
+ [Compare two protocols for equality. ]
+ ]
+
+]
+
+The [link boost_asio.reference.generic__seq_packet_protocol `generic::seq_packet_protocol`] class contains flags necessary for seq\_packet-oriented sockets of any address family and protocol.
+
+
+[heading Examples]
+
+Constructing using a native address family and socket protocol:
+
+ seq_packet_protocol p(AF_INET, IPPROTO_SCTP);
+
+
+
+
+
+[heading Thread Safety]
+
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Safe.
+
+
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/seq_packet_protocol.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[section:endpoint generic::seq_packet_protocol::endpoint]
+
+[indexterm2 endpoint..generic::seq_packet_protocol]
+The type of an endpoint.
+
+
+ typedef basic_endpoint< seq_packet_protocol > endpoint;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.generic__basic_endpoint.data_type [*data_type]]]
+ [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.generic__basic_endpoint.protocol_type [*protocol_type]]]
+ [The protocol type associated with the endpoint. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.basic_endpoint [*basic_endpoint]]]
+ [Default constructor.
+
+ Construct an endpoint from the specified socket address.
+
+ Construct an endpoint from the specific endpoint type.
+
+ Copy constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.capacity [*capacity]]]
+ [Get the capacity of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.data [*data]]]
+ [Get the underlying endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_eq_ [*operator=]]]
+ [Assign from another endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.protocol [*protocol]]]
+ [The protocol associated with the endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.resize [*resize]]]
+ [Set the underlying size of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.size [*size]]]
+ [Get the underlying size of the endpoint in the native type. ]
+ ]
+
+]
+
+[heading Friends]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_not__eq_ [*operator!=]]]
+ [Compare two endpoints for inequality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_lt_ [*operator<]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_lt__eq_ [*operator<=]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_eq__eq_ [*operator==]]]
+ [Compare two endpoints for equality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_gt_ [*operator>]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_gt__eq_ [*operator>=]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+]
+
+The [link boost_asio.reference.generic__basic_endpoint `generic::basic_endpoint`] class template describes an endpoint that may be associated with any socket type.
+
+
+[heading Remarks]
+
+The socket types sockaddr type must be able to fit into a `sockaddr_storage` structure.
+
+
+[heading Thread Safety]
+
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Unsafe.
+
+
+
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/seq_packet_protocol.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:family generic::seq_packet_protocol::family]
+
+[indexterm2 family..generic::seq_packet_protocol]
+Obtain an identifier for the protocol family.
+
+
+ int family() const;
+
+
+
+[endsect]
+
+
+
+[section:operator_not__eq_ generic::seq_packet_protocol::operator!=]
+
+[indexterm2 operator!=..generic::seq_packet_protocol]
+Compare two protocols for inequality.
+
+
+ friend bool operator!=(
+ const seq_packet_protocol & p1,
+ const seq_packet_protocol & p2);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/seq_packet_protocol.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_eq__eq_ generic::seq_packet_protocol::operator==]
+
+[indexterm2 operator==..generic::seq_packet_protocol]
+Compare two protocols for equality.
+
+
+ friend bool operator==(
+ const seq_packet_protocol & p1,
+ const seq_packet_protocol & p2);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/seq_packet_protocol.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:protocol generic::seq_packet_protocol::protocol]
+
+[indexterm2 protocol..generic::seq_packet_protocol]
+Obtain an identifier for the protocol.
+
+
+ int protocol() const;
+
+
+
+[endsect]
+
+
+[section:seq_packet_protocol generic::seq_packet_protocol::seq_packet_protocol]
+
+[indexterm2 seq_packet_protocol..generic::seq_packet_protocol]
+Construct a protocol object for a specific address family and protocol.
+
+
+ ``[link boost_asio.reference.generic__seq_packet_protocol.seq_packet_protocol.overload1 seq_packet_protocol]``(
+ int address_family,
+ int socket_protocol);
+ `` [''''&raquo;''' [link boost_asio.reference.generic__seq_packet_protocol.seq_packet_protocol.overload1 more...]]``
+
+
+Construct a generic protocol object from a specific protocol.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``>
+ ``[link boost_asio.reference.generic__seq_packet_protocol.seq_packet_protocol.overload2 seq_packet_protocol]``(
+ const Protocol & source_protocol);
+ `` [''''&raquo;''' [link boost_asio.reference.generic__seq_packet_protocol.seq_packet_protocol.overload2 more...]]``
+
+
+[section:overload1 generic::seq_packet_protocol::seq_packet_protocol (1 of 2 overloads)]
+
+
+Construct a protocol object for a specific address family and protocol.
+
+
+ seq_packet_protocol(
+ int address_family,
+ int socket_protocol);
+
+
+
+[endsect]
+
+
+
+[section:overload2 generic::seq_packet_protocol::seq_packet_protocol (2 of 2 overloads)]
+
+
+Construct a generic protocol object from a specific protocol.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``>
+ seq_packet_protocol(
+ const Protocol & source_protocol);
+
+
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[@c][bad\_cast Thrown if the source protocol is not based around sequenced packets. ]]
+
+]
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:socket generic::seq_packet_protocol::socket]
+
+[indexterm2 socket..generic::seq_packet_protocol]
+The generic socket type.
+
+
+ typedef basic_seq_packet_socket< seq_packet_protocol > socket;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.basic_seq_packet_socket.broadcast [*broadcast]]]
+ [Socket option to permit sending of broadcast messages. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_seq_packet_socket.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_seq_packet_socket.debug [*debug]]]
+ [Socket option to enable socket-level debugging. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_seq_packet_socket.do_not_route [*do_not_route]]]
+ [Socket option to prevent routing, use local interfaces only. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_seq_packet_socket.enable_connection_aborted [*enable_connection_aborted]]]
+ [Socket option to report aborted connections on accept. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_seq_packet_socket.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_seq_packet_socket.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_seq_packet_socket.keep_alive [*keep_alive]]]
+ [Socket option to send keep-alives. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_seq_packet_socket.linger [*linger]]]
+ [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_seq_packet_socket.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_socket is always the lowest layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_seq_packet_socket.message_flags [*message_flags]]]
+ [Bitmask type for flags that can be passed to send and receive operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_seq_packet_socket.native_handle_type [*native_handle_type]]]
+ [The native representation of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_seq_packet_socket.native_type [*native_type]]]
+ [(Deprecated: Use native_handle_type.) The native representation of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_seq_packet_socket.non_blocking_io [*non_blocking_io]]]
+ [(Deprecated: Use non_blocking().) IO control command to set the blocking mode of the socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_seq_packet_socket.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_seq_packet_socket.receive_buffer_size [*receive_buffer_size]]]
+ [Socket option for the receive buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_seq_packet_socket.receive_low_watermark [*receive_low_watermark]]]
+ [Socket option for the receive low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_seq_packet_socket.reuse_address [*reuse_address]]]
+ [Socket option to allow the socket to be bound to an address that is already in use. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_seq_packet_socket.send_buffer_size [*send_buffer_size]]]
+ [Socket option for the send buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_seq_packet_socket.send_low_watermark [*send_low_watermark]]]
+ [Socket option for the send low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_seq_packet_socket.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_seq_packet_socket.shutdown_type [*shutdown_type]]]
+ [Different ways a socket may be shutdown. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.assign [*assign]]]
+ [Assign an existing native socket to the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.async_connect [*async_connect]]]
+ [Start an asynchronous connect. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.async_receive [*async_receive]]]
+ [Start an asynchronous receive. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.async_send [*async_send]]]
+ [Start an asynchronous send. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.at_mark [*at_mark]]]
+ [Determine whether the socket is at the out-of-band data mark. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.available [*available]]]
+ [Determine the number of bytes available for reading. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.basic_seq_packet_socket [*basic_seq_packet_socket]]]
+ [Construct a basic_seq_packet_socket without opening it.
+
+ Construct and open a basic_seq_packet_socket.
+
+ Construct a basic_seq_packet_socket, opening it and binding it to the given local endpoint.
+
+ Construct a basic_seq_packet_socket on an existing native socket.
+
+ Move-construct a basic_seq_packet_socket from another.
+
+ Move-construct a basic_seq_packet_socket from a socket of another protocol type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.bind [*bind]]]
+ [Bind the socket to the given local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.close [*close]]]
+ [Close the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.connect [*connect]]]
+ [Connect the socket to the specified endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.get_option [*get_option]]]
+ [Get an option from the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.io_control [*io_control]]]
+ [Perform an IO control command on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.is_open [*is_open]]]
+ [Determine whether the socket is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer.
+
+ Get a const reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.native [*native]]]
+ [(Deprecated: Use native_handle().) Get the native socket representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.native_handle [*native_handle]]]
+ [Get the native socket representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.native_non_blocking [*native_non_blocking]]]
+ [Gets the non-blocking mode of the native socket implementation.
+
+ Sets the non-blocking mode of the native socket implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.non_blocking [*non_blocking]]]
+ [Gets the non-blocking mode of the socket.
+
+ Sets the non-blocking mode of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.open [*open]]]
+ [Open the socket using the specified protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.operator_eq_ [*operator=]]]
+ [Move-assign a basic_seq_packet_socket from another.
+
+ Move-assign a basic_seq_packet_socket from a socket of another protocol type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.receive [*receive]]]
+ [Receive some data on the socket.
+
+ Receive some data on a connected socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.remote_endpoint [*remote_endpoint]]]
+ [Get the remote endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.send [*send]]]
+ [Send some data on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.set_option [*set_option]]]
+ [Set an option on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.shutdown [*shutdown]]]
+ [Disable sends or receives on the socket. ]
+ ]
+
+]
+
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.get_implementation [*get_implementation]]]
+ [Get the underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.get_service [*get_service]]]
+ [Get the service associated with the I/O object. ]
+ ]
+
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.max_connections [*max_connections]]]
+ [The maximum length of the queue of pending incoming connections. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.message_do_not_route [*message_do_not_route]]]
+ [Specify that the data should not be subject to routing. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.message_end_of_record [*message_end_of_record]]]
+ [Specifies that the data marks the end of a record. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.message_out_of_band [*message_out_of_band]]]
+ [Process out-of-band data. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.message_peek [*message_peek]]]
+ [Peek at incoming data without removing it from the input queue. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.implementation [*implementation]]]
+ [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_seq_packet_socket.service [*service]]]
+ [(Deprecated: Use get_service().) The service associated with the I/O object. ]
+ ]
+
+]
+
+The [link boost_asio.reference.basic_seq_packet_socket `basic_seq_packet_socket`] class template provides asynchronous and blocking sequenced packet socket functionality.
+
+
+[heading Thread Safety]
+
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Unsafe.
+
+
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/seq_packet_protocol.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:type generic::seq_packet_protocol::type]
+
+[indexterm2 type..generic::seq_packet_protocol]
+Obtain an identifier for the type of the protocol.
+
+
+ int type() const;
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:generic__stream_protocol generic::stream_protocol]
+
+
+Encapsulates the flags needed for a generic stream-oriented socket.
+
+
+ class stream_protocol
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.generic__stream_protocol.endpoint [*endpoint]]]
+ [The type of an endpoint. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.generic__stream_protocol.iostream [*iostream]]]
+ [The generic socket iostream type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.generic__stream_protocol.socket [*socket]]]
+ [The generic socket type. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.generic__stream_protocol.family [*family]]]
+ [Obtain an identifier for the protocol family. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__stream_protocol.protocol [*protocol]]]
+ [Obtain an identifier for the protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__stream_protocol.stream_protocol [*stream_protocol]]]
+ [Construct a protocol object for a specific address family and protocol.
+
+ Construct a generic protocol object from a specific protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__stream_protocol.type [*type]]]
+ [Obtain an identifier for the type of the protocol. ]
+ ]
+
+]
+
+[heading Friends]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.generic__stream_protocol.operator_not__eq_ [*operator!=]]]
+ [Compare two protocols for inequality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__stream_protocol.operator_eq__eq_ [*operator==]]]
+ [Compare two protocols for equality. ]
+ ]
+
+]
+
+The [link boost_asio.reference.generic__stream_protocol `generic::stream_protocol`] class contains flags necessary for stream-oriented sockets of any address family and protocol.
+
+
+[heading Examples]
+
+Constructing using a native address family and socket protocol:
+
+ stream_protocol p(AF_INET, IPPROTO_TCP);
+
+
+Constructing from a specific protocol type:
+
+ stream_protocol p(boost::asio::ip::tcp::v4());
+
+
+
+
+
+[heading Thread Safety]
+
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Safe.
+
+
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/stream_protocol.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[section:endpoint generic::stream_protocol::endpoint]
+
+[indexterm2 endpoint..generic::stream_protocol]
+The type of an endpoint.
+
+
+ typedef basic_endpoint< stream_protocol > endpoint;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.generic__basic_endpoint.data_type [*data_type]]]
+ [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.generic__basic_endpoint.protocol_type [*protocol_type]]]
+ [The protocol type associated with the endpoint. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.basic_endpoint [*basic_endpoint]]]
+ [Default constructor.
+
+ Construct an endpoint from the specified socket address.
+
+ Construct an endpoint from the specific endpoint type.
+
+ Copy constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.capacity [*capacity]]]
+ [Get the capacity of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.data [*data]]]
+ [Get the underlying endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_eq_ [*operator=]]]
+ [Assign from another endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.protocol [*protocol]]]
+ [The protocol associated with the endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.resize [*resize]]]
+ [Set the underlying size of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.size [*size]]]
+ [Get the underlying size of the endpoint in the native type. ]
+ ]
+
+]
+
+[heading Friends]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_not__eq_ [*operator!=]]]
+ [Compare two endpoints for inequality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_lt_ [*operator<]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_lt__eq_ [*operator<=]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_eq__eq_ [*operator==]]]
+ [Compare two endpoints for equality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_gt_ [*operator>]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.generic__basic_endpoint.operator_gt__eq_ [*operator>=]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+]
+
+The [link boost_asio.reference.generic__basic_endpoint `generic::basic_endpoint`] class template describes an endpoint that may be associated with any socket type.
+
+
+[heading Remarks]
+
+The socket types sockaddr type must be able to fit into a `sockaddr_storage` structure.
+
+
+[heading Thread Safety]
+
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Unsafe.
+
+
+
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/stream_protocol.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:family generic::stream_protocol::family]
+
+[indexterm2 family..generic::stream_protocol]
+Obtain an identifier for the protocol family.
+
+
+ int family() const;
+
+
+
+[endsect]
+
+
+
+[section:iostream generic::stream_protocol::iostream]
+
+[indexterm2 iostream..generic::stream_protocol]
+The generic socket iostream type.
+
+
+ typedef basic_socket_iostream< stream_protocol > iostream;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_iostream.duration_type [*duration_type]]]
+ [The duration type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_iostream.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_iostream.time_type [*time_type]]]
+ [The time type. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket_iostream.basic_socket_iostream [*basic_socket_iostream]]]
+ [Construct a basic_socket_iostream without establishing a connection.
+
+ Establish a connection to an endpoint corresponding to a resolver query. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_iostream.close [*close]]]
+ [Close the connection. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_iostream.connect [*connect]]]
+ [Establish a connection to an endpoint corresponding to a resolver query. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_iostream.error [*error]]]
+ [Get the last error associated with the stream. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_iostream.expires_at [*expires_at]]]
+ [Get the stream's expiry time as an absolute time.
+
+ Set the stream's expiry time as an absolute time. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_iostream.expires_from_now [*expires_from_now]]]
+ [Get the timer's expiry time relative to now.
+
+ Set the stream's expiry time relative to now. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_iostream.rdbuf [*rdbuf]]]
+ [Return a pointer to the underlying streambuf. ]
+ ]
+
+]
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/stream_protocol.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_not__eq_ generic::stream_protocol::operator!=]
+
+[indexterm2 operator!=..generic::stream_protocol]
+Compare two protocols for inequality.
+
+
+ friend bool operator!=(
+ const stream_protocol & p1,
+ const stream_protocol & p2);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/stream_protocol.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:operator_eq__eq_ generic::stream_protocol::operator==]
+
+[indexterm2 operator==..generic::stream_protocol]
+Compare two protocols for equality.
+
+
+ friend bool operator==(
+ const stream_protocol & p1,
+ const stream_protocol & p2);
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/stream_protocol.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:protocol generic::stream_protocol::protocol]
+
+[indexterm2 protocol..generic::stream_protocol]
+Obtain an identifier for the protocol.
+
+
+ int protocol() const;
+
+
+
+[endsect]
+
+
+
+[section:socket generic::stream_protocol::socket]
+
+[indexterm2 socket..generic::stream_protocol]
+The generic socket type.
+
+
+ typedef basic_stream_socket< stream_protocol > socket;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.broadcast [*broadcast]]]
+ [Socket option to permit sending of broadcast messages. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.debug [*debug]]]
+ [Socket option to enable socket-level debugging. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.do_not_route [*do_not_route]]]
+ [Socket option to prevent routing, use local interfaces only. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.enable_connection_aborted [*enable_connection_aborted]]]
+ [Socket option to report aborted connections on accept. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.keep_alive [*keep_alive]]]
+ [Socket option to send keep-alives. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.linger [*linger]]]
+ [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_socket is always the lowest layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.message_flags [*message_flags]]]
+ [Bitmask type for flags that can be passed to send and receive operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.native_handle_type [*native_handle_type]]]
+ [The native representation of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.native_type [*native_type]]]
+ [(Deprecated: Use native_handle_type.) The native representation of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.non_blocking_io [*non_blocking_io]]]
+ [(Deprecated: Use non_blocking().) IO control command to set the blocking mode of the socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.receive_buffer_size [*receive_buffer_size]]]
+ [Socket option for the receive buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.receive_low_watermark [*receive_low_watermark]]]
+ [Socket option for the receive low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.reuse_address [*reuse_address]]]
+ [Socket option to allow the socket to be bound to an address that is already in use. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.send_buffer_size [*send_buffer_size]]]
+ [Socket option for the send buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.send_low_watermark [*send_low_watermark]]]
+ [Socket option for the send low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.shutdown_type [*shutdown_type]]]
+ [Different ways a socket may be shutdown. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.assign [*assign]]]
+ [Assign an existing native socket to the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_connect [*async_connect]]]
+ [Start an asynchronous connect. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_read_some [*async_read_some]]]
+ [Start an asynchronous read. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_receive [*async_receive]]]
+ [Start an asynchronous receive. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_send [*async_send]]]
+ [Start an asynchronous send. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_write_some [*async_write_some]]]
+ [Start an asynchronous write. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.at_mark [*at_mark]]]
+ [Determine whether the socket is at the out-of-band data mark. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.available [*available]]]
+ [Determine the number of bytes available for reading. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.basic_stream_socket [*basic_stream_socket]]]
+ [Construct a basic_stream_socket without opening it.
+
+ Construct and open a basic_stream_socket.
+
+ Construct a basic_stream_socket, opening it and binding it to the given local endpoint.
+
+ Construct a basic_stream_socket on an existing native socket.
+
+ Move-construct a basic_stream_socket from another.
+
+ Move-construct a basic_stream_socket from a socket of another protocol type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.bind [*bind]]]
+ [Bind the socket to the given local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.close [*close]]]
+ [Close the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.connect [*connect]]]
+ [Connect the socket to the specified endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.get_option [*get_option]]]
+ [Get an option from the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.io_control [*io_control]]]
+ [Perform an IO control command on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.is_open [*is_open]]]
+ [Determine whether the socket is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer.
+
+ Get a const reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.native [*native]]]
+ [(Deprecated: Use native_handle().) Get the native socket representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.native_handle [*native_handle]]]
+ [Get the native socket representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.native_non_blocking [*native_non_blocking]]]
+ [Gets the non-blocking mode of the native socket implementation.
+
+ Sets the non-blocking mode of the native socket implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.non_blocking [*non_blocking]]]
+ [Gets the non-blocking mode of the socket.
+
+ Sets the non-blocking mode of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.open [*open]]]
+ [Open the socket using the specified protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.operator_eq_ [*operator=]]]
+ [Move-assign a basic_stream_socket from another.
+
+ Move-assign a basic_stream_socket from a socket of another protocol type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.read_some [*read_some]]]
+ [Read some data from the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.receive [*receive]]]
+ [Receive some data on the socket.
+
+ Receive some data on a connected socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.remote_endpoint [*remote_endpoint]]]
+ [Get the remote endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.send [*send]]]
+ [Send some data on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.set_option [*set_option]]]
+ [Set an option on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.shutdown [*shutdown]]]
+ [Disable sends or receives on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.write_some [*write_some]]]
+ [Write some data to the socket. ]
+ ]
+
+]
+
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.get_implementation [*get_implementation]]]
+ [Get the underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.get_service [*get_service]]]
+ [Get the service associated with the I/O object. ]
+ ]
+
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.max_connections [*max_connections]]]
+ [The maximum length of the queue of pending incoming connections. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.message_do_not_route [*message_do_not_route]]]
+ [Specify that the data should not be subject to routing. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.message_end_of_record [*message_end_of_record]]]
+ [Specifies that the data marks the end of a record. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.message_out_of_band [*message_out_of_band]]]
+ [Process out-of-band data. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.message_peek [*message_peek]]]
+ [Peek at incoming data without removing it from the input queue. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.implementation [*implementation]]]
+ [(Deprecated: Use get_implementation().) The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.service [*service]]]
+ [(Deprecated: Use get_service().) The service associated with the I/O object. ]
+ ]
+
+]
+
+The [link boost_asio.reference.basic_stream_socket `basic_stream_socket`] class template provides asynchronous and blocking stream-oriented socket functionality.
+
+
+[heading Thread Safety]
+
+['Distinct] ['objects:] Safe.
+
+['Shared] ['objects:] Unsafe.
+
+
+
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/generic/stream_protocol.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+[section:stream_protocol generic::stream_protocol::stream_protocol]
+
+[indexterm2 stream_protocol..generic::stream_protocol]
+Construct a protocol object for a specific address family and protocol.
+
+
+ ``[link boost_asio.reference.generic__stream_protocol.stream_protocol.overload1 stream_protocol]``(
+ int address_family,
+ int socket_protocol);
+ `` [''''&raquo;''' [link boost_asio.reference.generic__stream_protocol.stream_protocol.overload1 more...]]``
+
+
+Construct a generic protocol object from a specific protocol.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``>
+ ``[link boost_asio.reference.generic__stream_protocol.stream_protocol.overload2 stream_protocol]``(
+ const Protocol & source_protocol);
+ `` [''''&raquo;''' [link boost_asio.reference.generic__stream_protocol.stream_protocol.overload2 more...]]``
+
+
+[section:overload1 generic::stream_protocol::stream_protocol (1 of 2 overloads)]
+
+
+Construct a protocol object for a specific address family and protocol.
+
+
+ stream_protocol(
+ int address_family,
+ int socket_protocol);
+
+
+
+[endsect]
+
+
+
+[section:overload2 generic::stream_protocol::stream_protocol (2 of 2 overloads)]
+
+
+Construct a generic protocol object from a specific protocol.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``>
+ stream_protocol(
+ const Protocol & source_protocol);
+
+
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[@c][bad\_cast Thrown if the source protocol is not stream-oriented. ]]
+
+]
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:type generic::stream_protocol::type]
+
+[indexterm2 type..generic::stream_protocol]
+Obtain an identifier for the type of the protocol.
+
+
+ int type() const;
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:handler_type handler_type]
+
+
+Default handler type traits provided for all handlers.
+
+
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``,
+ typename ``[link boost_asio.reference.Signature Signature]``>
+ struct handler_type
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.handler_type.type [*type]]]
+ [The handler type for the specific signature. ]
+
+ ]
+
+]
+
+The [link boost_asio.reference.handler_type `handler_type`] traits class is used for determining the concrete handler type to be used for an asynchronous operation. It allows the handler type to be determined at the point where the specific completion handler signature is known.
+
+This template may be specialised for user-defined handler types.
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/handler_type.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[section:type handler_type::type]
+
+[indexterm2 type..handler_type]
+The handler type for the specific signature.
+
+
+ typedef Handler type;
+
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/handler_type.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:handler_type_lt__Handler_&,_Signature__gt_ handler_type< Handler &, Signature >]
+
+
+
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``,
+ typename ``[link boost_asio.reference.Signature Signature]``>
+ struct handler_type< Handler &, Signature > :
+ public handler_type< Handler, Signature >
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/handler_type.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+[section:handler_type_lt__ReturnType_lp__rp_,_Signature__gt_ handler_type< ReturnType(), Signature >]
+
+
+
+ template<
+ typename ``[link boost_asio.reference.ReturnType ReturnType]``,
+ typename ``[link boost_asio.reference.Signature Signature]``>
+ struct handler_type< ReturnType(), Signature > :
+ public handler_type< ReturnType(*)(), Signature >
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/handler_type.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+[section:handler_type_lt__ReturnType_lp_Arg1_rp_,_Signature__gt_ handler_type< ReturnType(Arg1), Signature >]
+
+
+
+ template<
+ typename ``[link boost_asio.reference.ReturnType ReturnType]``,
+ typename ``[link boost_asio.reference.Arg1 Arg1]``,
+ typename ``[link boost_asio.reference.Signature Signature]``>
+ struct handler_type< ReturnType(Arg1), Signature > :
+ public handler_type< ReturnType(*)(Arg1), Signature >
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/handler_type.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+[section:handler_type_lt__ReturnType_lp_Arg1,_Arg2_rp_,_Signature__gt_ handler_type< ReturnType(Arg1, Arg2), Signature >]
+
+
+
+ template<
+ typename ``[link boost_asio.reference.ReturnType ReturnType]``,
+ typename ``[link boost_asio.reference.Arg1 Arg1]``,
+ typename ``[link boost_asio.reference.Arg2 Arg2]``,
+ typename ``[link boost_asio.reference.Signature Signature]``>
+ struct handler_type< ReturnType(Arg1, Arg2), Signature > :
+ public handler_type< ReturnType(*)(Arg1, Arg2), Signature >
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/handler_type.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+[section:handler_type_lt__ReturnType_lp_Arg1,_Arg2,_Arg3_rp_,_Signature__gt_ handler_type< ReturnType(Arg1, Arg2, Arg3), Signature >]
+
+
+
+ template<
+ typename ``[link boost_asio.reference.ReturnType ReturnType]``,
+ typename ``[link boost_asio.reference.Arg1 Arg1]``,
+ typename ``[link boost_asio.reference.Arg2 Arg2]``,
+ typename ``[link boost_asio.reference.Arg3 Arg3]``,
+ typename ``[link boost_asio.reference.Signature Signature]``>
+ struct handler_type< ReturnType(Arg1, Arg2, Arg3), Signature > :
+ public handler_type< ReturnType(*)(Arg1, Arg2, Arg3), Signature >
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/handler_type.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+[section:handler_type_lt__ReturnType_lp_Arg1,_Arg2,_Arg3,_Arg4_rp_,_Signature__gt_ handler_type< ReturnType(Arg1, Arg2, Arg3, Arg4), Signature >]
+
+
+
+ template<
+ typename ``[link boost_asio.reference.ReturnType ReturnType]``,
+ typename ``[link boost_asio.reference.Arg1 Arg1]``,
+ typename ``[link boost_asio.reference.Arg2 Arg2]``,
+ typename ``[link boost_asio.reference.Arg3 Arg3]``,
+ typename ``[link boost_asio.reference.Arg4 Arg4]``,
+ typename ``[link boost_asio.reference.Signature Signature]``>
+ struct handler_type< ReturnType(Arg1, Arg2, Arg3, Arg4), Signature > :
+ public handler_type< ReturnType(*)(Arg1, Arg2, Arg3, Arg4), Signature >
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/handler_type.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+[section:handler_type_lt__ReturnType_lp_Arg1,_Arg2,_Arg3,_Arg4,_Arg5_rp_,_Signature__gt_ handler_type< ReturnType(Arg1, Arg2, Arg3, Arg4, Arg5), Signature >]
+
+
+
+ template<
+ typename ``[link boost_asio.reference.ReturnType ReturnType]``,
+ typename ``[link boost_asio.reference.Arg1 Arg1]``,
+ typename ``[link boost_asio.reference.Arg2 Arg2]``,
+ typename ``[link boost_asio.reference.Arg3 Arg3]``,
+ typename ``[link boost_asio.reference.Arg4 Arg4]``,
+ typename ``[link boost_asio.reference.Arg5 Arg5]``,
+ typename ``[link boost_asio.reference.Signature Signature]``>
+ struct handler_type< ReturnType(Arg1, Arg2, Arg3, Arg4, Arg5), Signature > :
+ public handler_type< ReturnType(*)(Arg1, Arg2, Arg3, Arg4, Arg5), Signature >
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/handler_type.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+[section:handler_type_lt__const_Handler_&,_Signature__gt_ handler_type< const Handler &, Signature >]
+
+
+
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``,
+ typename ``[link boost_asio.reference.Signature Signature]``>
+ struct handler_type< const Handler &, Signature > :
+ public handler_type< Handler, Signature >
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/handler_type.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+[section:handler_type_lt__const_Handler,_Signature__gt_ handler_type< const Handler, Signature >]
+
+
+
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``,
+ typename ``[link boost_asio.reference.Signature Signature]``>
+ struct handler_type< const Handler, Signature > :
+ public handler_type< Handler, Signature >
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/handler_type.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+[section:handler_type_lt__const_volatile_Handler_&,_Signature__gt_ handler_type< const volatile Handler &, Signature >]
+
+
+
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``,
+ typename ``[link boost_asio.reference.Signature Signature]``>
+ struct handler_type< const volatile Handler &, Signature > :
+ public handler_type< Handler, Signature >
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/handler_type.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+[section:handler_type_lt__const_volatile_Handler,_Signature__gt_ handler_type< const volatile Handler, Signature >]
+
+
+
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``,
+ typename ``[link boost_asio.reference.Signature Signature]``>
+ struct handler_type< const volatile Handler, Signature > :
+ public handler_type< Handler, Signature >
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/handler_type.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+[section:handler_type_lt__volatile_Handler_&,_Signature__gt_ handler_type< volatile Handler &, Signature >]
+
+
+
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``,
+ typename ``[link boost_asio.reference.Signature Signature]``>
+ struct handler_type< volatile Handler &, Signature > :
+ public handler_type< Handler, Signature >
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/handler_type.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+[section:handler_type_lt__volatile_Handler,_Signature__gt_ handler_type< volatile Handler, Signature >]
+
+
+
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``,
+ typename ``[link boost_asio.reference.Signature Signature]``>
+ struct handler_type< volatile Handler, Signature > :
+ public handler_type< Handler, Signature >
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/handler_type.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+[section:has_service has_service]
+
+[indexterm1 has_service]
+
+ template<
+ typename ``[link boost_asio.reference.Service Service]``>
+ bool has_service(
+ io_service & ios);
 
 
 This function is used to determine whether the [link boost_asio.reference.io_service `io_service`] contains a service object corresponding to the given service type.
@@ -54202,7 +59849,7 @@
 
 A waitable timer is always in one of two states: "expired" or "not expired". If the `wait()` or `async_wait()` function is called on an expired timer, the wait operation will complete immediately.
 
-Most applications will use the boost::asio::waitable\_timer typedef.
+Most applications will use one of the [link boost_asio.reference.steady_timer `steady_timer`], [link boost_asio.reference.system_timer `system_timer`] or [link boost_asio.reference.high_resolution_timer `high_resolution_timer`] typedefs.
 
 
 [heading Remarks]
@@ -54212,20 +59859,20 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Examples]
   
-Performing a blocking wait:
+Performing a blocking wait (C++11):
 
    // Construct a timer without setting an expiry time.
- boost::asio::waitable_timer timer(io_service);
+ boost::asio::steady_timer timer(io_service);
 
    // Set an expiry time relative to now.
- timer.expires_from_now(boost::posix_time::seconds(5));
+ timer.expires_from_now(std::chrono::seconds(5));
 
    // Wait for the timer to expire.
    timer.wait();
@@ -54234,7 +59881,7 @@
 
 
 
-Performing an asynchronous wait:
+Performing an asynchronous wait (C++11):
 
    void handler(const boost::system::error_code& error)
    {
@@ -54247,8 +59894,8 @@
    ...
 
    // Construct a timer with an absolute expiry time.
- boost::asio::waitable_timer timer(io_service,
- boost::posix_time::time_from_string("2005-12-07 23:59:59.000"));
+ boost::asio::steady_timer timer(io_service,
+ std::chrono::steady_clock::now() + std::chrono::seconds(60));
 
    // Start an asynchronous wait.
    timer.async_wait(handler);
@@ -54257,7 +59904,7 @@
 
 
 
-[heading Changing an active waitable_timer's expiry time]
+[heading Changing an active waitable timer's expiry time]
   
 
 
@@ -54515,9 +60162,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Safe, with the specific exceptions of the `reset()` and `notify_fork()` functions. Calling `reset()` while there are unfinished `run()`, `run_one()`, `poll()` or `poll_one()` calls results in undefined behaviour. The `notify_fork()` function should not be called while any [link boost_asio.reference.io_service `io_service`] function, or any function on an I/O object that is associated with the [link boost_asio.reference.io_service `io_service`], is being called in another thread.
+['Shared] ['objects:] Safe, with the specific exceptions of the `reset()` and `notify_fork()` functions. Calling `reset()` while there are unfinished `run()`, `run_one()`, `poll()` or `poll_one()` calls results in undefined behaviour. The `notify_fork()` function should not be called while any [link boost_asio.reference.io_service `io_service`] function, or any function on an I/O object that is associated with the [link boost_asio.reference.io_service `io_service`], is being called in another thread.
 
 
 
@@ -54534,7 +60181,7 @@
 
 If an exception is thrown from a handler, the exception is allowed to propagate through the throwing thread's invocation of `run()`, `run_one()`, `poll()` or `poll_one()`. No other threads that are calling any of these functions are affected. It is then the responsibility of the application to catch the exception.
 
-After the exception has been caught, the `run()`, `run_one()`, `poll()` or `poll_one()` call may be restarted [*without] the need for an intervening call to `reset()`. This allows the thread to rejoin the [link boost_asio.reference.io_service `io_service`] object's thread pool without impacting any other threads in the pool.
+After the exception has been caught, the `run()`, `run_one()`, `poll()` or `poll_one()` call may be restarted ['without] the need for an intervening call to `reset()`. This allows the thread to rejoin the [link boost_asio.reference.io_service `io_service`] object's thread pool without impacting any other threads in the pool.
 
 For example:
 
@@ -54679,7 +60326,7 @@
 
   template<
       typename ``[link boost_asio.reference.CompletionHandler CompletionHandler]``>
- void dispatch(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` dispatch(
       CompletionHandler handler);
 
 
@@ -55095,7 +60742,7 @@
 
   template<
       typename ``[link boost_asio.reference.CompletionHandler CompletionHandler]``>
- void post(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` post(
       CompletionHandler handler);
 
 
@@ -55729,6 +61376,11 @@
   ]
   
   [
+ [[link boost_asio.reference.io_service__strand.running_in_this_thread [*running_in_this_thread]]]
+ [Determine whether the strand is running in the current thread. ]
+ ]
+
+ [
     [[link boost_asio.reference.io_service__strand.strand [*strand]]]
     [Constructor. ]
   ]
@@ -55794,9 +61446,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Safe.
+['Shared] ['objects:] Safe.
 
 
 
@@ -55816,7 +61468,7 @@
 
   template<
       typename ``[link boost_asio.reference.CompletionHandler CompletionHandler]``>
- void dispatch(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` dispatch(
       CompletionHandler handler);
 
 
@@ -55878,7 +61530,7 @@
 
   template<
       typename ``[link boost_asio.reference.CompletionHandler CompletionHandler]``>
- void post(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` post(
       CompletionHandler handler);
 
 
@@ -55907,6 +61559,27 @@
 
 
 
+[section:running_in_this_thread io_service::strand::running_in_this_thread]
+
+[indexterm2 running_in_this_thread..io_service::strand]
+Determine whether the strand is running in the current thread.
+
+
+ bool running_in_this_thread() const;
+
+
+
+[heading Return Value]
+
+`true` if the current thread is executing a handler that was submitted to the strand using `post()`, `dispatch()` or `wrap()`. Otherwise returns `false`.
+
+
+
+
+[endsect]
+
+
+
 [section:strand io_service::strand::strand]
 
 [indexterm2 strand..io_service::strand]
@@ -56277,9 +61950,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -57029,9 +62702,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -57889,9 +63562,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -58770,9 +64443,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -59455,9 +65128,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -59475,7 +65148,7 @@
 
   template<
       typename ``[link boost_asio.reference.ResolveHandler ResolveHandler]``>
- void ``[link boost_asio.reference.ip__basic_resolver.async_resolve.overload1 async_resolve]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.ip__basic_resolver.async_resolve.overload1 async_resolve]``(
       const query & q,
       ResolveHandler handler);
   `` [''''&raquo;''' [link boost_asio.reference.ip__basic_resolver.async_resolve.overload1 more...]]``
@@ -59486,7 +65159,7 @@
 
   template<
       typename ``[link boost_asio.reference.ResolveHandler ResolveHandler]``>
- void ``[link boost_asio.reference.ip__basic_resolver.async_resolve.overload2 async_resolve]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.ip__basic_resolver.async_resolve.overload2 async_resolve]``(
       const endpoint_type & e,
       ResolveHandler handler);
   `` [''''&raquo;''' [link boost_asio.reference.ip__basic_resolver.async_resolve.overload2 more...]]``
@@ -59500,7 +65173,7 @@
 
   template<
       typename ``[link boost_asio.reference.ResolveHandler ResolveHandler]``>
- void async_resolve(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_resolve(
       const query & q,
       ResolveHandler handler);
 
@@ -59548,7 +65221,7 @@
 
   template<
       typename ``[link boost_asio.reference.ResolveHandler ResolveHandler]``>
- void async_resolve(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_resolve(
       const endpoint_type & e,
       ResolveHandler handler);
 
@@ -59932,9 +65605,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -60078,9 +65751,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -60427,9 +66100,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -60707,9 +66380,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -61042,9 +66715,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -61127,9 +66800,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -61257,9 +66930,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -61820,9 +67493,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Safe.
+['Shared] ['objects:] Safe.
 
 
 
@@ -61976,9 +67649,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -62196,9 +67869,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -62437,7 +68110,9 @@
 
      Construct a basic_raw_socket on an existing native socket.
 
- Move-construct a basic_raw_socket from another. ]
+ Move-construct a basic_raw_socket from another.
+
+ Move-construct a basic_raw_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -62523,7 +68198,9 @@
   
   [
     [[link boost_asio.reference.basic_raw_socket.operator_eq_ [*operator=]]]
- [Move-assign a basic_raw_socket from another. ]
+ [Move-assign a basic_raw_socket from another.
+
+ Move-assign a basic_raw_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -62631,9 +68308,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -63257,7 +68934,7 @@
 
   template<
       typename ``[link boost_asio.reference.ResolveHandler ResolveHandler]``>
- void ``[link boost_asio.reference.ip__resolver_service.async_resolve.overload1 async_resolve]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.ip__resolver_service.async_resolve.overload1 async_resolve]``(
       implementation_type & impl,
       const query_type & query,
       ResolveHandler handler);
@@ -63269,7 +68946,7 @@
 
   template<
       typename ``[link boost_asio.reference.ResolveHandler ResolveHandler]``>
- void ``[link boost_asio.reference.ip__resolver_service.async_resolve.overload2 async_resolve]``(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.ip__resolver_service.async_resolve.overload2 async_resolve]``(
       implementation_type & impl,
       const endpoint_type & endpoint,
       ResolveHandler handler);
@@ -63284,7 +68961,7 @@
 
   template<
       typename ``[link boost_asio.reference.ResolveHandler ResolveHandler]``>
- void async_resolve(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_resolve(
       implementation_type & impl,
       const query_type & query,
       ResolveHandler handler);
@@ -63303,7 +68980,7 @@
 
   template<
       typename ``[link boost_asio.reference.ResolveHandler ResolveHandler]``>
- void async_resolve(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_resolve(
       implementation_type & impl,
       const endpoint_type & endpoint,
       ResolveHandler handler);
@@ -63547,9 +69224,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -63693,9 +69370,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -63895,9 +69572,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Safe.
+['Shared] ['objects:] Safe.
 
 
 
@@ -64102,7 +69779,9 @@
 
      Construct a basic_socket_acceptor on an existing native acceptor.
 
- Move-construct a basic_socket_acceptor from another. ]
+ Move-construct a basic_socket_acceptor from another.
+
+ Move-construct a basic_socket_acceptor from an acceptor of another protocol type. ]
   ]
   
   [
@@ -64181,7 +69860,9 @@
   
   [
     [[link boost_asio.reference.basic_socket_acceptor.operator_eq_ [*operator=]]]
- [Move-assign a basic_socket_acceptor from another. ]
+ [Move-assign a basic_socket_acceptor from another.
+
+ Move-assign a basic_socket_acceptor from an acceptor of another protocol type. ]
   ]
   
   [
@@ -64259,9 +69940,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Example]
@@ -64434,9 +70115,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -64800,9 +70481,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -65041,7 +70722,9 @@
 
      Construct a basic_stream_socket on an existing native socket.
 
- Move-construct a basic_stream_socket from another. ]
+ Move-construct a basic_stream_socket from another.
+
+ Move-construct a basic_stream_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -65127,7 +70810,9 @@
   
   [
     [[link boost_asio.reference.basic_stream_socket.operator_eq_ [*operator=]]]
- [Move-assign a basic_stream_socket from another. ]
+ [Move-assign a basic_stream_socket from another.
+
+ Move-assign a basic_stream_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -65237,9 +70922,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -65388,9 +71073,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Safe.
+['Shared] ['objects:] Safe.
 
 
 
@@ -65544,9 +71229,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -65764,9 +71449,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -66005,7 +71690,9 @@
 
      Construct a basic_datagram_socket on an existing native socket.
 
- Move-construct a basic_datagram_socket from another. ]
+ Move-construct a basic_datagram_socket from another.
+
+ Move-construct a basic_datagram_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -66091,7 +71778,9 @@
   
   [
     [[link boost_asio.reference.basic_datagram_socket.operator_eq_ [*operator=]]]
- [Move-assign a basic_datagram_socket from another. ]
+ [Move-assign a basic_datagram_socket from another.
+
+ Move-assign a basic_datagram_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -66199,9 +71888,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -66633,9 +72322,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -67260,9 +72949,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Safe.
+['Shared] ['objects:] Safe.
 
 
 
@@ -67407,9 +73096,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -67677,7 +73366,9 @@
 
      Construct a basic_datagram_socket on an existing native socket.
 
- Move-construct a basic_datagram_socket from another. ]
+ Move-construct a basic_datagram_socket from another.
+
+ Move-construct a basic_datagram_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -67763,7 +73454,9 @@
   
   [
     [[link boost_asio.reference.basic_datagram_socket.operator_eq_ [*operator=]]]
- [Move-assign a basic_datagram_socket from another. ]
+ [Move-assign a basic_datagram_socket from another.
+
+ Move-assign a basic_datagram_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -67871,9 +73564,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -67974,9 +73667,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Safe.
+['Shared] ['objects:] Safe.
 
 
 
@@ -68181,7 +73874,9 @@
 
      Construct a basic_socket_acceptor on an existing native acceptor.
 
- Move-construct a basic_socket_acceptor from another. ]
+ Move-construct a basic_socket_acceptor from another.
+
+ Move-construct a basic_socket_acceptor from an acceptor of another protocol type. ]
   ]
   
   [
@@ -68260,7 +73955,9 @@
   
   [
     [[link boost_asio.reference.basic_socket_acceptor.operator_eq_ [*operator=]]]
- [Move-assign a basic_socket_acceptor from another. ]
+ [Move-assign a basic_socket_acceptor from another.
+
+ Move-assign a basic_socket_acceptor from an acceptor of another protocol type. ]
   ]
   
   [
@@ -68338,9 +74035,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Example]
@@ -68504,9 +74201,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -68869,7 +74566,9 @@
 
      Construct a basic_stream_socket on an existing native socket.
 
- Move-construct a basic_stream_socket from another. ]
+ Move-construct a basic_stream_socket from another.
+
+ Move-construct a basic_stream_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -68955,7 +74654,9 @@
   
   [
     [[link boost_asio.reference.basic_stream_socket.operator_eq_ [*operator=]]]
- [Move-assign a basic_stream_socket from another. ]
+ [Move-assign a basic_stream_socket from another.
+
+ Move-assign a basic_stream_socket from a socket of another protocol type. ]
   ]
   
   [
@@ -69065,9 +74766,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -70001,9 +75702,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -70947,9 +76648,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -71657,9 +77358,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -71734,7 +77435,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_some(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_some(
       const MutableBufferSequence & buffers,
       ReadHandler handler);
 
@@ -71791,7 +77492,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write_some(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_some(
       const ConstBufferSequence & buffers,
       WriteHandler handler);
 
@@ -72750,9 +78451,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -73865,9 +79566,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -74074,7 +79775,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_some(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_some(
       implementation_type & impl,
       const MutableBufferSequence & buffers,
       ReadHandler handler);
@@ -74094,7 +79795,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write_some(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_some(
       implementation_type & impl,
       const ConstBufferSequence & buffers,
       WriteHandler handler);
@@ -74659,6 +80360,11 @@
   ]
   
   [
+ [[link boost_asio.reference.raw_socket_service.converting_move_construct [*converting_move_construct]]]
+ [Move-construct a new raw socket implementation from another protocol type. ]
+ ]
+
+ [
     [[link boost_asio.reference.raw_socket_service.destroy [*destroy]]]
     [Destroy a raw socket implementation. ]
   ]
@@ -74813,7 +80519,7 @@
 
   template<
       typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
- void async_connect(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
       implementation_type & impl,
       const endpoint_type & peer_endpoint,
       ConnectHandler handler);
@@ -74833,7 +80539,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive(
       implementation_type & impl,
       const MutableBufferSequence & buffers,
       socket_base::message_flags flags,
@@ -74854,7 +80560,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive_from(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive_from(
       implementation_type & impl,
       const MutableBufferSequence & buffers,
       endpoint_type & sender_endpoint,
@@ -74876,7 +80582,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send(
       implementation_type & impl,
       const ConstBufferSequence & buffers,
       socket_base::message_flags flags,
@@ -74897,7 +80603,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send_to(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send_to(
       implementation_type & impl,
       const ConstBufferSequence & buffers,
       const endpoint_type & destination,
@@ -75021,6 +80727,25 @@
 
 
 
+[section:converting_move_construct raw_socket_service::converting_move_construct]
+
+[indexterm2 converting_move_construct..raw_socket_service]
+Move-construct a new raw socket implementation from another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``>
+ void converting_move_construct(
+ implementation_type & impl,
+ typename raw_socket_service< Protocol1 >::implementation_type & other_impl,
+ typename enable_if< is_convertible< Protocol1, Protocol >::value >::type * = 0);
+
+
+
+[endsect]
+
+
+
 [section:destroy raw_socket_service::destroy]
 
 [indexterm2 destroy..raw_socket_service]
@@ -76250,7 +81975,7 @@
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
   std::size_t ``[link boost_asio.reference.read_at.overload1 read_at]``(
       SyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const MutableBufferSequence & buffers);
   `` [''''&raquo;''' [link boost_asio.reference.read_at.overload1 more...]]``
 
@@ -76259,7 +81984,7 @@
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
   std::size_t ``[link boost_asio.reference.read_at.overload2 read_at]``(
       SyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const MutableBufferSequence & buffers,
       boost::system::error_code & ec);
   `` [''''&raquo;''' [link boost_asio.reference.read_at.overload2 more...]]``
@@ -76270,7 +81995,7 @@
       typename CompletionCondition>
   std::size_t ``[link boost_asio.reference.read_at.overload3 read_at]``(
       SyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const MutableBufferSequence & buffers,
       CompletionCondition completion_condition);
   `` [''''&raquo;''' [link boost_asio.reference.read_at.overload3 more...]]``
@@ -76281,7 +82006,7 @@
       typename CompletionCondition>
   std::size_t ``[link boost_asio.reference.read_at.overload4 read_at]``(
       SyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const MutableBufferSequence & buffers,
       CompletionCondition completion_condition,
       boost::system::error_code & ec);
@@ -76292,7 +82017,7 @@
       typename Allocator>
   std::size_t ``[link boost_asio.reference.read_at.overload5 read_at]``(
       SyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b);
   `` [''''&raquo;''' [link boost_asio.reference.read_at.overload5 more...]]``
 
@@ -76301,7 +82026,7 @@
       typename Allocator>
   std::size_t ``[link boost_asio.reference.read_at.overload6 read_at]``(
       SyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b,
       boost::system::error_code & ec);
   `` [''''&raquo;''' [link boost_asio.reference.read_at.overload6 more...]]``
@@ -76312,7 +82037,7 @@
       typename CompletionCondition>
   std::size_t ``[link boost_asio.reference.read_at.overload7 read_at]``(
       SyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b,
       CompletionCondition completion_condition);
   `` [''''&raquo;''' [link boost_asio.reference.read_at.overload7 more...]]``
@@ -76323,7 +82048,7 @@
       typename CompletionCondition>
   std::size_t ``[link boost_asio.reference.read_at.overload8 read_at]``(
       SyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b,
       CompletionCondition completion_condition,
       boost::system::error_code & ec);
@@ -76347,7 +82072,7 @@
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
   std::size_t read_at(
       SyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const MutableBufferSequence & buffers);
 
 
@@ -76430,7 +82155,7 @@
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
   std::size_t read_at(
       SyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const MutableBufferSequence & buffers,
       boost::system::error_code & ec);
 
@@ -76508,7 +82233,7 @@
       typename CompletionCondition>
   std::size_t read_at(
       SyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const MutableBufferSequence & buffers,
       CompletionCondition completion_condition);
 
@@ -76594,7 +82319,7 @@
       typename CompletionCondition>
   std::size_t read_at(
       SyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const MutableBufferSequence & buffers,
       CompletionCondition completion_condition,
       boost::system::error_code & ec);
@@ -76661,7 +82386,7 @@
       typename Allocator>
   std::size_t read_at(
       SyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b);
 
 
@@ -76731,7 +82456,7 @@
       typename Allocator>
   std::size_t read_at(
       SyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b,
       boost::system::error_code & ec);
 
@@ -76795,7 +82520,7 @@
       typename CompletionCondition>
   std::size_t read_at(
       SyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b,
       CompletionCondition completion_condition);
 
@@ -76867,7 +82592,7 @@
       typename CompletionCondition>
   std::size_t read_at(
       SyncRandomAccessReadDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b,
       CompletionCondition completion_condition,
       boost::system::error_code & ec);
@@ -76992,7 +82717,7 @@
       SyncReadStream & s,
       boost::asio::basic_streambuf< Allocator > & b,
       MatchCondition match_condition,
- typename boost::enable_if< is_match_condition< MatchCondition > >::type * = 0);
+ typename enable_if< is_match_condition< MatchCondition >::value >::type * = 0);
   `` [''''&raquo;''' [link boost_asio.reference.read_until.overload7 more...]]``
 
   template<
@@ -77004,7 +82729,7 @@
       boost::asio::basic_streambuf< Allocator > & b,
       MatchCondition match_condition,
       boost::system::error_code & ec,
- typename boost::enable_if< is_match_condition< MatchCondition > >::type * = 0);
+ typename enable_if< is_match_condition< MatchCondition >::value >::type * = 0);
   `` [''''&raquo;''' [link boost_asio.reference.read_until.overload8 more...]]``
 
 [heading Requirements]
@@ -77490,7 +83215,7 @@
       SyncReadStream & s,
       boost::asio::basic_streambuf< Allocator > & b,
       MatchCondition match_condition,
- typename boost::enable_if< is_match_condition< MatchCondition > >::type * = 0);
+ typename enable_if< is_match_condition< MatchCondition >::value >::type * = 0);
 
 
 This function is used to read data into the specified streambuf until a user-defined match condition function object, when applied to the data contained in the streambuf, indicates a successful match. The call will block until one of the following conditions is true:
@@ -77624,7 +83349,7 @@
       boost::asio::basic_streambuf< Allocator > & b,
       MatchCondition match_condition,
       boost::system::error_code & ec,
- typename boost::enable_if< is_match_condition< MatchCondition > >::type * = 0);
+ typename enable_if< is_match_condition< MatchCondition >::value >::type * = 0);
 
 
 This function is used to read data into the specified streambuf until a user-defined match condition function object, when applied to the data contained in the streambuf, indicates a successful match. The call will block until one of the following conditions is true:
@@ -77794,6 +83519,11 @@
   ]
   
   [
+ [[link boost_asio.reference.seq_packet_socket_service.converting_move_construct [*converting_move_construct]]]
+ [Move-construct a new sequenced packet socket implementation from another protocol type. ]
+ ]
+
+ [
     [[link boost_asio.reference.seq_packet_socket_service.destroy [*destroy]]]
     [Destroy a sequenced packet socket implementation. ]
   ]
@@ -77938,7 +83668,7 @@
 
   template<
       typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
- void async_connect(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
       implementation_type & impl,
       const endpoint_type & peer_endpoint,
       ConnectHandler handler);
@@ -78105,6 +83835,25 @@
 
 
 
+[section:converting_move_construct seq_packet_socket_service::converting_move_construct]
+
+[indexterm2 converting_move_construct..seq_packet_socket_service]
+Move-construct a new sequenced packet socket implementation from another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``>
+ void converting_move_construct(
+ implementation_type & impl,
+ typename seq_packet_socket_service< Protocol1 >::implementation_type & other_impl,
+ typename enable_if< is_convertible< Protocol1, Protocol >::value >::type * = 0);
+
+
+
+[endsect]
+
+
+
 [section:destroy seq_packet_socket_service::destroy]
 
 [indexterm2 destroy..seq_packet_socket_service]
@@ -78815,9 +84564,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -79745,7 +85494,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_some(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_some(
       implementation_type & impl,
       const MutableBufferSequence & buffers,
       ReadHandler handler);
@@ -79765,7 +85514,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write_some(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_some(
       implementation_type & impl,
       const ConstBufferSequence & buffers,
       WriteHandler handler);
@@ -80293,9 +86042,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Example]
@@ -80474,7 +86223,7 @@
 
   template<
       typename ``[link boost_asio.reference.SignalHandler SignalHandler]``>
- void async_wait(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_wait(
       implementation_type & impl,
       SignalHandler handler);
 
@@ -80725,6 +86474,11 @@
   ]
   
   [
+ [[link boost_asio.reference.socket_acceptor_service.converting_move_construct [*converting_move_construct]]]
+ [Move-construct a new socket acceptor implementation from another protocol type. ]
+ ]
+
+ [
     [[link boost_asio.reference.socket_acceptor_service.destroy [*destroy]]]
     [Destroy a socket acceptor implementation. ]
   ]
@@ -80835,12 +86589,14 @@
 
 
   template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
       typename ``[link boost_asio.reference.SocketService SocketService]``>
   boost::system::error_code accept(
       implementation_type & impl,
- basic_socket< protocol_type, SocketService > & peer,
+ basic_socket< Protocol1, SocketService > & peer,
       endpoint_type * peer_endpoint,
- boost::system::error_code & ec);
+ boost::system::error_code & ec,
+ typename enable_if< is_convertible< Protocol, Protocol1 >::value >::type * = 0);
 
 
 
@@ -80873,13 +86629,15 @@
 
 
   template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``,
       typename ``[link boost_asio.reference.SocketService SocketService]``,
       typename ``[link boost_asio.reference.AcceptHandler AcceptHandler]``>
- void async_accept(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_accept(
       implementation_type & impl,
- basic_socket< protocol_type, SocketService > & peer,
+ basic_socket< Protocol1, SocketService > & peer,
       endpoint_type * peer_endpoint,
- AcceptHandler handler);
+ AcceptHandler handler,
+ typename enable_if< is_convertible< Protocol, Protocol1 >::value >::type * = 0);
 
 
 
@@ -80951,6 +86709,25 @@
 
 
 
+[section:converting_move_construct socket_acceptor_service::converting_move_construct]
+
+[indexterm2 converting_move_construct..socket_acceptor_service]
+Move-construct a new socket acceptor implementation from another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``>
+ void converting_move_construct(
+ implementation_type & impl,
+ typename socket_acceptor_service< Protocol1 >::implementation_type & other_impl,
+ typename enable_if< is_convertible< Protocol1, Protocol >::value >::type * = 0);
+
+
+
+[endsect]
+
+
+
 [section:destroy socket_acceptor_service::destroy]
 
 [indexterm2 destroy..socket_acceptor_service]
@@ -82367,6 +88144,122 @@
 
 [endsect]
 
+[section:spawn spawn]
+
+[indexterm1 spawn]
+
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``,
+ typename Function>
+ void ``[link boost_asio.reference.spawn.overload1 spawn]``(
+ Handler handler,
+ Function function,
+ const boost::coroutines::attributes & attributes = boost::coroutines::attributes());
+ `` [''''&raquo;''' [link boost_asio.reference.spawn.overload1 more...]]``
+
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``,
+ typename Function>
+ void ``[link boost_asio.reference.spawn.overload2 spawn]``(
+ basic_yield_context< Handler > ctx,
+ Function function,
+ const boost::coroutines::attributes & attributes = boost::coroutines::attributes());
+ `` [''''&raquo;''' [link boost_asio.reference.spawn.overload2 more...]]``
+
+ template<
+ typename Function>
+ void ``[link boost_asio.reference.spawn.overload3 spawn]``(
+ boost::asio::io_service::strand strand,
+ Function function,
+ const boost::coroutines::attributes & attributes = boost::coroutines::attributes());
+ `` [''''&raquo;''' [link boost_asio.reference.spawn.overload3 more...]]``
+
+ template<
+ typename Function>
+ void ``[link boost_asio.reference.spawn.overload4 spawn]``(
+ boost::asio::io_service & io_service,
+ Function function,
+ const boost::coroutines::attributes & attributes = boost::coroutines::attributes());
+ `` [''''&raquo;''' [link boost_asio.reference.spawn.overload4 more...]]``
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/spawn.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[section:overload1 spawn (1 of 4 overloads)]
+
+
+
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``,
+ typename Function>
+ void spawn(
+ Handler handler,
+ Function function,
+ const boost::coroutines::attributes & attributes = boost::coroutines::attributes());
+
+
+
+[endsect]
+
+
+
+[section:overload2 spawn (2 of 4 overloads)]
+
+
+
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``,
+ typename Function>
+ void spawn(
+ basic_yield_context< Handler > ctx,
+ Function function,
+ const boost::coroutines::attributes & attributes = boost::coroutines::attributes());
+
+
+
+[endsect]
+
+
+
+[section:overload3 spawn (3 of 4 overloads)]
+
+
+
+ template<
+ typename Function>
+ void spawn(
+ boost::asio::io_service::strand strand,
+ Function function,
+ const boost::coroutines::attributes & attributes = boost::coroutines::attributes());
+
+
+
+[endsect]
+
+
+
+[section:overload4 spawn (4 of 4 overloads)]
+
+
+
+ template<
+ typename Function>
+ void spawn(
+ boost::asio::io_service & io_service,
+ Function function,
+ const boost::coroutines::attributes & attributes = boost::coroutines::attributes());
+
+
+
+[endsect]
+
+
+[endsect]
+
 [section:ssl__context ssl::context]
 
 
@@ -82429,11 +88322,21 @@
   [[Name][Description]]
 
   [
+ [[link boost_asio.reference.ssl__context.add_certificate_authority [*add_certificate_authority]]]
+ [Add certification authority for performing verification. ]
+ ]
+
+ [
     [[link boost_asio.reference.ssl__context.add_verify_path [*add_verify_path]]]
     [Add a directory containing certificate authority files to be used for performing verification. ]
   ]
   
   [
+ [[link boost_asio.reference.ssl__context.clear_options [*clear_options]]]
+ [Clear options on the context. ]
+ ]
+
+ [
     [[link boost_asio.reference.ssl__context.context [*context]]]
     [Constructor.
 
@@ -82483,11 +88386,26 @@
   ]
   
   [
+ [[link boost_asio.reference.ssl__context.set_verify_depth [*set_verify_depth]]]
+ [Set the peer verification depth. ]
+ ]
+
+ [
     [[link boost_asio.reference.ssl__context.set_verify_mode [*set_verify_mode]]]
     [Set the peer verification mode. ]
   ]
   
   [
+ [[link boost_asio.reference.ssl__context.use_certificate [*use_certificate]]]
+ [Use a certificate from a memory buffer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context.use_certificate_chain [*use_certificate_chain]]]
+ [Use a certificate chain from a memory buffer. ]
+ ]
+
+ [
     [[link boost_asio.reference.ssl__context.use_certificate_chain_file [*use_certificate_chain_file]]]
     [Use a certificate chain from a file. ]
   ]
@@ -82498,16 +88416,31 @@
   ]
   
   [
+ [[link boost_asio.reference.ssl__context.use_private_key [*use_private_key]]]
+ [Use a private key from a memory buffer. ]
+ ]
+
+ [
     [[link boost_asio.reference.ssl__context.use_private_key_file [*use_private_key_file]]]
     [Use a private key from a file. ]
   ]
   
   [
+ [[link boost_asio.reference.ssl__context.use_rsa_private_key [*use_rsa_private_key]]]
+ [Use an RSA private key from a memory buffer. ]
+ ]
+
+ [
     [[link boost_asio.reference.ssl__context.use_rsa_private_key_file [*use_rsa_private_key_file]]]
     [Use an RSA private key from a file. ]
   ]
   
   [
+ [[link boost_asio.reference.ssl__context.use_tmp_dh [*use_tmp_dh]]]
+ [Use the specified memory buffer to obtain the temporary Diffie-Hellman parameters. ]
+ ]
+
+ [
     [[link boost_asio.reference.ssl__context.use_tmp_dh_file [*use_tmp_dh_file]]]
     [Use the specified file to obtain the temporary Diffie-Hellman parameters. ]
   ]
@@ -82529,6 +88462,11 @@
   ]
 
   [
+ [[link boost_asio.reference.ssl__context.no_compression [*no_compression]]]
+ [Disable compression. Compression is disabled by default. ]
+ ]
+
+ [
     [[link boost_asio.reference.ssl__context.no_sslv2 [*no_sslv2]]]
     [Disable SSL v2. ]
   ]
@@ -82556,6 +88494,104 @@
 
 [*Convenience header: ][^boost/asio/ssl.hpp]
 
+[section:add_certificate_authority ssl::context::add_certificate_authority]
+
+[indexterm2 add_certificate_authority..ssl::context]
+Add certification authority for performing verification.
+
+
+ void ``[link boost_asio.reference.ssl__context.add_certificate_authority.overload1 add_certificate_authority]``(
+ const const_buffer & ca);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__context.add_certificate_authority.overload1 more...]]``
+
+ boost::system::error_code ``[link boost_asio.reference.ssl__context.add_certificate_authority.overload2 add_certificate_authority]``(
+ const const_buffer & ca,
+ boost::system::error_code & ec);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__context.add_certificate_authority.overload2 more...]]``
+
+
+[section:overload1 ssl::context::add_certificate_authority (1 of 2 overloads)]
+
+
+Add certification authority for performing verification.
+
+
+ void add_certificate_authority(
+ const const_buffer & ca);
+
+
+This function is used to add one trusted certification authority from a memory buffer.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[ca][The buffer containing the certification authority certificate. The certificate must use the PEM format.]]
+
+]
+
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+
+[heading Remarks]
+
+Calls `SSL_CTX_get_cert_store` and `X509_STORE_add_cert`.
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 ssl::context::add_certificate_authority (2 of 2 overloads)]
+
+
+Add certification authority for performing verification.
+
+
+ boost::system::error_code add_certificate_authority(
+ const const_buffer & ca,
+ boost::system::error_code & ec);
+
+
+This function is used to add one trusted certification authority from a memory buffer.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[ca][The buffer containing the certification authority certificate. The certificate must use the PEM format.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+
+[heading Remarks]
+
+Calls `SSL_CTX_get_cert_store` and `X509_STORE_add_cert`.
+
+
+
+
+[endsect]
+
+
+[endsect]
+
 [section:add_verify_path ssl::context::add_verify_path]
 
 [indexterm2 add_verify_path..ssl::context]
@@ -82654,6 +88690,104 @@
 
 [endsect]
 
+[section:clear_options ssl::context::clear_options]
+
+[indexterm2 clear_options..ssl::context]
+Clear options on the context.
+
+
+ void ``[link boost_asio.reference.ssl__context.clear_options.overload1 clear_options]``(
+ options o);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__context.clear_options.overload1 more...]]``
+
+ boost::system::error_code ``[link boost_asio.reference.ssl__context.clear_options.overload2 clear_options]``(
+ options o,
+ boost::system::error_code & ec);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__context.clear_options.overload2 more...]]``
+
+
+[section:overload1 ssl::context::clear_options (1 of 2 overloads)]
+
+
+Clear options on the context.
+
+
+ void clear_options(
+ options o);
+
+
+This function may be used to configure the SSL options used by the context.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[o][A bitmask of options. The available option values are defined in the [link boost_asio.reference.ssl__context_base `ssl::context_base`] class. The specified options, if currently enabled on the context, are cleared.]]
+
+]
+
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+
+[heading Remarks]
+
+Calls `SSL_CTX_clear_options`.
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 ssl::context::clear_options (2 of 2 overloads)]
+
+
+Clear options on the context.
+
+
+ boost::system::error_code clear_options(
+ options o,
+ boost::system::error_code & ec);
+
+
+This function may be used to configure the SSL options used by the context.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[o][A bitmask of options. The available option values are defined in the [link boost_asio.reference.ssl__context_base `ssl::context_base`] class. The specified options, if currently enabled on the context, are cleared.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+
+[heading Remarks]
+
+Calls `SSL_CTX_clear_options`.
+
+
+
+
+[endsect]
+
+
+[endsect]
+
 [section:context ssl::context::context]
 
 [indexterm2 context..ssl::context]
@@ -82955,6 +89089,12 @@
 [indexterm2 sslv23..ssl::context]
 [indexterm2 sslv23_client..ssl::context]
 [indexterm2 sslv23_server..ssl::context]
+[indexterm2 tlsv11..ssl::context]
+[indexterm2 tlsv11_client..ssl::context]
+[indexterm2 tlsv11_server..ssl::context]
+[indexterm2 tlsv12..ssl::context]
+[indexterm2 tlsv12_client..ssl::context]
+[indexterm2 tlsv12_server..ssl::context]
 
 [heading Values]
 [variablelist
@@ -83019,6 +89159,36 @@
     [SSL/TLS server. ]
   ]
 
+ [
+ [tlsv11]
+ [Generic TLS version 1.1. ]
+ ]
+
+ [
+ [tlsv11_client]
+ [TLS version 1.1 client. ]
+ ]
+
+ [
+ [tlsv11_server]
+ [TLS version 1.1 server. ]
+ ]
+
+ [
+ [tlsv12]
+ [Generic TLS version 1.2. ]
+ ]
+
+ [
+ [tlsv12_client]
+ [TLS version 1.2 client. ]
+ ]
+
+ [
+ [tlsv12_server]
+ [TLS version 1.2 server. ]
+ ]
+
 ]
 
 
@@ -83064,6 +89234,20 @@
 
 
 
+[section:no_compression ssl::context::no_compression]
+
+[indexterm2 no_compression..ssl::context]
+Disable compression. Compression is disabled by default.
+
+
+ static const long no_compression = implementation_defined;
+
+
+
+[endsect]
+
+
+
 [section:no_sslv2 ssl::context::no_sslv2]
 
 [indexterm2 no_sslv2..ssl::context]
@@ -83617,6 +89801,104 @@
 
 [endsect]
 
+[section:set_verify_depth ssl::context::set_verify_depth]
+
+[indexterm2 set_verify_depth..ssl::context]
+Set the peer verification depth.
+
+
+ void ``[link boost_asio.reference.ssl__context.set_verify_depth.overload1 set_verify_depth]``(
+ int depth);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__context.set_verify_depth.overload1 more...]]``
+
+ boost::system::error_code ``[link boost_asio.reference.ssl__context.set_verify_depth.overload2 set_verify_depth]``(
+ int depth,
+ boost::system::error_code & ec);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__context.set_verify_depth.overload2 more...]]``
+
+
+[section:overload1 ssl::context::set_verify_depth (1 of 2 overloads)]
+
+
+Set the peer verification depth.
+
+
+ void set_verify_depth(
+ int depth);
+
+
+This function may be used to configure the maximum verification depth allowed by the context.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[depth][Maximum depth for the certificate chain verification that shall be allowed.]]
+
+]
+
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+
+[heading Remarks]
+
+Calls `SSL_CTX_set_verify_depth`.
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 ssl::context::set_verify_depth (2 of 2 overloads)]
+
+
+Set the peer verification depth.
+
+
+ boost::system::error_code set_verify_depth(
+ int depth,
+ boost::system::error_code & ec);
+
+
+This function may be used to configure the maximum verification depth allowed by the context.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[depth][Maximum depth for the certificate chain verification that shall be allowed.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+
+[heading Remarks]
+
+Calls `SSL_CTX_set_verify_depth`.
+
+
+
+
+[endsect]
+
+
+[endsect]
+
 [section:set_verify_mode ssl::context::set_verify_mode]
 
 [indexterm2 set_verify_mode..ssl::context]
@@ -83729,6 +90011,210 @@
 [endsect]
 
 
+[section:use_certificate ssl::context::use_certificate]
+
+[indexterm2 use_certificate..ssl::context]
+Use a certificate from a memory buffer.
+
+
+ void ``[link boost_asio.reference.ssl__context.use_certificate.overload1 use_certificate]``(
+ const const_buffer & certificate,
+ file_format format);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__context.use_certificate.overload1 more...]]``
+
+ boost::system::error_code ``[link boost_asio.reference.ssl__context.use_certificate.overload2 use_certificate]``(
+ const const_buffer & certificate,
+ file_format format,
+ boost::system::error_code & ec);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__context.use_certificate.overload2 more...]]``
+
+
+[section:overload1 ssl::context::use_certificate (1 of 2 overloads)]
+
+
+Use a certificate from a memory buffer.
+
+
+ void use_certificate(
+ const const_buffer & certificate,
+ file_format format);
+
+
+This function is used to load a certificate into the context from a buffer.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[certificate][The buffer containing the certificate.]]
+
+[[format][The certificate format (ASN.1 or PEM).]]
+
+]
+
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+
+[heading Remarks]
+
+Calls `SSL_CTX_use_certificate` or SSL\_CTX\_use\_certificate\_ASN1.
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 ssl::context::use_certificate (2 of 2 overloads)]
+
+
+Use a certificate from a memory buffer.
+
+
+ boost::system::error_code use_certificate(
+ const const_buffer & certificate,
+ file_format format,
+ boost::system::error_code & ec);
+
+
+This function is used to load a certificate into the context from a buffer.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[certificate][The buffer containing the certificate.]]
+
+[[format][The certificate format (ASN.1 or PEM).]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+
+[heading Remarks]
+
+Calls `SSL_CTX_use_certificate` or SSL\_CTX\_use\_certificate\_ASN1.
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+[section:use_certificate_chain ssl::context::use_certificate_chain]
+
+[indexterm2 use_certificate_chain..ssl::context]
+Use a certificate chain from a memory buffer.
+
+
+ void ``[link boost_asio.reference.ssl__context.use_certificate_chain.overload1 use_certificate_chain]``(
+ const const_buffer & chain);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__context.use_certificate_chain.overload1 more...]]``
+
+ boost::system::error_code ``[link boost_asio.reference.ssl__context.use_certificate_chain.overload2 use_certificate_chain]``(
+ const const_buffer & chain,
+ boost::system::error_code & ec);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__context.use_certificate_chain.overload2 more...]]``
+
+
+[section:overload1 ssl::context::use_certificate_chain (1 of 2 overloads)]
+
+
+Use a certificate chain from a memory buffer.
+
+
+ void use_certificate_chain(
+ const const_buffer & chain);
+
+
+This function is used to load a certificate chain into the context from a buffer.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[chain][The buffer containing the certificate chain. The certificate chain must use the PEM format.]]
+
+]
+
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+
+[heading Remarks]
+
+Calls `SSL_CTX_use_certificate` and SSL\_CTX\_add\_extra\_chain\_cert.
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 ssl::context::use_certificate_chain (2 of 2 overloads)]
+
+
+Use a certificate chain from a memory buffer.
+
+
+ boost::system::error_code use_certificate_chain(
+ const const_buffer & chain,
+ boost::system::error_code & ec);
+
+
+This function is used to load a certificate chain into the context from a buffer.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[chain][The buffer containing the certificate chain. The certificate chain must use the PEM format.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+
+[heading Remarks]
+
+Calls `SSL_CTX_use_certificate` and SSL\_CTX\_add\_extra\_chain\_cert.
+
+
+
+
+[endsect]
+
+
+[endsect]
+
 [section:use_certificate_chain_file ssl::context::use_certificate_chain_file]
 
 [indexterm2 use_certificate_chain_file..ssl::context]
@@ -83904,7 +90390,325 @@
       boost::system::error_code & ec);
 
 
-This function is used to load a certificate into the context from a file.
+This function is used to load a certificate into the context from a file.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[filename][The name of the file containing the certificate.]]
+
+[[format][The file format (ASN.1 or PEM).]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+
+[heading Remarks]
+
+Calls `SSL_CTX_use_certificate_file`.
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+[section:use_private_key ssl::context::use_private_key]
+
+[indexterm2 use_private_key..ssl::context]
+Use a private key from a memory buffer.
+
+
+ void ``[link boost_asio.reference.ssl__context.use_private_key.overload1 use_private_key]``(
+ const const_buffer & private_key,
+ file_format format);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__context.use_private_key.overload1 more...]]``
+
+ boost::system::error_code ``[link boost_asio.reference.ssl__context.use_private_key.overload2 use_private_key]``(
+ const const_buffer & private_key,
+ file_format format,
+ boost::system::error_code & ec);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__context.use_private_key.overload2 more...]]``
+
+
+[section:overload1 ssl::context::use_private_key (1 of 2 overloads)]
+
+
+Use a private key from a memory buffer.
+
+
+ void use_private_key(
+ const const_buffer & private_key,
+ file_format format);
+
+
+This function is used to load a private key into the context from a buffer.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[private_key][The buffer containing the private key.]]
+
+[[format][The private key format (ASN.1 or PEM).]]
+
+]
+
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+
+[heading Remarks]
+
+Calls `SSL_CTX_use_PrivateKey` or SSL\_CTX\_use\_PrivateKey\_ASN1.
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 ssl::context::use_private_key (2 of 2 overloads)]
+
+
+Use a private key from a memory buffer.
+
+
+ boost::system::error_code use_private_key(
+ const const_buffer & private_key,
+ file_format format,
+ boost::system::error_code & ec);
+
+
+This function is used to load a private key into the context from a buffer.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[private_key][The buffer containing the private key.]]
+
+[[format][The private key format (ASN.1 or PEM).]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+
+[heading Remarks]
+
+Calls `SSL_CTX_use_PrivateKey` or SSL\_CTX\_use\_PrivateKey\_ASN1.
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+[section:use_private_key_file ssl::context::use_private_key_file]
+
+[indexterm2 use_private_key_file..ssl::context]
+Use a private key from a file.
+
+
+ void ``[link boost_asio.reference.ssl__context.use_private_key_file.overload1 use_private_key_file]``(
+ const std::string & filename,
+ file_format format);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__context.use_private_key_file.overload1 more...]]``
+
+ boost::system::error_code ``[link boost_asio.reference.ssl__context.use_private_key_file.overload2 use_private_key_file]``(
+ const std::string & filename,
+ file_format format,
+ boost::system::error_code & ec);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__context.use_private_key_file.overload2 more...]]``
+
+
+[section:overload1 ssl::context::use_private_key_file (1 of 2 overloads)]
+
+
+Use a private key from a file.
+
+
+ void use_private_key_file(
+ const std::string & filename,
+ file_format format);
+
+
+This function is used to load a private key into the context from a file.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[filename][The name of the file containing the private key.]]
+
+[[format][The file format (ASN.1 or PEM).]]
+
+]
+
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+
+[heading Remarks]
+
+Calls `SSL_CTX_use_PrivateKey_file`.
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 ssl::context::use_private_key_file (2 of 2 overloads)]
+
+
+Use a private key from a file.
+
+
+ boost::system::error_code use_private_key_file(
+ const std::string & filename,
+ file_format format,
+ boost::system::error_code & ec);
+
+
+This function is used to load a private key into the context from a file.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[filename][The name of the file containing the private key.]]
+
+[[format][The file format (ASN.1 or PEM).]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+
+[heading Remarks]
+
+Calls `SSL_CTX_use_PrivateKey_file`.
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+[section:use_rsa_private_key ssl::context::use_rsa_private_key]
+
+[indexterm2 use_rsa_private_key..ssl::context]
+Use an RSA private key from a memory buffer.
+
+
+ void ``[link boost_asio.reference.ssl__context.use_rsa_private_key.overload1 use_rsa_private_key]``(
+ const const_buffer & private_key,
+ file_format format);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__context.use_rsa_private_key.overload1 more...]]``
+
+ boost::system::error_code ``[link boost_asio.reference.ssl__context.use_rsa_private_key.overload2 use_rsa_private_key]``(
+ const const_buffer & private_key,
+ file_format format,
+ boost::system::error_code & ec);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__context.use_rsa_private_key.overload2 more...]]``
+
+
+[section:overload1 ssl::context::use_rsa_private_key (1 of 2 overloads)]
+
+
+Use an RSA private key from a memory buffer.
+
+
+ void use_rsa_private_key(
+ const const_buffer & private_key,
+ file_format format);
+
+
+This function is used to load an RSA private key into the context from a buffer.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[private_key][The buffer containing the RSA private key.]]
+
+[[format][The private key format (ASN.1 or PEM).]]
+
+]
+
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+
+[heading Remarks]
+
+Calls `SSL_CTX_use_RSAPrivateKey` or SSL\_CTX\_use\_RSAPrivateKey\_ASN1.
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 ssl::context::use_rsa_private_key (2 of 2 overloads)]
+
+
+Use an RSA private key from a memory buffer.
+
+
+ boost::system::error_code use_rsa_private_key(
+ const const_buffer & private_key,
+ file_format format,
+ boost::system::error_code & ec);
+
+
+This function is used to load an RSA private key into the context from a buffer.
 
 
 [heading Parameters]
@@ -83912,9 +90716,9 @@
 
 [variablelist
   
-[[filename][The name of the file containing the certificate.]]
+[[private_key][The buffer containing the RSA private key.]]
 
-[[format][The file format (ASN.1 or PEM).]]
+[[format][The private key format (ASN.1 or PEM).]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -83923,7 +90727,7 @@
 
 [heading Remarks]
       
-Calls `SSL_CTX_use_certificate_file`.
+Calls `SSL_CTX_use_RSAPrivateKey` or SSL\_CTX\_use\_RSAPrivateKey\_ASN1.
 
 
 
@@ -83933,36 +90737,36 @@
 
 [endsect]
 
-[section:use_private_key_file ssl::context::use_private_key_file]
+[section:use_rsa_private_key_file ssl::context::use_rsa_private_key_file]
 
-[indexterm2 use_private_key_file..ssl::context]
-Use a private key from a file.
+[indexterm2 use_rsa_private_key_file..ssl::context]
+Use an RSA private key from a file.
 
 
- void ``[link boost_asio.reference.ssl__context.use_private_key_file.overload1 use_private_key_file]``(
+ void ``[link boost_asio.reference.ssl__context.use_rsa_private_key_file.overload1 use_rsa_private_key_file]``(
       const std::string & filename,
       file_format format);
- `` [''''&raquo;''' [link boost_asio.reference.ssl__context.use_private_key_file.overload1 more...]]``
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__context.use_rsa_private_key_file.overload1 more...]]``
 
- boost::system::error_code ``[link boost_asio.reference.ssl__context.use_private_key_file.overload2 use_private_key_file]``(
+ boost::system::error_code ``[link boost_asio.reference.ssl__context.use_rsa_private_key_file.overload2 use_rsa_private_key_file]``(
       const std::string & filename,
       file_format format,
       boost::system::error_code & ec);
- `` [''''&raquo;''' [link boost_asio.reference.ssl__context.use_private_key_file.overload2 more...]]``
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__context.use_rsa_private_key_file.overload2 more...]]``
 
 
-[section:overload1 ssl::context::use_private_key_file (1 of 2 overloads)]
+[section:overload1 ssl::context::use_rsa_private_key_file (1 of 2 overloads)]
 
 
-Use a private key from a file.
+Use an RSA private key from a file.
 
 
- void use_private_key_file(
+ void use_rsa_private_key_file(
       const std::string & filename,
       file_format format);
 
 
-This function is used to load a private key into the context from a file.
+This function is used to load an RSA private key into the context from a file.
 
 
 [heading Parameters]
@@ -83970,7 +90774,7 @@
 
 [variablelist
   
-[[filename][The name of the file containing the private key.]]
+[[filename][The name of the file containing the RSA private key.]]
 
 [[format][The file format (ASN.1 or PEM).]]
 
@@ -83989,7 +90793,7 @@
 
 [heading Remarks]
       
-Calls `SSL_CTX_use_PrivateKey_file`.
+Calls `SSL_CTX_use_RSAPrivateKey_file`.
 
 
 
@@ -83998,19 +90802,19 @@
 
 
 
-[section:overload2 ssl::context::use_private_key_file (2 of 2 overloads)]
+[section:overload2 ssl::context::use_rsa_private_key_file (2 of 2 overloads)]
 
 
-Use a private key from a file.
+Use an RSA private key from a file.
 
 
- boost::system::error_code use_private_key_file(
+ boost::system::error_code use_rsa_private_key_file(
       const std::string & filename,
       file_format format,
       boost::system::error_code & ec);
 
 
-This function is used to load a private key into the context from a file.
+This function is used to load an RSA private key into the context from a file.
 
 
 [heading Parameters]
@@ -84018,7 +90822,7 @@
 
 [variablelist
   
-[[filename][The name of the file containing the private key.]]
+[[filename][The name of the file containing the RSA private key.]]
 
 [[format][The file format (ASN.1 or PEM).]]
 
@@ -84029,7 +90833,7 @@
 
 [heading Remarks]
       
-Calls `SSL_CTX_use_PrivateKey_file`.
+Calls `SSL_CTX_use_RSAPrivateKey_file`.
 
 
 
@@ -84039,36 +90843,33 @@
 
 [endsect]
 
-[section:use_rsa_private_key_file ssl::context::use_rsa_private_key_file]
+[section:use_tmp_dh ssl::context::use_tmp_dh]
 
-[indexterm2 use_rsa_private_key_file..ssl::context]
-Use an RSA private key from a file.
+[indexterm2 use_tmp_dh..ssl::context]
+Use the specified memory buffer to obtain the temporary Diffie-Hellman parameters.
 
 
- void ``[link boost_asio.reference.ssl__context.use_rsa_private_key_file.overload1 use_rsa_private_key_file]``(
- const std::string & filename,
- file_format format);
- `` [''''&raquo;''' [link boost_asio.reference.ssl__context.use_rsa_private_key_file.overload1 more...]]``
+ void ``[link boost_asio.reference.ssl__context.use_tmp_dh.overload1 use_tmp_dh]``(
+ const const_buffer & dh);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__context.use_tmp_dh.overload1 more...]]``
 
- boost::system::error_code ``[link boost_asio.reference.ssl__context.use_rsa_private_key_file.overload2 use_rsa_private_key_file]``(
- const std::string & filename,
- file_format format,
+ boost::system::error_code ``[link boost_asio.reference.ssl__context.use_tmp_dh.overload2 use_tmp_dh]``(
+ const const_buffer & dh,
       boost::system::error_code & ec);
- `` [''''&raquo;''' [link boost_asio.reference.ssl__context.use_rsa_private_key_file.overload2 more...]]``
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__context.use_tmp_dh.overload2 more...]]``
 
 
-[section:overload1 ssl::context::use_rsa_private_key_file (1 of 2 overloads)]
+[section:overload1 ssl::context::use_tmp_dh (1 of 2 overloads)]
 
 
-Use an RSA private key from a file.
+Use the specified memory buffer to obtain the temporary Diffie-Hellman parameters.
 
 
- void use_rsa_private_key_file(
- const std::string & filename,
- file_format format);
+ void use_tmp_dh(
+ const const_buffer & dh);
 
 
-This function is used to load an RSA private key into the context from a file.
+This function is used to load Diffie-Hellman parameters into the context from a buffer.
 
 
 [heading Parameters]
@@ -84076,9 +90877,7 @@
 
 [variablelist
   
-[[filename][The name of the file containing the RSA private key.]]
-
-[[format][The file format (ASN.1 or PEM).]]
+[[dh][The memory buffer containing the Diffie-Hellman parameters. The buffer must use the PEM format.]]
 
 ]
 
@@ -84095,7 +90894,7 @@
 
 [heading Remarks]
       
-Calls `SSL_CTX_use_RSAPrivateKey_file`.
+Calls `SSL_CTX_set_tmp_dh`.
 
 
 
@@ -84104,19 +90903,18 @@
 
 
 
-[section:overload2 ssl::context::use_rsa_private_key_file (2 of 2 overloads)]
+[section:overload2 ssl::context::use_tmp_dh (2 of 2 overloads)]
 
 
-Use an RSA private key from a file.
+Use the specified memory buffer to obtain the temporary Diffie-Hellman parameters.
 
 
- boost::system::error_code use_rsa_private_key_file(
- const std::string & filename,
- file_format format,
+ boost::system::error_code use_tmp_dh(
+ const const_buffer & dh,
       boost::system::error_code & ec);
 
 
-This function is used to load an RSA private key into the context from a file.
+This function is used to load Diffie-Hellman parameters into the context from a buffer.
 
 
 [heading Parameters]
@@ -84124,9 +90922,7 @@
 
 [variablelist
   
-[[filename][The name of the file containing the RSA private key.]]
-
-[[format][The file format (ASN.1 or PEM).]]
+[[dh][The memory buffer containing the Diffie-Hellman parameters. The buffer must use the PEM format.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -84135,7 +90931,7 @@
 
 [heading Remarks]
       
-Calls `SSL_CTX_use_RSAPrivateKey_file`.
+Calls `SSL_CTX_set_tmp_dh`.
 
 
 
@@ -84324,6 +91120,11 @@
   ]
 
   [
+ [[link boost_asio.reference.ssl__context_base.no_compression [*no_compression]]]
+ [Disable compression. Compression is disabled by default. ]
+ ]
+
+ [
     [[link boost_asio.reference.ssl__context_base.no_sslv2 [*no_sslv2]]]
     [Disable SSL v2. ]
   ]
@@ -84418,6 +91219,12 @@
 [indexterm2 sslv23..ssl::context_base]
 [indexterm2 sslv23_client..ssl::context_base]
 [indexterm2 sslv23_server..ssl::context_base]
+[indexterm2 tlsv11..ssl::context_base]
+[indexterm2 tlsv11_client..ssl::context_base]
+[indexterm2 tlsv11_server..ssl::context_base]
+[indexterm2 tlsv12..ssl::context_base]
+[indexterm2 tlsv12_client..ssl::context_base]
+[indexterm2 tlsv12_server..ssl::context_base]
 
 [heading Values]
 [variablelist
@@ -84482,6 +91289,36 @@
     [SSL/TLS server. ]
   ]
 
+ [
+ [tlsv11]
+ [Generic TLS version 1.1. ]
+ ]
+
+ [
+ [tlsv11_client]
+ [TLS version 1.1 client. ]
+ ]
+
+ [
+ [tlsv11_server]
+ [TLS version 1.1 server. ]
+ ]
+
+ [
+ [tlsv12]
+ [Generic TLS version 1.2. ]
+ ]
+
+ [
+ [tlsv12_client]
+ [TLS version 1.2 client. ]
+ ]
+
+ [
+ [tlsv12_server]
+ [TLS version 1.2 server. ]
+ ]
+
 ]
 
 
@@ -84490,6 +91327,20 @@
 
 
 
+[section:no_compression ssl::context_base::no_compression]
+
+[indexterm2 no_compression..ssl::context_base]
+Disable compression. Compression is disabled by default.
+
+
+ static const long no_compression = implementation_defined;
+
+
+
+[endsect]
+
+
+
 [section:no_sslv2 ssl::context_base::no_sslv2]
 
 [indexterm2 no_sslv2..ssl::context_base]
@@ -84873,6 +91724,11 @@
   ]
   
   [
+ [[link boost_asio.reference.ssl__stream.set_verify_depth [*set_verify_depth]]]
+ [Set the peer verification depth. ]
+ ]
+
+ [
     [[link boost_asio.reference.ssl__stream.set_verify_mode [*set_verify_mode]]]
     [Set the peer verification mode. ]
   ]
@@ -84904,9 +91760,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe. The application must also ensure that all asynchronous operations are performed within the same implicit or explicit strand.
+['Shared] ['objects:] Unsafe. The application must also ensure that all asynchronous operations are performed within the same implicit or explicit strand.
 
 
 [heading Example]
@@ -84929,7 +91785,6 @@
 
 [*Convenience header: ][^boost/asio/ssl.hpp]
 
-
 [section:async_handshake ssl::stream::async_handshake]
 
 [indexterm2 async_handshake..ssl::stream]
@@ -84938,7 +91793,30 @@
 
   template<
       typename ``[link boost_asio.reference.HandshakeHandler HandshakeHandler]``>
- void async_handshake(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.ssl__stream.async_handshake.overload1 async_handshake]``(
+ handshake_type type,
+ HandshakeHandler handler);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__stream.async_handshake.overload1 more...]]``
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.BufferedHandshakeHandler BufferedHandshakeHandler]``>
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` ``[link boost_asio.reference.ssl__stream.async_handshake.overload2 async_handshake]``(
+ handshake_type type,
+ const ConstBufferSequence & buffers,
+ BufferedHandshakeHandler handler);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__stream.async_handshake.overload2 more...]]``
+
+
+[section:overload1 ssl::stream::async_handshake (1 of 2 overloads)]
+
+
+Start an asynchronous SSL handshake.
+
+
+ template<
+ typename ``[link boost_asio.reference.HandshakeHandler HandshakeHandler]``>
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_handshake(
       handshake_type type,
       HandshakeHandler handler);
 
@@ -84970,6 +91848,53 @@
 
 
 
+[section:overload2 ssl::stream::async_handshake (2 of 2 overloads)]
+
+
+Start an asynchronous SSL handshake.
+
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.BufferedHandshakeHandler BufferedHandshakeHandler]``>
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_handshake(
+ handshake_type type,
+ const ConstBufferSequence & buffers,
+ BufferedHandshakeHandler handler);
+
+
+This function is used to asynchronously perform an SSL handshake on the stream. This function call always returns immediately.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[type][The type of handshaking to be performed, i.e. as a client or as a server.]]
+
+[[buffers][The buffered data to be reused for the handshake. Although the buffers object may be copied as necessary, ownership of the underlying buffers is retained by the caller, which must guarantee that they remain valid until the handler is called.]]
+
+[[handler][The handler to be called when the handshake operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be:
+``
+ void handler(
+ const boost::system::error_code& error, // Result of operation.
+ std::size_t bytes_transferred // Amount of buffers used in handshake.
+ );
+``
+]]
+
+]
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:async_read_some ssl::stream::async_read_some]
 
 [indexterm2 async_read_some..ssl::stream]
@@ -84979,7 +91904,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_some(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_some(
       const MutableBufferSequence & buffers,
       ReadHandler handler);
 
@@ -85025,7 +91950,7 @@
 
   template<
       typename ``[link boost_asio.reference.ShutdownHandler ShutdownHandler]``>
- void async_shutdown(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_shutdown(
       ShutdownHandler handler);
 
 
@@ -85063,7 +91988,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write_some(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_some(
       const ConstBufferSequence & buffers,
       WriteHandler handler);
 
@@ -85138,8 +92063,23 @@
       boost::system::error_code & ec);
   `` [''''&raquo;''' [link boost_asio.reference.ssl__stream.handshake.overload2 more...]]``
 
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ void ``[link boost_asio.reference.ssl__stream.handshake.overload3 handshake]``(
+ handshake_type type,
+ const ConstBufferSequence & buffers);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__stream.handshake.overload3 more...]]``
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ boost::system::error_code ``[link boost_asio.reference.ssl__stream.handshake.overload4 handshake]``(
+ handshake_type type,
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__stream.handshake.overload4 more...]]``
+
 
-[section:overload1 ssl::stream::handshake (1 of 2 overloads)]
+[section:overload1 ssl::stream::handshake (1 of 4 overloads)]
 
 
 Perform SSL handshaking.
@@ -85178,14 +92118,93 @@
 
 
 
-[section:overload2 ssl::stream::handshake (2 of 2 overloads)]
+[section:overload2 ssl::stream::handshake (2 of 4 overloads)]
+
+
+Perform SSL handshaking.
+
+
+ boost::system::error_code handshake(
+ handshake_type type,
+ boost::system::error_code & ec);
+
+
+This function is used to perform SSL handshaking on the stream. The function call will block until handshaking is complete or an error occurs.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[type][The type of handshaking to be performed, i.e. as a client or as a server.]]
+
+[[ec][Set to indicate what error occurred, if any. ]]
+
+]
+
+
+
+
+[endsect]
+
+
+
+[section:overload3 ssl::stream::handshake (3 of 4 overloads)]
+
+
+Perform SSL handshaking.
+
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ void handshake(
+ handshake_type type,
+ const ConstBufferSequence & buffers);
+
+
+This function is used to perform SSL handshaking on the stream. The function call will block until handshaking is complete or an error occurs.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[type][The type of handshaking to be performed, i.e. as a client or as a server.]]
+
+[[buffers][The buffered data to be reused for the handshake.]]
+
+]
+
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
+
+]
+
+
+
+
+[endsect]
+
+
+
+[section:overload4 ssl::stream::handshake (4 of 4 overloads)]
 
 
 Perform SSL handshaking.
 
 
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
   boost::system::error_code handshake(
       handshake_type type,
+ const ConstBufferSequence & buffers,
       boost::system::error_code & ec);
 
 
@@ -85199,6 +92218,8 @@
   
 [[type][The type of handshaking to be performed, i.e. as a client or as a server.]]
 
+[[buffers][The buffered data to be reused for the handshake.]]
+
 [[ec][Set to indicate what error occurred, if any. ]]
 
 ]
@@ -85487,7 +92508,7 @@
 The type of the next layer.
 
 
- typedef boost::remove_reference< Stream >::type next_layer_type;
+ typedef remove_reference< Stream >::type next_layer_type;
 
 
 
@@ -85737,6 +92758,104 @@
 
 [endsect]
 
+[section:set_verify_depth ssl::stream::set_verify_depth]
+
+[indexterm2 set_verify_depth..ssl::stream]
+Set the peer verification depth.
+
+
+ void ``[link boost_asio.reference.ssl__stream.set_verify_depth.overload1 set_verify_depth]``(
+ int depth);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__stream.set_verify_depth.overload1 more...]]``
+
+ boost::system::error_code ``[link boost_asio.reference.ssl__stream.set_verify_depth.overload2 set_verify_depth]``(
+ int depth,
+ boost::system::error_code & ec);
+ `` [''''&raquo;''' [link boost_asio.reference.ssl__stream.set_verify_depth.overload2 more...]]``
+
+
+[section:overload1 ssl::stream::set_verify_depth (1 of 2 overloads)]
+
+
+Set the peer verification depth.
+
+
+ void set_verify_depth(
+ int depth);
+
+
+This function may be used to configure the maximum verification depth allowed by the stream.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[depth][Maximum depth for the certificate chain verification that shall be allowed.]]
+
+]
+
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+
+[heading Remarks]
+
+Calls `SSL_set_verify_depth`.
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 ssl::stream::set_verify_depth (2 of 2 overloads)]
+
+
+Set the peer verification depth.
+
+
+ boost::system::error_code set_verify_depth(
+ int depth,
+ boost::system::error_code & ec);
+
+
+This function may be used to configure the maximum verification depth allowed by the stream.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[depth][Maximum depth for the certificate chain verification that shall be allowed.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+
+[heading Remarks]
+
+Calls `SSL_set_verify_depth`.
+
+
+
+
+[endsect]
+
+
+[endsect]
+
 [section:set_verify_mode ssl::stream::set_verify_mode]
 
 [indexterm2 set_verify_mode..ssl::stream]
@@ -86572,7 +93691,7 @@
 
 A waitable timer is always in one of two states: "expired" or "not expired". If the `wait()` or `async_wait()` function is called on an expired timer, the wait operation will complete immediately.
 
-Most applications will use the boost::asio::waitable\_timer typedef.
+Most applications will use one of the [link boost_asio.reference.steady_timer `steady_timer`], [link boost_asio.reference.system_timer `system_timer`] or [link boost_asio.reference.high_resolution_timer `high_resolution_timer`] typedefs.
 
 
 [heading Remarks]
@@ -86582,20 +93701,20 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Examples]
   
-Performing a blocking wait:
+Performing a blocking wait (C++11):
 
    // Construct a timer without setting an expiry time.
- boost::asio::waitable_timer timer(io_service);
+ boost::asio::steady_timer timer(io_service);
 
    // Set an expiry time relative to now.
- timer.expires_from_now(boost::posix_time::seconds(5));
+ timer.expires_from_now(std::chrono::seconds(5));
 
    // Wait for the timer to expire.
    timer.wait();
@@ -86604,7 +93723,7 @@
 
 
 
-Performing an asynchronous wait:
+Performing an asynchronous wait (C++11):
 
    void handler(const boost::system::error_code& error)
    {
@@ -86617,8 +93736,8 @@
    ...
 
    // Construct a timer with an absolute expiry time.
- boost::asio::waitable_timer timer(io_service,
- boost::posix_time::time_from_string("2005-12-07 23:59:59.000"));
+ boost::asio::steady_timer timer(io_service,
+ std::chrono::steady_clock::now() + std::chrono::seconds(60));
 
    // Start an asynchronous wait.
    timer.async_wait(handler);
@@ -86627,7 +93746,7 @@
 
 
 
-[heading Changing an active waitable_timer's expiry time]
+[heading Changing an active waitable timer's expiry time]
   
 
 
@@ -86715,6 +93834,11 @@
   ]
   
   [
+ [[link boost_asio.reference.io_service__strand.running_in_this_thread [*running_in_this_thread]]]
+ [Determine whether the strand is running in the current thread. ]
+ ]
+
+ [
     [[link boost_asio.reference.io_service__strand.strand [*strand]]]
     [Constructor. ]
   ]
@@ -86780,9 +93904,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Safe.
+['Shared] ['objects:] Safe.
 
 
 
@@ -86911,6 +94035,11 @@
   ]
   
   [
+ [[link boost_asio.reference.stream_socket_service.converting_move_construct [*converting_move_construct]]]
+ [Move-construct a new stream socket implementation from another protocol type. ]
+ ]
+
+ [
     [[link boost_asio.reference.stream_socket_service.destroy [*destroy]]]
     [Destroy a stream socket implementation. ]
   ]
@@ -87055,7 +94184,7 @@
 
   template<
       typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
- void async_connect(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_connect(
       implementation_type & impl,
       const endpoint_type & peer_endpoint,
       ConnectHandler handler);
@@ -87075,7 +94204,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_receive(
       implementation_type & impl,
       const MutableBufferSequence & buffers,
       socket_base::message_flags flags,
@@ -87096,7 +94225,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_send(
       implementation_type & impl,
       const ConstBufferSequence & buffers,
       socket_base::message_flags flags,
@@ -87221,6 +94350,25 @@
 
 
 
+[section:converting_move_construct stream_socket_service::converting_move_construct]
+
+[indexterm2 converting_move_construct..stream_socket_service]
+Move-construct a new stream socket implementation from another protocol type.
+
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol1]``>
+ void converting_move_construct(
+ implementation_type & impl,
+ typename stream_socket_service< Protocol1 >::implementation_type & other_impl,
+ typename enable_if< is_convertible< Protocol1, Protocol >::value >::type * = 0);
+
+
+
+[endsect]
+
+
+
 [section:destroy stream_socket_service::destroy]
 
 [indexterm2 destroy..stream_socket_service]
@@ -88047,7 +95195,7 @@
 
 A waitable timer is always in one of two states: "expired" or "not expired". If the `wait()` or `async_wait()` function is called on an expired timer, the wait operation will complete immediately.
 
-Most applications will use the boost::asio::waitable\_timer typedef.
+Most applications will use one of the [link boost_asio.reference.steady_timer `steady_timer`], [link boost_asio.reference.system_timer `system_timer`] or [link boost_asio.reference.high_resolution_timer `high_resolution_timer`] typedefs.
 
 
 [heading Remarks]
@@ -88057,20 +95205,20 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 [heading Examples]
   
-Performing a blocking wait:
+Performing a blocking wait (C++11):
 
    // Construct a timer without setting an expiry time.
- boost::asio::waitable_timer timer(io_service);
+ boost::asio::steady_timer timer(io_service);
 
    // Set an expiry time relative to now.
- timer.expires_from_now(boost::posix_time::seconds(5));
+ timer.expires_from_now(std::chrono::seconds(5));
 
    // Wait for the timer to expire.
    timer.wait();
@@ -88079,7 +95227,7 @@
 
 
 
-Performing an asynchronous wait:
+Performing an asynchronous wait (C++11):
 
    void handler(const boost::system::error_code& error)
    {
@@ -88092,8 +95240,8 @@
    ...
 
    // Construct a timer with an absolute expiry time.
- boost::asio::waitable_timer timer(io_service,
- boost::posix_time::time_from_string("2005-12-07 23:59:59.000"));
+ boost::asio::steady_timer timer(io_service,
+ std::chrono::steady_clock::now() + std::chrono::seconds(60));
 
    // Start an asynchronous wait.
    timer.async_wait(handler);
@@ -88102,7 +95250,7 @@
 
 
 
-[heading Changing an active waitable_timer's expiry time]
+[heading Changing an active waitable timer's expiry time]
   
 
 
@@ -88490,6 +95638,160 @@
 
 
 
+[section:use_future use_future]
+
+[indexterm1 use_future]
+
+ constexpr use_future_t use_future;
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/use_future.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+[section:use_future_t use_future_t]
+
+
+
+ template<
+ typename Allocator = std::allocator<void>>
+ class use_future_t
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.use_future_t.allocator_type [*allocator_type]]]
+ []
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.use_future_t.get_allocator [*get_allocator]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.use_future_t.operator_lb__rb_ [*operator\[\]]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.use_future_t.use_future_t [*use_future_t]]]
+ []
+ ]
+
+]
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/use_future.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[section:allocator_type use_future_t::allocator_type]
+
+[indexterm2 allocator_type..use_future_t]
+
+ typedef Allocator allocator_type;
+
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/use_future.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
+
+[section:get_allocator use_future_t::get_allocator]
+
+[indexterm2 get_allocator..use_future_t]
+
+ allocator_type get_allocator() const;
+
+
+
+[endsect]
+
+
+
+[section:operator_lb__rb_ use_future_t::operator\[\]]
+
+[indexterm2 operator\[\]..use_future_t]
+
+ template<
+ typename ``[link boost_asio.reference.OtherAllocator OtherAllocator]``>
+ use_future_t< OtherAllocator > operator[](
+ const OtherAllocator & allocator) const;
+
+
+
+[endsect]
+
+
+[section:use_future_t use_future_t::use_future_t]
+
+[indexterm2 use_future_t..use_future_t]
+
+ constexpr ``[link boost_asio.reference.use_future_t.use_future_t.overload1 use_future_t]``();
+ `` [''''&raquo;''' [link boost_asio.reference.use_future_t.use_future_t.overload1 more...]]``
+
+ explicit ``[link boost_asio.reference.use_future_t.use_future_t.overload2 use_future_t]``(
+ const Allocator & allocator);
+ `` [''''&raquo;''' [link boost_asio.reference.use_future_t.use_future_t.overload2 more...]]``
+
+
+[section:overload1 use_future_t::use_future_t (1 of 2 overloads)]
+
+
+
+ constexpr use_future_t();
+
+
+
+[endsect]
+
+
+
+[section:overload2 use_future_t::use_future_t (2 of 2 overloads)]
+
+
+
+ use_future_t(
+ const Allocator & allocator);
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[endsect]
+
+
 [section:use_service use_service]
 
 [indexterm1 use_service]
@@ -88720,7 +96022,7 @@
 
   template<
       typename ``[link boost_asio.reference.WaitHandler WaitHandler]``>
- void async_wait(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_wait(
       implementation_type & impl,
       WaitHandler handler);
 
@@ -89224,9 +96526,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -89958,9 +97260,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -90310,9 +97612,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -90385,7 +97687,7 @@
 
   template<
       typename ``[link boost_asio.reference.WaitHandler WaitHandler]``>
- void async_wait(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_wait(
       WaitHandler handler);
 
 
@@ -91111,9 +98413,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -91540,9 +98842,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -91616,8 +98918,8 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_some_at(
- boost::uint64_t offset,
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_some_at(
+ uint64_t offset,
       const MutableBufferSequence & buffers,
       ReadHandler handler);
 
@@ -91676,8 +98978,8 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write_some_at(
- boost::uint64_t offset,
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_some_at(
+ uint64_t offset,
       const ConstBufferSequence & buffers,
       WriteHandler handler);
 
@@ -92424,9 +99726,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -92564,14 +99866,14 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
   std::size_t ``[link boost_asio.reference.windows__basic_random_access_handle.read_some_at.overload1 read_some_at]``(
- boost::uint64_t offset,
+ uint64_t offset,
       const MutableBufferSequence & buffers);
   `` [''''&raquo;''' [link boost_asio.reference.windows__basic_random_access_handle.read_some_at.overload1 more...]]``
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
   std::size_t ``[link boost_asio.reference.windows__basic_random_access_handle.read_some_at.overload2 read_some_at]``(
- boost::uint64_t offset,
+ uint64_t offset,
       const MutableBufferSequence & buffers,
       boost::system::error_code & ec);
   `` [''''&raquo;''' [link boost_asio.reference.windows__basic_random_access_handle.read_some_at.overload2 more...]]``
@@ -92586,7 +99888,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
   std::size_t read_some_at(
- boost::uint64_t offset,
+ uint64_t offset,
       const MutableBufferSequence & buffers);
 
 
@@ -92650,7 +99952,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
   std::size_t read_some_at(
- boost::uint64_t offset,
+ uint64_t offset,
       const MutableBufferSequence & buffers,
       boost::system::error_code & ec);
 
@@ -92746,14 +100048,14 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
   std::size_t ``[link boost_asio.reference.windows__basic_random_access_handle.write_some_at.overload1 write_some_at]``(
- boost::uint64_t offset,
+ uint64_t offset,
       const ConstBufferSequence & buffers);
   `` [''''&raquo;''' [link boost_asio.reference.windows__basic_random_access_handle.write_some_at.overload1 more...]]``
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
   std::size_t ``[link boost_asio.reference.windows__basic_random_access_handle.write_some_at.overload2 write_some_at]``(
- boost::uint64_t offset,
+ uint64_t offset,
       const ConstBufferSequence & buffers,
       boost::system::error_code & ec);
   `` [''''&raquo;''' [link boost_asio.reference.windows__basic_random_access_handle.write_some_at.overload2 more...]]``
@@ -92768,7 +100070,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
   std::size_t write_some_at(
- boost::uint64_t offset,
+ uint64_t offset,
       const ConstBufferSequence & buffers);
 
 
@@ -92832,7 +100134,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
   std::size_t write_some_at(
- boost::uint64_t offset,
+ uint64_t offset,
       const ConstBufferSequence & buffers,
       boost::system::error_code & ec);
 
@@ -93046,9 +100348,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -93123,7 +100425,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_some(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_some(
       const MutableBufferSequence & buffers,
       ReadHandler handler);
 
@@ -93180,7 +100482,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write_some(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_some(
       const ConstBufferSequence & buffers,
       WriteHandler handler);
 
@@ -93925,9 +101227,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -94519,9 +101821,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -94680,7 +101982,7 @@
 
   template<
       typename ``[link boost_asio.reference.WaitHandler WaitHandler]``>
- void async_wait(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_wait(
       implementation_type & impl,
       WaitHandler handler);
 
@@ -94974,9 +102276,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -95353,9 +102655,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -95537,9 +102839,9 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_some_at(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_some_at(
       implementation_type & impl,
- boost::uint64_t offset,
+ uint64_t offset,
       const MutableBufferSequence & buffers,
       ReadHandler handler);
 
@@ -95558,9 +102860,9 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write_some_at(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_some_at(
       implementation_type & impl,
- boost::uint64_t offset,
+ uint64_t offset,
       const ConstBufferSequence & buffers,
       WriteHandler handler);
 
@@ -95829,7 +103131,7 @@
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
   std::size_t read_some_at(
       implementation_type & impl,
- boost::uint64_t offset,
+ uint64_t offset,
       const MutableBufferSequence & buffers,
       boost::system::error_code & ec);
 
@@ -95849,7 +103151,7 @@
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
   std::size_t write_some_at(
       implementation_type & impl,
- boost::uint64_t offset,
+ uint64_t offset,
       const ConstBufferSequence & buffers,
       boost::system::error_code & ec);
 
@@ -96031,9 +103333,9 @@
 
 [heading Thread Safety]
   
-[*Distinct] [*objects:] Safe.
+['Distinct] ['objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Shared] ['objects:] Unsafe.
 
 
 
@@ -96216,7 +103518,7 @@
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_some(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_read_some(
       implementation_type & impl,
       const MutableBufferSequence & buffers,
       ReadHandler handler);
@@ -96236,7 +103538,7 @@
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write_some(
+ ``[link boost_asio.reference.asynchronous_operations.return_type ['void-or-deduced]]`` async_write_some(
       implementation_type & impl,
       const ConstBufferSequence & buffers,
       WriteHandler handler);
@@ -97208,7 +104510,7 @@
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
   std::size_t ``[link boost_asio.reference.write_at.overload1 write_at]``(
       SyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const ConstBufferSequence & buffers);
   `` [''''&raquo;''' [link boost_asio.reference.write_at.overload1 more...]]``
 
@@ -97217,7 +104519,7 @@
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
   std::size_t ``[link boost_asio.reference.write_at.overload2 write_at]``(
       SyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const ConstBufferSequence & buffers,
       boost::system::error_code & ec);
   `` [''''&raquo;''' [link boost_asio.reference.write_at.overload2 more...]]``
@@ -97228,7 +104530,7 @@
       typename CompletionCondition>
   std::size_t ``[link boost_asio.reference.write_at.overload3 write_at]``(
       SyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const ConstBufferSequence & buffers,
       CompletionCondition completion_condition);
   `` [''''&raquo;''' [link boost_asio.reference.write_at.overload3 more...]]``
@@ -97239,7 +104541,7 @@
       typename CompletionCondition>
   std::size_t ``[link boost_asio.reference.write_at.overload4 write_at]``(
       SyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const ConstBufferSequence & buffers,
       CompletionCondition completion_condition,
       boost::system::error_code & ec);
@@ -97250,7 +104552,7 @@
       typename Allocator>
   std::size_t ``[link boost_asio.reference.write_at.overload5 write_at]``(
       SyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b);
   `` [''''&raquo;''' [link boost_asio.reference.write_at.overload5 more...]]``
 
@@ -97259,7 +104561,7 @@
       typename Allocator>
   std::size_t ``[link boost_asio.reference.write_at.overload6 write_at]``(
       SyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b,
       boost::system::error_code & ec);
   `` [''''&raquo;''' [link boost_asio.reference.write_at.overload6 more...]]``
@@ -97270,7 +104572,7 @@
       typename CompletionCondition>
   std::size_t ``[link boost_asio.reference.write_at.overload7 write_at]``(
       SyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b,
       CompletionCondition completion_condition);
   `` [''''&raquo;''' [link boost_asio.reference.write_at.overload7 more...]]``
@@ -97281,7 +104583,7 @@
       typename CompletionCondition>
   std::size_t ``[link boost_asio.reference.write_at.overload8 write_at]``(
       SyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b,
       CompletionCondition completion_condition,
       boost::system::error_code & ec);
@@ -97305,7 +104607,7 @@
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
   std::size_t write_at(
       SyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const ConstBufferSequence & buffers);
 
 
@@ -97388,7 +104690,7 @@
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
   std::size_t write_at(
       SyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const ConstBufferSequence & buffers,
       boost::system::error_code & ec);
 
@@ -97466,7 +104768,7 @@
       typename CompletionCondition>
   std::size_t write_at(
       SyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const ConstBufferSequence & buffers,
       CompletionCondition completion_condition);
 
@@ -97552,7 +104854,7 @@
       typename CompletionCondition>
   std::size_t write_at(
       SyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       const ConstBufferSequence & buffers,
       CompletionCondition completion_condition,
       boost::system::error_code & ec);
@@ -97619,7 +104921,7 @@
       typename Allocator>
   std::size_t write_at(
       SyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b);
 
 
@@ -97692,7 +104994,7 @@
       typename Allocator>
   std::size_t write_at(
       SyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b,
       boost::system::error_code & ec);
 
@@ -97759,7 +105061,7 @@
       typename CompletionCondition>
   std::size_t write_at(
       SyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b,
       CompletionCondition completion_condition);
 
@@ -97834,7 +105136,7 @@
       typename CompletionCondition>
   std::size_t write_at(
       SyncRandomAccessWriteDevice & d,
- boost::uint64_t offset,
+ uint64_t offset,
       basic_streambuf< Allocator > & b,
       CompletionCondition completion_condition,
       boost::system::error_code & ec);
@@ -97891,6 +105193,41 @@
 
 [endsect]
 
+
+[section:yield_context yield_context]
+
+[indexterm1 yield_context]
+
+ typedef basic_yield_context< unspecified > yield_context;
+
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_yield_context.basic_yield_context [*basic_yield_context]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.basic_yield_context.operator_lb__rb_ [*operator\[\]]]]
+ []
+ ]
+
+]
+
+
+[heading Requirements]
+
+[*Header: ][^boost/asio/spawn.hpp]
+
+[*Convenience header: ][^boost/asio.hpp]
+
+
+[endsect]
+
+
 [section:is_error_code_enum_lt__addrinfo_errors__gt_ boost::system::is_error_code_enum< boost::asio::error::addrinfo_errors >]
 
 

Modified: trunk/libs/asio/doc/tutorial.dox
==============================================================================
--- trunk/libs/asio/doc/tutorial.dox (original)
+++ trunk/libs/asio/doc/tutorial.dox 2013-05-25 09:03:48 EDT (Sat, 25 May 2013)
@@ -72,9 +72,9 @@
 #---------------------------------------------------------------------------
 # configuration options related to the input files
 #---------------------------------------------------------------------------
-INPUT = ./../example/tutorial/index_dox.txt \
- ./../example/tutorial/timer_dox.txt \
- ./../example/tutorial/daytime_dox.txt
+INPUT = ./../example/cpp03/tutorial/index_dox.txt \
+ ./../example/cpp03/tutorial/timer_dox.txt \
+ ./../example/cpp03/tutorial/daytime_dox.txt
 FILE_PATTERNS =
 RECURSIVE = NO
 EXCLUDE =


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