2029 lines
61 KiB
HTML
2029 lines
61 KiB
HTML
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
<title>Using, Building, and Configuring Boost.Asio</title>
|
|
<link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css">
|
|
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
|
|
<link rel="home" href="../boost_asio.html" title="Boost.Asio">
|
|
<link rel="up" href="../boost_asio.html" title="Boost.Asio">
|
|
<link rel="prev" href="overview/implementation.html" title="Platform-Specific Implementation Notes">
|
|
<link rel="next" href="tutorial.html" title="Tutorial">
|
|
</head>
|
|
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
|
<table cellpadding="2" width="100%"><tr>
|
|
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td>
|
|
<td align="center"><a href="../../../index.html">Home</a></td>
|
|
<td align="center"><a href="../../../libs/libraries.htm">Libraries</a></td>
|
|
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
|
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
|
<td align="center"><a href="../../../more/index.htm">More</a></td>
|
|
</tr></table>
|
|
<hr>
|
|
<div class="spirit-nav">
|
|
<a accesskey="p" href="overview/implementation.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_asio.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../boost_asio.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tutorial.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
|
|
</div>
|
|
<div class="section">
|
|
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
|
<a name="boost_asio.using"></a><a class="link" href="using.html" title="Using, Building, and Configuring Boost.Asio">Using, Building, and Configuring Boost.Asio</a>
|
|
</h2></div></div></div>
|
|
<h4>
|
|
<a name="boost_asio.using.h0"></a>
|
|
<span class="phrase"><a name="boost_asio.using.supported_platforms"></a></span><a class="link" href="using.html#boost_asio.using.supported_platforms">Supported
|
|
Platforms</a>
|
|
</h4>
|
|
<p>
|
|
The following platform and compiler combinations are regularly tested:
|
|
</p>
|
|
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
|
<li class="listitem">
|
|
Linux using g++ 4.6 or later
|
|
</li>
|
|
<li class="listitem">
|
|
Linux using clang 3.4 or later
|
|
</li>
|
|
<li class="listitem">
|
|
FreeBSD using g++ 9 or later
|
|
</li>
|
|
<li class="listitem">
|
|
macOS using Xcode 10 or later
|
|
</li>
|
|
<li class="listitem">
|
|
Win32 using Visual C++ 11.0 (Visual Studio 2012) or later
|
|
</li>
|
|
<li class="listitem">
|
|
Win64 using Visual C++ 11.0 (Visual Studio 2012) or later
|
|
</li>
|
|
</ul></div>
|
|
<p>
|
|
The following platforms may also work:
|
|
</p>
|
|
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
|
<li class="listitem">
|
|
AIX
|
|
</li>
|
|
<li class="listitem">
|
|
Android
|
|
</li>
|
|
<li class="listitem">
|
|
HP-UX
|
|
</li>
|
|
<li class="listitem">
|
|
iOS
|
|
</li>
|
|
<li class="listitem">
|
|
NetBSD
|
|
</li>
|
|
<li class="listitem">
|
|
OpenBSD
|
|
</li>
|
|
<li class="listitem">
|
|
QNX Neutrino
|
|
</li>
|
|
<li class="listitem">
|
|
Solaris
|
|
</li>
|
|
<li class="listitem">
|
|
Tru64
|
|
</li>
|
|
<li class="listitem">
|
|
Win32 using MinGW.
|
|
</li>
|
|
<li class="listitem">
|
|
Win32 using Cygwin. (<code class="computeroutput">__USE_W32_SOCKETS</code> must be defined.)
|
|
</li>
|
|
</ul></div>
|
|
<h4>
|
|
<a name="boost_asio.using.h1"></a>
|
|
<span class="phrase"><a name="boost_asio.using.dependencies"></a></span><a class="link" href="using.html#boost_asio.using.dependencies">Dependencies</a>
|
|
</h4>
|
|
<p>
|
|
The following libraries must be available in order to link programs that use
|
|
Boost.Asio:
|
|
</p>
|
|
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
|
<li class="listitem">
|
|
Boost.System for the <code class="computeroutput">boost::system::error_code</code> and <code class="computeroutput">boost::system::system_error</code>
|
|
classes.
|
|
</li>
|
|
<li class="listitem">
|
|
Boost.Coroutine (optional) if you use <a class="link" href="reference/spawn.html" title="spawn"><code class="computeroutput">spawn()</code></a>
|
|
to launch coroutines.
|
|
</li>
|
|
<li class="listitem">
|
|
Boost.Regex (optional) if you use any of the <a class="link" href="reference/read_until.html" title="read_until"><code class="computeroutput">read_until()</code></a>
|
|
or <a class="link" href="reference/async_read_until.html" title="async_read_until"><code class="computeroutput">async_read_until()</code></a>
|
|
overloads that take a <code class="computeroutput">boost::regex</code> parameter.
|
|
</li>
|
|
<li class="listitem">
|
|
<a href="http://www.openssl.org" target="_top">OpenSSL</a> (optional) if you use
|
|
Boost.Asio's SSL support.
|
|
</li>
|
|
</ul></div>
|
|
<p>
|
|
Furthermore, some of the examples also require the Boost.Thread, Boost.Date_Time
|
|
or Boost.Serialization libraries.
|
|
</p>
|
|
<div class="note"><table border="0" summary="Note">
|
|
<tr>
|
|
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td>
|
|
<th align="left">Note</th>
|
|
</tr>
|
|
<tr><td align="left" valign="top"><p>
|
|
With MSVC or Borland C++ you may want to add <code class="computeroutput">-DBOOST_DATE_TIME_NO_LIB</code>
|
|
and <code class="computeroutput">-DBOOST_REGEX_NO_LIB</code> to your project settings to disable
|
|
autolinking of the Boost.Date_Time and Boost.Regex libraries respectively.
|
|
Alternatively, you may choose to build these libraries and link to them.
|
|
</p></td></tr>
|
|
</table></div>
|
|
<h4>
|
|
<a name="boost_asio.using.h2"></a>
|
|
<span class="phrase"><a name="boost_asio.using.building_boost_libraries"></a></span><a class="link" href="using.html#boost_asio.using.building_boost_libraries">Building
|
|
Boost Libraries</a>
|
|
</h4>
|
|
<p>
|
|
You may build the subset of Boost libraries required to use Boost.Asio and
|
|
its examples by running the following command from the root of the Boost download
|
|
package:
|
|
</p>
|
|
<pre class="programlisting">b2 --with-system --with-thread --with-date_time --with-regex --with-serialization stage
|
|
</pre>
|
|
<p>
|
|
This assumes that you have already built <code class="computeroutput">b2</code>. Consult the Boost.Build
|
|
documentation for more details.
|
|
</p>
|
|
<h4>
|
|
<a name="boost_asio.using.h3"></a>
|
|
<span class="phrase"><a name="boost_asio.using.optional_separate_compilation"></a></span><a class="link" href="using.html#boost_asio.using.optional_separate_compilation">Optional
|
|
separate compilation</a>
|
|
</h4>
|
|
<p>
|
|
By default, Boost.Asio is a header-only library. However, some developers may
|
|
prefer to build Boost.Asio using separately compiled source code. To do this,
|
|
add <code class="computeroutput">#include <boost/asio/impl/src.hpp></code> to one (and only
|
|
one) source file in a program, then build the program with <code class="computeroutput">BOOST_ASIO_SEPARATE_COMPILATION</code>
|
|
defined in the project/compiler settings. Alternatively, <code class="computeroutput">BOOST_ASIO_DYN_LINK</code>
|
|
may be defined to build a separately-compiled Boost.Asio as part of a shared
|
|
library.
|
|
</p>
|
|
<p>
|
|
If using Boost.Asio's SSL support, you will also need to add <code class="computeroutput">#include
|
|
<boost/asio/ssl/impl/src.hpp></code>.
|
|
</p>
|
|
<h4>
|
|
<a name="boost_asio.using.h4"></a>
|
|
<span class="phrase"><a name="boost_asio.using.macros"></a></span><a class="link" href="using.html#boost_asio.using.macros">Macros</a>
|
|
</h4>
|
|
<p>
|
|
The macros listed in the table below may be used to control the interface,
|
|
functionality, and behaviour of Boost.Asio.
|
|
</p>
|
|
<div class="informaltable"><table class="table">
|
|
<colgroup>
|
|
<col>
|
|
<col>
|
|
</colgroup>
|
|
<thead><tr>
|
|
<th>
|
|
<p>
|
|
Macro
|
|
</p>
|
|
</th>
|
|
<th>
|
|
<p>
|
|
Description
|
|
</p>
|
|
</th>
|
|
</tr></thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_NO_DEPRECATED</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Disables Boost.Asio's deprecated interfaces and functionality.
|
|
</p>
|
|
<p>
|
|
See <a class="link" href="net_ts.html" title="Networking TS compatibility">Networking TS Compatibility</a>
|
|
for a list of older interfaces that have been deprecated, and their
|
|
replacements.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_NO_TS_EXECUTORS</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Disables Boost.Asio's support for the Networking TS executor model.
|
|
</p>
|
|
<p>
|
|
By default, Boost.Asio simultaneously supports both Networking TS-style
|
|
executors, and executors that adhere to the proposed standard executor
|
|
model. This macro may be used to limit support to the proposed standard
|
|
executors only. See <a class="link" href="std_executors.html" title="Proposed Standard Executors">Proposed
|
|
Standard Executors</a> for more information.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Specifies that <a class="link" href="reference/any_io_executor.html" title="any_io_executor"><code class="computeroutput">any_io_executor</code></a>
|
|
refer to the Networking TS-style polymorphic wrapper.
|
|
</p>
|
|
<p>
|
|
The <code class="computeroutput">any_io_executor</code> type alias is the default runtime-polymorphic
|
|
executor for all I/O objects. This type alias points to the <a class="link" href="reference/execution__any_executor.html" title="execution::any_executor"><code class="computeroutput">execution::any_executor<></code></a>
|
|
template with a set of supportable properties specified for use with
|
|
I/O.
|
|
</p>
|
|
<p>
|
|
This new name may break existing code that directly uses the old
|
|
Networking TS-style polymorphic wrapper, <a class="link" href="reference/executor.html" title="executor"><code class="computeroutput">executor</code></a>.
|
|
If required for backward compatibility, <code class="computeroutput">BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT</code>
|
|
changes the <code class="computeroutput">any_io_executor</code> type alias to instead point
|
|
to the <code class="computeroutput">executor</code> polymorphic wrapper.
|
|
</p>
|
|
<p>
|
|
See <a class="link" href="std_executors.html" title="Proposed Standard Executors">Proposed Standard Executors</a>
|
|
for more information.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_NO_DYNAMIC_BUFFER_V1</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Disables support for the <a class="link" href="reference/DynamicBuffer_v1.html" title="Dynamic buffer requirements (version 1)"><code class="computeroutput">DynamicBuffer_v1</code></a>
|
|
type requirements.
|
|
</p>
|
|
<p>
|
|
By default, dynamic buffer operations such as <a class="link" href="reference/read.html" title="read"><code class="computeroutput">read</code></a>,
|
|
<a class="link" href="reference/async_read.html" title="async_read"><code class="computeroutput">async_read</code></a>,
|
|
<a class="link" href="reference/read_until.html" title="read_until"><code class="computeroutput">read_until</code></a>,
|
|
<a class="link" href="reference/async_read_until.html" title="async_read_until"><code class="computeroutput">async_read_until</code></a>,
|
|
<a class="link" href="reference/write.html" title="write"><code class="computeroutput">write</code></a>,
|
|
and <a class="link" href="reference/async_write.html" title="async_write"><code class="computeroutput">async_write</code></a>
|
|
support both the <code class="computeroutput">DynamicBuffer_v1</code> and the <a class="link" href="reference/DynamicBuffer_v2.html" title="Dynamic buffer requirements (version 2)"><code class="computeroutput">DynamicBuffer_v2</code></a>
|
|
type requirements for dynamic buffers.
|
|
</p>
|
|
<p>
|
|
When <code class="computeroutput">BOOST_ASIO_NO_DYNAMIC_BUFFER_V1</code> is defined, all
|
|
support for <code class="computeroutput">DynamicBuffer_v1</code> types and functions is
|
|
#ifdef-ed out. Support for using <a class="link" href="reference/basic_streambuf.html" title="basic_streambuf"><code class="computeroutput">basic_streambuf</code></a>
|
|
with the <code class="computeroutput">read</code>, <code class="computeroutput">async_read</code>, <code class="computeroutput">read_until</code>,
|
|
<code class="computeroutput">async_read_until</code>, <code class="computeroutput">write</code>, and <code class="computeroutput">async_write</code>
|
|
functions is also disabled as a consequence.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_ENABLE_BUFFER_DEBUGGING</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Enables Boost.Asio's buffer debugging support, which can help identify
|
|
when invalid buffers are used in read or write operations (e.g. if
|
|
a std::string object being written is destroyed before the write
|
|
operation completes).
|
|
</p>
|
|
<p>
|
|
When using Microsoft Visual C++ 11.0 or later, this macro is defined
|
|
automatically if the compiler's iterator debugging support is enabled,
|
|
unless <code class="computeroutput">BOOST_ASIO_DISABLE_BUFFER_DEBUGGING</code> has been
|
|
defined.
|
|
</p>
|
|
<p>
|
|
When using g++, this macro is defined automatically if standard library
|
|
debugging is enabled (<code class="computeroutput">_GLIBCXX_DEBUG</code> is defined), unless
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_BUFFER_DEBUGGING</code> has been defined.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_BUFFER_DEBUGGING</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Explictly disables Boost.Asio's buffer debugging support.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_ENABLE_HANDLER_TRACKING</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Enables Boost.Asio's <a class="link" href="overview/core/handler_tracking.html" title="Handler Tracking">Handler
|
|
Tracking</a> debugging facility.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_DEV_POLL</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Explicitly disables <code class="literal">/dev/poll</code> support on Solaris,
|
|
forcing the use of a <code class="computeroutput">select</code>-based implementation.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_EPOLL</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Explicitly disables <code class="computeroutput">epoll</code> support on Linux, forcing
|
|
the use of a <code class="computeroutput">select</code>-based implementation.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_EVENTFD</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Explicitly disables <code class="computeroutput">eventfd</code> support on Linux, forcing
|
|
the use of a pipe to interrupt blocked epoll/select system calls.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_KQUEUE</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Explicitly disables <code class="computeroutput">kqueue</code> support on macOS and BSD
|
|
variants, forcing the use of a <code class="computeroutput">select</code>-based implementation.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_IOCP</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Explicitly disables I/O completion ports support on Windows, forcing
|
|
the use of a <code class="computeroutput">select</code>-based implementation.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_THREADS</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Explicitly disables Boost.Asio's threading support, independent of
|
|
whether or not Boost as a whole supports threads.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
By default, Boost.Asio will automatically define <code class="computeroutput">WIN32_LEAN_AND_MEAN</code>
|
|
when compiling for Windows, to minimise the number of Windows SDK
|
|
header files and features that are included. The presence of <code class="computeroutput">BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN</code>
|
|
prevents <code class="computeroutput">WIN32_LEAN_AND_MEAN</code> from being defined.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_NO_NOMINMAX</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
By default, Boost.Asio will automatically define <code class="computeroutput">NOMINMAX</code>
|
|
when compiling for Windows, to suppress the definition of the <code class="computeroutput">min()</code>
|
|
and <code class="computeroutput">max()</code> macros. The presence of <code class="computeroutput">BOOST_ASIO_NO_NOMINMAX</code>
|
|
prevents <code class="computeroutput">NOMINMAX</code> from being defined.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_NO_DEFAULT_LINKED_LIBS</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
When compiling for Windows using Microsoft Visual C++ or Borland
|
|
C++, Boost.Asio will automatically link in the necessary Windows
|
|
SDK libraries for sockets support (i.e. <code class="literal">ws2_32.lib</code>
|
|
and <code class="literal">mswsock.lib</code>, or <code class="literal">ws2.lib</code>
|
|
when building for Windows CE). The <code class="computeroutput">BOOST_ASIO_NO_DEFAULT_LINKED_LIBS</code>
|
|
macro prevents these libraries from being linked.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_ENABLE_CANCELIO</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Enables use of the <code class="computeroutput">CancelIo</code> function on older versions
|
|
of Windows. If not enabled, calls to <code class="computeroutput">cancel()</code> on a socket
|
|
object will always fail with <code class="computeroutput">asio::error::operation_not_supported</code>
|
|
when run on Windows XP, Windows Server 2003, and earlier versions
|
|
of Windows. When running on Windows Vista, Windows Server 2008, and
|
|
later, the <code class="computeroutput">CancelIoEx</code> function is always used.
|
|
</p>
|
|
<p>
|
|
The <code class="computeroutput">CancelIo</code> function has two issues that should be
|
|
considered before enabling its use:
|
|
</p>
|
|
<p>
|
|
* It will only cancel asynchronous operations that were initiated
|
|
in the current thread.
|
|
</p>
|
|
<p>
|
|
* It can appear to complete without error, but the request to cancel
|
|
the unfinished operations may be silently ignored by the operating
|
|
system. Whether it works or not seems to depend on the drivers that
|
|
are installed.
|
|
</p>
|
|
<p>
|
|
For portable cancellation, consider using one of the following alternatives:
|
|
</p>
|
|
<p>
|
|
* Disable asio's I/O completion port backend by defining BOOST_ASIO_DISABLE_IOCP.
|
|
</p>
|
|
<p>
|
|
* Use the socket object's close() function to simultaneously cancel
|
|
the outstanding operations and close the socket.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_NO_TYPEID</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Disables uses of the <code class="computeroutput">typeid</code> operator in Boost.Asio.
|
|
Defined automatically if <code class="computeroutput">BOOST_NO_TYPEID</code> is defined.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HASH_MAP_BUCKETS</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Determines the number of buckets in Boost.Asio's internal <code class="computeroutput">hash_map</code>
|
|
objects. The value should be a comma separated list of prime numbers,
|
|
in ascending order. The <code class="computeroutput">hash_map</code> implementation will
|
|
automatically increase the number of buckets as the number of elements
|
|
in the map increases.
|
|
</p>
|
|
<p>
|
|
Some examples:
|
|
</p>
|
|
<p>
|
|
* Defining <code class="computeroutput">BOOST_ASIO_HASH_MAP_BUCKETS</code> to <code class="computeroutput">1021</code>
|
|
means that the <code class="computeroutput">hash_map</code> objects will always contain
|
|
1021 buckets, irrespective of the number of elements in the map.
|
|
</p>
|
|
<p>
|
|
* Defining <code class="computeroutput">BOOST_ASIO_HASH_MAP_BUCKETS</code> to <code class="computeroutput">53,389,1543</code>
|
|
means that the <code class="computeroutput">hash_map</code> objects will initially contain
|
|
53 buckets. The number of buckets will be increased to 389 and then
|
|
1543 as elements are added to the map.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Changes <a class="link" href="reference/basic_socket_streambuf.html" title="basic_socket_streambuf"><code class="computeroutput">basic_socket_streambuf</code></a>
|
|
and <a class="link" href="reference/basic_socket_iostream.html" title="basic_socket_iostream"><code class="computeroutput">basic_socket_iostream</code></a>
|
|
to use the old Boost.Date_Time interface, rather than chrono.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_SEPARATE_COMPILATION</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Uses separately compiled source code for Boost.Asio's implementation.
|
|
</p>
|
|
<p>
|
|
See <a class="link" href="using.html#boost_asio.using.optional_separate_compilation">above</a>
|
|
for further information.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DYN_LINK</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Uses separately compiled source code for Boost.Asio's implementation,
|
|
with symbols exported for inclusion as part of a shared library.
|
|
</p>
|
|
<p>
|
|
See <a class="link" href="using.html#boost_asio.using.optional_separate_compilation">above</a>
|
|
for further information.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_VISIBILITY</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Disables all symbol visibility pragmas.
|
|
</p>
|
|
<p>
|
|
Note: If symbols are hidden, extra care must be taken to ensure that
|
|
Boost.Asio types are not passed across shared library API boundaries.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table></div>
|
|
<h4>
|
|
<a name="boost_asio.using.h5"></a>
|
|
<span class="phrase"><a name="boost_asio.using.compiler_platform_feature_detection_macros"></a></span><a class="link" href="using.html#boost_asio.using.compiler_platform_feature_detection_macros">Compiler/platform
|
|
feature detection macros</a>
|
|
</h4>
|
|
<p>
|
|
Asio automatically defines preprocessor macros corresponding to the detected
|
|
available features on a particular compiler and target platform. These macros
|
|
are named with the prefix <code class="computeroutput">BOOST_ASIO_HAS_</code>, and are listed in the
|
|
table below.
|
|
</p>
|
|
<p>
|
|
Many of these macros also have a corresponding <code class="computeroutput">BOOST_ASIO_DISABLE_</code>
|
|
macro that may be used to explicitly disable the feature.
|
|
</p>
|
|
<p>
|
|
In general, <code class="computeroutput">BOOST_ASIO_HAS_</code> macros should not be explicitly defined
|
|
by the user, except when absolutely required as a workaround for the latest
|
|
version of a compiler or platform. For older compiler/platform combinations
|
|
where a specific <code class="computeroutput">BOOST_ASIO_HAS_</code> macro is not automatically defined,
|
|
testing may have shown that a claimed feature isn't sufficiently conformant
|
|
to be compatible with Boost.Asio's needs.
|
|
</p>
|
|
<div class="informaltable"><table class="table">
|
|
<colgroup>
|
|
<col>
|
|
<col>
|
|
<col>
|
|
</colgroup>
|
|
<thead><tr>
|
|
<th>
|
|
<p>
|
|
Macro
|
|
</p>
|
|
</th>
|
|
<th>
|
|
<p>
|
|
Description
|
|
</p>
|
|
</th>
|
|
<th>
|
|
<p>
|
|
Macro to disable feature
|
|
</p>
|
|
</th>
|
|
</tr></thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_ALIAS_TEMPLATES</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Support alias templates on compilers known to allow it.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_ALIAS_TEMPLATES</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_BOOST_ARRAY</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Boost array library.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_BOOST_ARRAY</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_BOOST_ASSERT</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Boost assert macro.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_BOOST_ASSERT</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_BOOST_BIND</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Boost bind function.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_BOOST_BIND</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_BOOST_CHRONO</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Boost support for chrono.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_BOOST_CHRONO</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_BOOST_CONFIG</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_BOOST_DATE_TIME</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Boost support for the DateTime library.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_BOOST_DATE_TIME</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_BOOST_LIMITS</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Boost limits header.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_BOOST_LIMITS</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_BOOST_REGEX</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Boost regex library.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_BOOST_REGEX</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_BOOST_THROW_EXCEPTION</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Boost throw_exception function.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_BOOST_THROW_EXCEPTION</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_BOOST_WORKAROUND</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Boost's BOOST_WORKAROUND macro.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_BOOST_WORKAROUND</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_CHRONO</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Some form of chrono library is available.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_CLANG_LIBCXX</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Clang / libc++ detection.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_CONCEPTS</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Support concepts on compilers known to allow them.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_CONCEPTS</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_CONSTANT_EXPRESSION_SFINAE</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Support SFINAE use of constant expressions on compilers known to
|
|
allow it.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_CONSTANT_EXPRESSION_SFINAE</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_CONSTEXPR</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Support constexpr on compilers known to allow it.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_CONSTEXPR</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_CO_AWAIT</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Support the co_await keyword on compilers known to allow it.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_CO_AWAIT</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_CSTDINT</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for the cstdint header.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_CSTDINT</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_CXX11_ALLOCATORS</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for the C++11 allocator additions.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_CXX11_ALLOCATORS</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_DECLTYPE</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Support automatic type deduction on compilers known to support it.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_DECLTYPE</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_DEFAULT_FUNCTION_TEMPLATE_ARGUMENTS</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Support default function template arguments on compilers known to
|
|
allow it.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_DEFAULT_FUNCTION_TEMPLATE_ARGUMENTS</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_DEV_POLL</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Solaris: /dev/poll.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_DEV_POLL</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_EPOLL</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Linux: epoll, eventfd and timerfd.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_EPOLL</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_EVENTFD</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Linux: epoll, eventfd and timerfd.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_EVENTFD</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_GETADDRINFO</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Can use getaddrinfo() and getnameinfo().
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_GETADDRINFO</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_HANDLER_HOOKS</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Handler hooking. Disabled for ancient Borland C++ and gcc compilers.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_HANDLER_HOOKS</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_IOCP</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Windows: IO Completion Ports.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_IOCP</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_KQUEUE</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Mac OS X, FreeBSD, NetBSD, OpenBSD: kqueue.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_KQUEUE</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_LOCAL_SOCKETS</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
UNIX domain sockets.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_LOCAL_SOCKETS</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_MOVE</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Support move construction and assignment on compilers known to allow
|
|
it.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_MOVE</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_MSG_NOSIGNAL</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Kernel support for MSG_NOSIGNAL.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_NOEXCEPT</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Support noexcept on compilers known to allow it.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_NOEXCEPT</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_NULLPTR</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for the nullptr_t type.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_NULLPTR</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
POSIX: stream-oriented file descriptors.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_POSIX_STREAM_DESCRIPTOR</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_PTHREADS</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
POSIX threads.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_REF_QUALIFIED_FUNCTIONS</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Support ref-qualified functions on compilers known to allow it.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_REF_QUALIFIED_FUNCTIONS</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_RETURN_TYPE_DEDUCTION</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Support return type deduction on compilers known to allow it.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_RETURN_TYPE_DEDUCTION</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_SECURE_RTL</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Microsoft Visual C++'s secure C runtime library.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_SECURE_RTL</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_SERIAL_PORT</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Serial ports.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_SERIAL_PORT</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Support SFINAEd template variables on compilers known to allow it.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_SFINAE_VARIABLE_TEMPLATES</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_SIGACTION</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Can use sigaction() instead of signal().
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_SIGACTION</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_SIGNAL</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Can use signal().
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_SIGNAL</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_SOURCE_LOCATION</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library has a source_location that we can use.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_SOURCE_LOCATION</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_SSIZE_T</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Support for POSIX ssize_t typedef.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_SSIZE_T</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_ADDRESSOF</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for addressof.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STD_ADDRESSOF</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_ALLOCATOR_ARG</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for allocator_arg_t.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STD_ALLOCATOR_ARG</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_ANY</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for std::any.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STD_ANY</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_ARRAY</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for arrays.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STD_ARRAY</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_ATOMIC</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for atomic operations.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STD_ATOMIC</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_CALL_ONCE</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for the call_once function.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STD_CALL_ONCE</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_CHRONO</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for chrono. Some standard libraries (such
|
|
as the libstdc++ shipped with gcc 4.6) provide monotonic_clock as
|
|
per early C++0x drafts, rather than the eventually standardised name
|
|
of steady_clock.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STD_CHRONO</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_CHRONO_MONOTONIC_CLOCK</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for chrono. Some standard libraries (such
|
|
as the libstdc++ shipped with gcc 4.6) provide monotonic_clock as
|
|
per early C++0x drafts, rather than the eventually standardised name
|
|
of steady_clock.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_COROUTINE</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for coroutines.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STD_COROUTINE</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_EXCEPTION_PTR</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for std::exception_ptr and std::current_exception.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STD_EXCEPTION_PTR</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_EXPERIMENTAL_SOURCE_LOCATION</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for std::experimental::source_location.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STD_EXPERIMENTAL_SOURCE_LOCATION</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for std::experimental::string_view.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STD_EXPERIMENTAL_STRING_VIEW</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_FUNCTION</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for the function class.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STD_FUNCTION</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_FUTURE</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for futures.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STD_FUTURE</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_INVOKE_RESULT</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library has invoke_result (which supersedes result_of).
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STD_INVOKE_RESULT</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_IOSTREAM_MOVE</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for iostream move construction and assignment.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STD_IOSTREAM_MOVE</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for the mutex and condition variable classes.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STD_MUTEX_AND_CONDVAR</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_NESTED_EXCEPTION</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for std::nested_exception.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STD_NESTED_EXCEPTION</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_SHARED_PTR</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for shared_ptr and weak_ptr.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STD_SHARED_PTR</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_STRING_VIEW</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for std::string_view.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STD_STRING_VIEW</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_SYSTEM_ERROR</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for system errors.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STD_SYSTEM_ERROR</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_THREAD</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for the thread class.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STD_THREAD</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STD_TYPE_TRAITS</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library support for type traits.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STD_TYPE_TRAITS</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_STRING_VIEW</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Standard library has a string_view that we can use.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_STRING_VIEW</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_THREADS</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Threads.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_THREADS</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_THREAD_KEYWORD_EXTENSION</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Support for the __thread keyword extension.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_THREAD_KEYWORD_EXTENSION</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_TIMERFD</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Linux: epoll, eventfd and timerfd.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_UNISTD_H</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
On POSIX (and POSIX-like) platforms we need to include unistd.h in
|
|
order to get access to the various platform feature macros, e.g.
|
|
to be able to test for threads support.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_VARIABLE_TEMPLATES</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Support template variables on compilers known to allow it.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_VARIABLE_TEMPLATES</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_VARIADIC_TEMPLATES</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Support variadic templates on compilers known to allow it.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_VARIADIC_TEMPLATES</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_WINDOWS_OBJECT_HANDLE</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Windows: object handles.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_WINDOWS_OBJECT_HANDLE</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_WINDOWS_OVERLAPPED_PTR</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Windows: OVERLAPPED wrapper.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_WINDOWS_OVERLAPPED_PTR</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Windows: random access handles.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_WINDOWS_RANDOM_ACCESS_HANDLE</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_WINDOWS_STREAM_HANDLE</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Windows: stream handles.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_WINDOWS_STREAM_HANDLE</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_HAS_WORKING_EXPRESSION_SFINAE</code>
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
Enable workarounds for lack of working expression SFINAE.
|
|
</p>
|
|
</td>
|
|
<td>
|
|
<p>
|
|
<code class="computeroutput">BOOST_ASIO_DISABLE_WORKING_EXPRESSION_SFINAE</code>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table></div>
|
|
<h4>
|
|
<a name="boost_asio.using.h6"></a>
|
|
<span class="phrase"><a name="boost_asio.using.mailing_list"></a></span><a class="link" href="using.html#boost_asio.using.mailing_list">Mailing
|
|
List</a>
|
|
</h4>
|
|
<p>
|
|
A mailing list specifically for Boost.Asio may be found on <a href="http://sourceforge.net/mail/?group_id=122478" target="_top">SourceForge.net</a>.
|
|
Newsgroup access is provided via <a href="http://dir.gmane.org/gmane.comp.lib.boost.asio.user" target="_top">Gmane</a>.
|
|
</p>
|
|
<h4>
|
|
<a name="boost_asio.using.h7"></a>
|
|
<span class="phrase"><a name="boost_asio.using.wiki"></a></span><a class="link" href="using.html#boost_asio.using.wiki">Wiki</a>
|
|
</h4>
|
|
<p>
|
|
Users are encouraged to share examples, tips and FAQs on the Boost.Asio wiki,
|
|
which is located at <a href="http://think-async.com/Asio/" target="_top">http://think-async.com/Asio/</a>.
|
|
</p>
|
|
</div>
|
|
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
|
<td align="left"></td>
|
|
<td align="right"><div class="copyright-footer">Copyright © 2003-2021 Christopher
|
|
M. Kohlhoff<p>
|
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
|
</p>
|
|
</div></td>
|
|
</tr></table>
|
|
<hr>
|
|
<div class="spirit-nav">
|
|
<a accesskey="p" href="overview/implementation.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_asio.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../boost_asio.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tutorial.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
|
|
</div>
|
|
</body>
|
|
</html>
|