Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home

Elige un Polyfill de C++17

El driver mongocxx utiliza funcionalidades de C++17 std::optional y std::string_view. Para utilizar las implementaciones de la librería estándar de C++17 para estas funcionalidades, establezca la variable de configuración de CMake CMAKE_CXX_STANDARD en 17 o superior. De lo contrario, para compilar el driver mongocxx para configuraciones anteriores a C++17, se debe seleccionar una implementación de librería polyfill de las siguientes opciones:

  • bsoncxx (por defecto solo cuando -DENABLE_BSONCXX_POLY_USE_IMPLS=ON)

    Seleccione con -DBSONCXX_POLY_USE_IMPLS=ON. Esta opción es la más recomendada, ya que no requiere dependencias adicionales de librerías externas. Para habilitar la selección de esta opción por defecto para configuraciones pre-C++17 cuando no se especifiquen otras opciones, configure ENABLE_BSONCXX_POLY_USE_IMPLS=ON (esta opción se establecerá en ON por defecto en una próxima versión principal).

  • MNMLSTC/core (por defecto para plataformas que no son Windows)

    Esta opción está obsoleta y se eliminará en una próxima versión principal. Selecciona con -DBSONCXX_POLY_USE_MNMLSTC=1.

    Nota

    Esta opción proporciona una instalación únicamente de encabezado de MNMLSTC/core en la instalación de la biblioteca bsoncxx y, por lo tanto, descargará MLNMLSTC desde GitHub durante el proceso de configuración. Si ya tienes una versión disponible de MNMLSTC en tu sistema, puedes evitar el paso de descarga usando -DBSONCXX_POLY_USE_SYSTEM_MNMLSTC.

  • Boost (por defecto en las plataformas Windows)

    Esta opción está obsoleta y se eliminará en una próxima versión principal. Selecciona con -DBSONCXX_POLY_USE_BOOST=1. Actualmente, esta es la única opción que no es bsoncxx si se utiliza una versión de MSVC que no admite C++17.

Nota

"default" se refiere a configuraciones anteriores a C++17 cuando no se selecciona explícitamente una librería polyfill.

La mayoría de los usuarios deben utilizar el comportamiento por defecto con -DENABLE_BSONCXX_POLY_USE_IMPLS=ON. Sin embargo, si tienes preferencia por una de las librerías de polyfill externas (p. ej. ya que tu aplicación ya utiliza esa dependencia), es posible que prefieras seleccionar explícitamente esa librería externa de polyfill en lugar de confiar en el comportamiento de selección por defecto.

Nota

La conformidad con el estándar de C++ y el comportamiento soportado de las funcionalidades de polyfill pueden variar dependiendo de la librería de polyfill seleccionada. El propósito de estos polyfills es admitir configuraciones previas a C++17 proporcionando reemplazos para sus equivalentes en C++17. Por lo tanto, se recomienda utilizar la librería estándar de C++17 siempre que sea posible, estableciendo -DCMAKE_CXX_STANDARD=17 o una versión más reciente.

Advertencia

La elección de la librería polyfill tiene un impacto directo en la API pública y el ABI de la librería mongocxx. Cambiar el polyfill puede generar tanto cambios disruptivos en el código fuente (durante la compilación) como cambios disruptivos en el binario (durante el enlace o la ejecución). Para limitar la dependencia de configuraciones o comportamientos específicos de polyfill, evita usar stdx::string_view y stdx::optional<T> con interfaces de librerías que no sean mongocxx.