Docs 菜单
Docs 主页
/ / /
C++ 驱动程序

选择C++17 Polyfill

mongocxx 驱动程序使用 C++ 17功能 std::optionalstd::string_view 。 要使用 C++ 17标准库实现来实现这些功能,请将 CMake 配置变量CMAKE_CXX_STANDARD设置为17或更高。 否则,要为 C++ 之前的17配置编译 mongocxx 驱动程序,必须从以下选项中选择 polyfill 库实现:

  • bsoncxx(仅当 -DENABLE_BSONCXX_POLY_USE_IMPLS=ON 时才默认

    使用-DBSONCXX_POLY_USE_IMPLS=ON选择。 强烈建议使用此选项,因为它不需要额外的外部库依赖项。 要在未指定其他选项时为 C++ 之前的17配置默认选择此选项,请设立ENABLE_BSONCXX_POLY_USE_IMPLS=ON (在即将发布的主要发布中,此选项启用默认设立为 ON)。

  • MNMLSTC/core(非 Windows 平台的默认设置

    此选项已弃用,并将在即将发布的主要版本中删除。 使用-DBSONCXX_POLY_USE_MNMLSTC=1选择。

    注意

    此选项将 MNMLSTC/core 的仅标头安装提供到 bsoncxx 库安装中,因此将在配置过程中从Github下载 MLNMLSTC。 如果系统上已有可用版本的 MNMLSTC,则可以使用-DBSONCXX_POLY_USE_SYSTEM_MNMLSTC来避免下载步骤。

  • Boost( Windows 平台默认

    此选项已弃用,并将在即将发布的主要版本中删除。 使用-DBSONCXX_POLY_USE_BOOST=1选择。 如果使用的 MSVC 版本不支持 C++ 17 ,这是目前唯一的非 bsoncxx 选项。

注意

“default”是指未显式选择任何 polyfill 库时的 C++ 17之前的配置。

大多数用户应使用带有-DENABLE_BSONCXX_POLY_USE_IMPLS=ON的默认行为。 但是,如果您对其中一个外部 polyfill 库有偏好(例如 已经是应用程序正在使用的依赖项),您可能更愿意显式选择该外部 polyfill 库,而不是依赖默认选择行为。

注意

C++标准一致性和 polyfill 功能支持的行为可能因所选 polyfill 库而异。 这些 polyfill 的目的是通过提供C++ 17等效项的替代项来支持C++ 之前的17配置。 因此,我们建议尽可能通过设置-DCMAKE_CXX_STANDARD=17或更高版本来使用C++17标准库。

警告

polyfill 库的选择对 mongocxx 库的公共 API 和 ABI 有直接影响。 更改 polyfill 可能会导致破坏性源代码的更改(在编译期间)和破坏二进制文件的更改(在链接或执行期间)。 为了限制对 polyfill 特定配置或行为的依赖,请避免将stdx::string_viewstdx::optional<T>与非 mongocxx 库接口一起使用。

后退

使用 BSON