Docs Menu
Docs Home
/ /

Elige un Polyfill de C++17

El controlador mongocxx utiliza características de C++17 std::optional y std::string_view. Para usar las implementaciones de la biblioteca estándar de C++17 para estas funciones, establezca la variable de configuración CMAKE_CXX_STANDARD de CMake en 17 o superior. De lo contrario, para compilar el controlador mongocxx para configuraciones anteriores a C++17, debe seleccionar una implementación de la biblioteca polyfill entre 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 bibliotecas externas. Para habilitar esta opción de forma predeterminada en configuraciones anteriores a C++17 cuando no se especifiquen otras opciones, configure ENABLE_BSONCXX_POLY_USE_IMPLS=ON (esta opción estará activada de forma predeterminada en una próxima versión principal).

  • MNMLSTC/core (predeterminadopara plataformas que no sean Windows)

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

    Nota

    Esta opción proporciona una instalación de MNMLSTC/core solo en el encabezado de la instalación de la biblioteca bsoncxx y, por lo tanto, descargará MLNMLSTC desde GitHub durante el proceso de configuración. Si ya tiene una versión de MNMLSTC disponible en su sistema, puede omitir el paso de descarga usando -DBSONCXX_POLY_USE_SYSTEM_MNMLSTC.

  • Boost (predeterminadopara plataformas Windows)

    Esta opción está obsoleta y se eliminará en una próxima versión principal. Seleccione -DBSONCXX_POLY_USE_BOOST=1 con. Actualmente, esta es la única opción que no es bsoncxx si utiliza una versión de MSVC que no es compatible con 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 deberían usar el comportamiento predeterminado con -DENABLE_BSONCXX_POLY_USE_IMPLS=ON. Sin embargo, si prefiere una de las bibliotecas polyfill externas (por ejemplo, si su aplicación ya utiliza una dependencia), puede preferir seleccionarla explícitamente en lugar de usar el comportamiento de selección predeterminado.

Nota

La conformidad con el estándar de C++ y el comportamiento compatible de las funciones polyfill pueden variar según la biblioteca polyfill seleccionada. El propósito de estos polyfills es dar soporte a las configuraciones anteriores a C++17, proporcionando sustitutos para sus equivalentes en C++17. Por lo tanto, recomendamos usar la biblioteca estándar de C++17 siempre que sea posible, configurando -DCMAKE_CXX_STANDARD=17 o una versión posterior.

Advertencia

La elección de la biblioteca polyfill tiene un impacto directo en la API pública y la ABI de la biblioteca mongocxx. Cambiar la biblioteca polyfill puede provocar cambios que afecten tanto al código fuente (durante la compilación) como al código binario (durante el enlace o la ejecución). Para limitar la dependencia de la configuración o el comportamiento específicos de polyfill, evite usar stdx::string_view y stdx::optional<T> con interfaces de bibliotecas que no sean mongocxx.

Next

C