Boost C++ 库

...世界上最受推崇和专业设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

PrevUpHomeNext

使用、构建和配置 Boost.Asio

支持的平台

以下平台和编译器组合经过定期测试

以下平台也可能适用

依赖项

为了链接使用 Boost.Asio 的程序,必须提供以下库

此外,一些示例还需要 Boost.Thread、Boost.Date_Time 或 Boost.Serialization 库。

[Note] 注意

对于 MSVC 或 Borland C++,您可能希望将 -DBOOST_DATE_TIME_NO_LIB-DBOOST_REGEX_NO_LIB 添加到您的项目设置中,以分别禁用 Boost.Date_Time 和 Boost.Regex 库的自动链接。或者,您可以选择构建这些库并链接到它们。

构建 Boost 库

您可以通过从 Boost 下载包的根目录运行以下命令来构建使用 Boost.Asio 及其示例所需的 Boost 库子集

  b2 --with-system --with-thread --with-date_time --with-regex --with-serialization stage

这假定您已经构建了 b2。有关更多详细信息,请参阅 Boost.Build 文档。

可选的独立编译

默认情况下,Boost.Asio 是一个仅头文件的库。但是,一些开发人员可能更喜欢使用单独编译的源代码构建 Boost.Asio。为此,请将 #include <boost/asio/impl/src.hpp> 添加到一个(且仅一个)源文件中,然后在项目/编译器设置中定义 BOOST_ASIO_SEPARATE_COMPILATION 来构建程序。或者,可以定义 BOOST_ASIO_DYN_LINK 以将单独编译的 Boost.Asio 构建为共享库的一部分。

如果使用 Boost.Asio 的 SSL 支持,您还需要添加 #include <boost/asio/ssl/impl/src.hpp>

调试器支持

可在 https://github.com/chriskohlhoff/asio-debugger-extensions 找到一些用于 Asio 的调试器扩展。

下表列出的宏可用于控制 Boost.Asio 的接口、功能和行为。

描述

BOOST_ASIO_NO_DEPRECATED

禁用 Boost.Asio 的已弃用接口和功能。

请参阅网络 TS 兼容性,查看已弃用的旧接口及其替换列表。

BOOST_ASIO_NO_TS_EXECUTORS

禁用 Boost.Asio 对网络 TS 执行器模型的支持。

默认情况下,Boost.Asio 同时支持网络 TS 风格的执行器和符合提议的标准执行器模型的执行器。此宏可用于将支持限制为仅提议的标准执行器。有关更多信息,请参阅提议的标准执行器

BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT

指定 any_io_executor 指的是网络 TS 风格的多态包装器。

any_io_executor 类型别名是所有 I/O 对象的默认运行时多态执行器。此类型别名指向 execution::any_executor<> 模板,该模板具有一组支持的属性,专为与 I/O 一起使用而指定。

这个新名称可能会破坏直接使用旧的网络 TS 风格多态包装器 executor 的现有代码。如果需要向后兼容性,BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT 会将 any_io_executor 类型别名更改为指向 executor 多态包装器。

有关更多信息,请参阅提议的标准执行器

BOOST_ASIO_NO_DYNAMIC_BUFFER_V1

禁用对 DynamicBuffer_v1 类型要求的支持。

默认情况下,动态缓冲区操作(例如 readasync_readread_untilasync_read_untilwriteasync_write)同时支持 DynamicBuffer_v1DynamicBuffer_v2 动态缓冲区类型要求。

当定义 BOOST_ASIO_NO_DYNAMIC_BUFFER_V1 时,对 DynamicBuffer_v1 类型和函数的所有支持都将被 #ifdef 排除。因此,使用 basic_streambufreadasync_readread_untilasync_read_untilwriteasync_write 函数一起使用的支持也被禁用。

BOOST_ASIO_ENABLE_BUFFER_DEBUGGING

启用 Boost.Asio 的缓冲区调试支持,这可以帮助识别何时在读取或写入操作中使用无效缓冲区(例如,如果要写入的 std::string 对象在写入操作完成之前被销毁)。

当使用 Microsoft Visual C++ 11.0 或更高版本时,如果编译器的迭代器调试支持已启用,则会自动定义此宏,除非已定义 BOOST_ASIO_DISABLE_BUFFER_DEBUGGING

当使用 g++ 时,如果标准库调试已启用(定义了 _GLIBCXX_DEBUG),则会自动定义此宏,除非已定义 BOOST_ASIO_DISABLE_BUFFER_DEBUGGING

BOOST_ASIO_DISABLE_BUFFER_DEBUGGING

