Escolha um C++17 polyfill
O driver mongocxx usa C++17 funcionalidades std::optional
e std::string_view
. Para usar as implementações da biblioteca padrão C++17 para esses recursos, defina a variável de configuração do CMake CMAKE_CXX_STANDARD
como 17 ou superior. Caso contrário, para compilar o driver mongocxx para configurações pré-C++17 , uma implementação de biblioteca polyfill deve ser selecionada a partir das seguintes opções:
bsoncxx (padrão somente quando -denABLE_BSONCXX_POLY_USE_IMPLS=ON)
Selecione com
-DBSONCXX_POLY_USE_IMPLS=ON
. Esta opção é mais recomendada, pois não requer dependências adicionais de bibliotecas externas. Para ativar a seleção dessa opção por padrão para configurações pré-C++17 quando nenhuma outra opção for especificada, definaENABLE_BSONCXX_POLY_USE_IMPLS=ON
( essa opção será definida como Ativado por padrão em uma futura versão principal).MNNLSTC/core (padrão para plataformas não Windows)
Esta opção está obsoleta e será removida em uma futura versão principal. Selecione com
-DBSONCXX_POLY_USE_MNMLSTC=1
.Observação
Essa opção fornece uma instalação somente de cabeçalho do MNNMLSTC/core na instalação da biblioteca bsoncxx e, portanto, fará o download do MLNMLSTC do Github durante o processo de configuração. Se você já tiver uma versão disponível do MONMLSTC em seu sistema, você poderá evitar a etapa de download utilizando
-DBSONCXX_POLY_USE_SYSTEM_MNMLSTC
.Impulsionar (padrão para plataformas Windows)
Esta opção está obsoleta e será removida em uma futura versão principal. Selecione com
-DBSONCXX_POLY_USE_BOOST=1
. Atualmente, essa é a única opção não-bsoncxx se você estiver usando uma versão do MSVC que não seja compatível com C++17.
Observação
"default" refere-se às configurações pré-C++17 quando nenhuma biblioteca de polyfill é explicitamente selecionada.
A maioria dos usuários deve usar o comportamento padrão com -DENABLE_BSONCXX_POLY_USE_IMPLS=ON
. No entanto, se você tiver preferência por uma das bibliotecas de polyfill externas (por exemplo, já uma dependência está sendo usada pelo seu aplicação), talvez você prefira selecionar explicitamente essa biblioteca externa de polyfill em vez de confiar no comportamento de seleção padrão.
Observação
A conformidade com o padrão C++ e o comportamento suportado de recursos de polyfill podem variar dependendo da biblioteca de polyfill selecionada. O objetivo desses polyfills é oferecer suporte às configurações pré-C++17 fornecendo substitutos para seus equivalentes em C++17 . Portanto, recomendamos usar a biblioteca padrão do C++17 sempre que possível, configurando o -DCMAKE_CXX_STANDARD=17
ou mais recente.
Aviso
A escolha da biblioteca polyfill tem um impacto direto na API pública e na ABI da biblioteca mongocxx. Alterar o polyfill pode levar a alterações significativas na origem (durante a compilação) e alterações binárias (durante a vinculação ou a execução). Para limitar a confiança na configuração ou comportamento específico do polyfill, evite usar o stdx::string_view
e o stdx::optional<T>
com interfaces de biblioteca não-mongocxx.