显式禁用 Boost.Asio 的缓冲区调试支持。

BOOST_ASIO_ENABLE_HANDLER_TRACKING

启用 Boost.Asio 的 处理程序跟踪调试工具。

BOOST_ASIO_DISABLE_DEV_POLL

显式禁用 Solaris 上的 /dev/poll 支持,强制使用基于 select 的实现。

BOOST_ASIO_DISABLE_EPOLL

显式禁用 Linux 上的 epoll 支持,强制使用基于 select 的实现。

BOOST_ASIO_DISABLE_EVENTFD

显式禁用 Linux 上的 eventfd 支持,强制使用管道来中断阻塞的 epoll/select 系统调用。

BOOST_ASIO_DISABLE_KQUEUE

显式禁用 macOS 和 BSD 变体上的 kqueue 支持,强制使用基于 select 的实现。

BOOST_ASIO_DISABLE_IOCP

显式禁用 Windows 上的 I/O 完成端口支持,强制使用基于 select 的实现。

BOOST_ASIO_DISABLE_THREADS

显式禁用 Boost.Asio 的线程支持,与整个 Boost 是否支持线程无关。

BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN

默认情况下,Boost.Asio 在为 Windows 编译时会自动定义 WIN32_LEAN_AND_MEAN,以最大限度地减少包含的 Windows SDK 头文件和功能的数量。BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN 的存在阻止了 WIN32_LEAN_AND_MEAN 被定义。

BOOST_ASIO_NO_NOMINMAX

默认情况下,Boost.Asio 在为 Windows 编译时会自动定义 NOMINMAX,以抑制 min()max() 宏的定义。BOOST_ASIO_NO_NOMINMAX 的存在阻止了 NOMINMAX 被定义。

BOOST_ASIO_NO_DEFAULT_LINKED_LIBS

当使用 Microsoft Visual C++ 或 Borland C++ 为 Windows 编译时,Boost.Asio 将自动链接必要的 Windows SDK 库以支持套接字(即 ws2_32.libmswsock.lib,或为 Windows CE 构建时的 ws2.lib)。BOOST_ASIO_NO_DEFAULT_LINKED_LIBS 宏阻止了这些库被链接。

BOOST_ASIO_ENABLE_CANCELIO

在旧版本的 Windows 上启用 CancelIo 函数的使用。如果未启用,则在 Windows XP、Windows Server 2003 和更早版本的 Windows 上运行时,对套接字对象上的 cancel() 的调用将始终失败,并返回 asio::error::operation_not_supported 错误。在 Windows Vista、Windows Server 2008 和更高版本上运行时,始终使用 CancelIoEx 函数。

CancelIo 函数有两个问题,在启用其使用之前应考虑

  • 它只会取消在当前线程中启动的异步操作。
  • 它可能看起来已无错误地完成,但操作系统可能会默默地忽略取消未完成操作的请求。它是否有效似乎取决于已安装的驱动程序。

    对于可移植的取消,请考虑使用以下替代方案之一

  • 通过定义 BOOST_ASIO_DISABLE_IOCP 禁用 asio 的 I/O 完成端口后端。
  • 使用套接字对象的 close() 函数来同时取消未完成的操作并关闭套接字。

BOOST_ASIO_NO_TYPEID

禁用 Boost.Asio 中 typeid 运算符的使用。如果定义了 BOOST_NO_TYPEID,则自动定义。

BOOST_ASIO_HASH_MAP_BUCKETS

确定 Boost.Asio 内部 hash_map 对象中的桶数。该值应为以逗号分隔的升序排列的质数列表。hash_map 实现将随着映射中元素数量的增加而自动增加桶数。

一些例子

  • BOOST_ASIO_HASH_MAP_BUCKETS 定义为 1021 意味着 hash_map 对象将始终包含 1021 个桶,而与映射中元素的数量无关。
  • BOOST_ASIO_HASH_MAP_BUCKETS 定义为 53,389,1543 意味着 hash_map 对象最初将包含 53 个桶。随着元素添加到映射中,桶数将增加到 389,然后再增加到 1543。

BOOST_ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM

更改 basic_socket_streambufbasic_socket_iostream 以使用旧的 Boost.Date_Time 接口,而不是 chrono。

BOOST_ASIO_SEPARATE_COMPILATION

对 Boost.Asio 的实现使用单独编译的源代码。

有关更多信息,请参见上文可选的独立编译

BOOST_ASIO_DYN_LINK

对 Boost.Asio 的实现使用单独编译的源代码,并导出符号以包含为共享库的一部分。

有关更多信息,请参见上文可选的独立编译

BOOST_ASIO_DISABLE_VISIBILITY

禁用所有符号可见性编译指示。

注意:如果符号被隐藏,则必须格外小心,以确保 Boost.Asio 类型不会跨共享库 API 边界传递。

编译器/平台特性检测宏

Asio 自动定义与特定编译器和目标平台上检测到的可用特性相对应的预处理器宏。这些宏以 BOOST_ASIO_HAS_ 为前缀命名,并在下表中列出。

许多这些宏还具有相应的 BOOST_ASIO_DISABLE_ 宏,可用于显式禁用该特性。

通常,BOOST_ASIO_HAS_ 宏不应由用户显式定义,除非绝对必要作为最新版本编译器或平台的解决方法。对于较旧的编译器/平台组合,其中未自动定义特定的 BOOST_ASIO_HAS_ 宏,测试可能表明声明的特性与 Boost.Asio 的需求不兼容。

描述

禁用特性的宏

BOOST_ASIO_HAS_ALIAS_TEMPLATES

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_ALIGNOF

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_BOOST_ALIGN

Boost align 库。

BOOST_ASIO_DISABLE_BOOST_ALIGN

BOOST_ASIO_HAS_BOOST_ARRAY

Boost array 库。

BOOST_ASIO_DISABLE_BOOST_ARRAY

BOOST_ASIO_HAS_BOOST_ASSERT

Boost assert 宏。

BOOST_ASIO_DISABLE_BOOST_ASSERT

BOOST_ASIO_HAS_BOOST_BIND

Boost bind 函数。

BOOST_ASIO_DISABLE_BOOST_BIND

BOOST_ASIO_HAS_BOOST_CHRONO

Boost 对 chrono 的支持。

BOOST_ASIO_DISABLE_BOOST_CHRONO

BOOST_ASIO_HAS_BOOST_CONFIG

Boost.Config 库可用。

BOOST_ASIO_HAS_BOOST_CONTEXT_FIBER

Boost 对 Context 库光纤的支持。

BOOST_ASIO_DISABLE_BOOST_CONTEXT_FIBER

BOOST_ASIO_HAS_BOOST_COROUTINE

Boost 对 Coroutine 库的支持。

BOOST_ASIO_DISABLE_BOOST_COROUTINE

BOOST_ASIO_HAS_BOOST_DATE_TIME

Boost 对 DateTime 库的支持。

BOOST_ASIO_DISABLE_BOOST_DATE_TIME

BOOST_ASIO_HAS_BOOST_LIMITS

Boost limits 头文件。

BOOST_ASIO_DISABLE_BOOST_LIMITS

BOOST_ASIO_HAS_BOOST_REGEX

Boost regex 库。

BOOST_ASIO_DISABLE_BOOST_REGEX

BOOST_ASIO_HAS_BOOST_SOURCE_LOCATION

Boost 对 source_location 和系统错误的支持。

BOOST_ASIO_DISABLE_BOOST_SOURCE_LOCATION

BOOST_ASIO_HAS_BOOST_THROW_EXCEPTION

Boost throw_exception 函数。

BOOST_ASIO_DISABLE_BOOST_THROW_EXCEPTION

BOOST_ASIO_HAS_BOOST_WORKAROUND

Boost 的 BOOST_WORKAROUND 宏。

BOOST_ASIO_DISABLE_BOOST_WORKAROUND

BOOST_ASIO_HAS_CHRONO

某种形式的 chrono 库可用。

BOOST_ASIO_HAS_CLANG_LIBCXX

Clang / libc++ 检测。

BOOST_ASIO_HAS_CONCEPTS

在已知允许概念的编译器上支持概念。

BOOST_ASIO_DISABLE_CONCEPTS

BOOST_ASIO_HAS_CONSTANT_EXPRESSION_SFINAE

在已知允许的编译器上支持常量表达式的 SFINAE 用法。

BOOST_ASIO_DISABLE_CONSTANT_EXPRESSION_SFINAE

BOOST_ASIO_HAS_CONSTEXPR

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_CO_AWAIT

在已知允许的编译器上支持 co_await 关键字。

BOOST_ASIO_DISABLE_CO_AWAIT

BOOST_ASIO_HAS_CSTDINT

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_CXX11_ALLOCATORS

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_DECLTYPE

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_DEFAULT_FUNCTION_TEMPLATE_ARGUMENTS

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_DEV_POLL

Solaris: /dev/poll。

BOOST_ASIO_DISABLE_DEV_POLL

BOOST_ASIO_HAS_ENUM_CLASS

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_EPOLL

Linux: epoll, eventfd, timerfd 和 io_uring。

BOOST_ASIO_DISABLE_EPOLL

BOOST_ASIO_HAS_EVENTFD

Linux: epoll, eventfd, timerfd 和 io_uring。

BOOST_ASIO_DISABLE_EVENTFD

BOOST_ASIO_HAS_FILE

文件。

BOOST_ASIO_DISABLE_FILE

BOOST_ASIO_HAS_GETADDRINFO

可以使用 getaddrinfo() 和 getnameinfo()。

BOOST_ASIO_DISABLE_GETADDRINFO

BOOST_ASIO_HAS_HANDLER_HOOKS

处理程序挂钩。对于旧的 Borland C++ 和 gcc 编译器禁用。

BOOST_ASIO_DISABLE_HANDLER_HOOKS

BOOST_ASIO_HAS_IOCP

Windows: IO 完成端口。

BOOST_ASIO_DISABLE_IOCP

BOOST_ASIO_HAS_IO_URING_AS_DEFAULT

Linux: io_uring 用于代替 epoll。

BOOST_ASIO_HAS_KQUEUE

Mac OS X, FreeBSD, NetBSD, OpenBSD: kqueue。

BOOST_ASIO_DISABLE_KQUEUE

BOOST_ASIO_HAS_LOCAL_SOCKETS

UNIX 域套接字。

BOOST_ASIO_DISABLE_LOCAL_SOCKETS

BOOST_ASIO_HAS_MOVE

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_MSG_NOSIGNAL

内核支持 MSG_NOSIGNAL。

BOOST_ASIO_HAS_NOEXCEPT

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_NOEXCEPT_FUNCTION_TYPE

在已知允许的编译器上支持函数类型上的 noexcept。

BOOST_ASIO_DISABLE_NOEXCEPT_FUNCTION_TYPE

BOOST_ASIO_HAS_NULLPTR

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_PIPE

管道。

BOOST_ASIO_DISABLE_PIPE

BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR

POSIX: 面向流的文件描述符。

BOOST_ASIO_DISABLE_POSIX_STREAM_DESCRIPTOR

BOOST_ASIO_HAS_PTHREADS

POSIX 线程。

BOOST_ASIO_HAS_REF_QUALIFIED_FUNCTIONS

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_RETURN_TYPE_DEDUCTION

在已知允许的编译器上支持返回类型推导。

BOOST_ASIO_DISABLE_RETURN_TYPE_DEDUCTION

BOOST_ASIO_HAS_SECURE_RTL

Microsoft Visual C++ 的安全 C 运行时库。

BOOST_ASIO_DISABLE_SECURE_RTL

BOOST_ASIO_HAS_SERIAL_PORT

串行端口。

BOOST_ASIO_DISABLE_SERIAL_PORT

BOOST_ASIO_HAS_SFINAE_VARIABLE_TEMPLATES

在已知允许的编译器上支持 SFINAEed 模板变量。

BOOST_ASIO_DISABLE_SFINAE_VARIABLE_TEMPLATES

BOOST_ASIO_HAS_SIGACTION

可以使用 sigaction() 代替 signal()。

BOOST_ASIO_DISABLE_SIGACTION

BOOST_ASIO_HAS_SIGNAL

可以使用 signal()。

BOOST_ASIO_DISABLE_SIGNAL

BOOST_ASIO_HAS_SNPRINTF

标准库支持 snprintf。

BOOST_ASIO_DISABLE_SNPRINTF

BOOST_ASIO_HAS_SOURCE_LOCATION

标准库有一个我们可以使用的 source_location。

BOOST_ASIO_DISABLE_SOURCE_LOCATION

BOOST_ASIO_HAS_SSIZE_T

支持 POSIX ssize_t typedef。

BOOST_ASIO_DISABLE_SSIZE_T

BOOST_ASIO_HAS_STD_ADDRESSOF

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_STD_ALIGN

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_STD_ALIGNED_ALLOC

标准库支持对齐分配。

BOOST_ASIO_DISABLE_STD_ALIGNED_ALLOC

BOOST_ASIO_HAS_STD_ALLOCATOR_ARG

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_STD_ANY

标准库支持 std::any。

BOOST_ASIO_DISABLE_STD_ANY

BOOST_ASIO_HAS_STD_ARRAY

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_STD_ATOMIC

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_STD_CALL_ONCE

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_STD_CHRONO

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_STD_CONCEPTS

在已知允许概念的编译器上支持概念。

BOOST_ASIO_DISABLE_STD_CONCEPTS

BOOST_ASIO_HAS_STD_COROUTINE

标准库支持协程。

BOOST_ASIO_DISABLE_STD_COROUTINE

BOOST_ASIO_HAS_STD_EXCEPTION_PTR

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_STD_EXPERIMENTAL_SOURCE_LOCATION

标准库支持 std::experimental::source_location。

BOOST_ASIO_DISABLE_STD_EXPERIMENTAL_SOURCE_LOCATION

BOOST_ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW

标准库支持 std::experimental::string_view。

BOOST_ASIO_DISABLE_STD_EXPERIMENTAL_STRING_VIEW

BOOST_ASIO_HAS_STD_FUNCTION

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_STD_FUTURE

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_STD_HASH

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_STD_INDEX_SEQUENCE

标准库支持 std::index_sequence。

BOOST_ASIO_DISABLE_STD_INDEX_SEQUENCE

BOOST_ASIO_HAS_STD_INVOKE_RESULT

标准库具有 invoke_result(取代了 result_of)。

BOOST_ASIO_DISABLE_STD_INVOKE_RESULT

BOOST_ASIO_HAS_STD_IOSTREAM_MOVE

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_STD_NESTED_EXCEPTION

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_STD_REFERENCE_WRAPPER

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_STD_SHARED_PTR

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_STD_STRING_VIEW

标准库支持 std::string_view。

BOOST_ASIO_DISABLE_STD_STRING_VIEW

BOOST_ASIO_HAS_STD_SYSTEM_ERROR

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_STD_THREAD

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_STD_TO_ADDRESS

标准库支持 std::to_address。

BOOST_ASIO_DISABLE_STD_TO_ADDRESS

BOOST_ASIO_HAS_STD_TUPLE

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_STD_TYPE_TRAITS

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_STD_VARIANT

标准库支持 std::variant。

BOOST_ASIO_DISABLE_STD_VARIANT

BOOST_ASIO_HAS_STRING_VIEW

标准库有一个我们可以使用的 string_view。

BOOST_ASIO_DISABLE_STRING_VIEW

BOOST_ASIO_HAS_THREADS

线程。

BOOST_ASIO_DISABLE_THREADS

BOOST_ASIO_HAS_THREAD_KEYWORD_EXTENSION

支持 __thread 关键字扩展或等效项。

BOOST_ASIO_DISABLE_THREAD_KEYWORD_EXTENSION

BOOST_ASIO_HAS_TIMERFD

Linux: epoll, eventfd, timerfd 和 io_uring。

BOOST_ASIO_HAS_UNISTD_H

在 POSIX(和类 POSIX)平台上,我们需要包含 unistd.h 以访问各种平台特性宏,例如,能够测试线程支持。

BOOST_ASIO_HAS_USER_DEFINED_LITERALS

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_VARIABLE_TEMPLATES

在已知允许的编译器上支持模板变量。

BOOST_ASIO_DISABLE_VARIABLE_TEMPLATES

BOOST_ASIO_HAS_VARIADIC_LAMBDA_CAPTURES

支持在 lambda 中捕获参数包。

BOOST_ASIO_DISABLE_VARIADIC_LAMBDA_CAPTURES

BOOST_ASIO_HAS_VARIADIC_TEMPLATES

始终启用。为向后兼容用户代码而保留。

BOOST_ASIO_HAS_WINDOWS_OBJECT_HANDLE

Windows: 对象句柄。

BOOST_ASIO_DISABLE_WINDOWS_OBJECT_HANDLE

BOOST_ASIO_HAS_WINDOWS_OVERLAPPED_PTR

Windows: OVERLAPPED 包装器。

BOOST_ASIO_DISABLE_WINDOWS_OVERLAPPED_PTR

BOOST_ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE

Windows: 随机访问句柄。

BOOST_ASIO_DISABLE_WINDOWS_RANDOM_ACCESS_HANDLE

BOOST_ASIO_HAS_WINDOWS_STREAM_HANDLE

Windows: 流句柄。

BOOST_ASIO_DISABLE_WINDOWS_STREAM_HANDLE

BOOST_ASIO_HAS_WORKING_EXPRESSION_SFINAE

为缺乏工作表达式 SFINAE 启用解决方法。

BOOST_ASIO_DISABLE_WORKING_EXPRESSION_SFINAE

邮件列表

可以在 SourceForge.net 上找到专门用于 Boost.Asio 的邮件列表。新闻组访问通过 Gmane 提供。


PrevUpHomeNext