C++17 ポリフィルの選択
mongocx ドライバーは C++ 17機能 std::optional
およびstd::string_view
を使用します。 これらの機能で C++ 17標準ライブラリの実装を使用するには、CMax 構成変数CMAKE_CXX_STANDARD
を17以上に設定します。 それ以外の場合、C++ 17より前の構成で mongocx ドライバーをコンパイルするには、次のオプションから multifill ライブラリの実装を選択する必要があります。
bsoncx (デフォルトは -DNABLE_BSONCXX_POLY_US_IMDLS=ON の場合のみデフォルト)
-DBSONCXX_POLY_USE_IMPLS=ON
で選択します。 このオプションは追加の外部ライブラリ依存関係を必要としないため、最も推奨されます。 C++ 17より前の構成で、他のオプションが指定されていない場合に、デフォルトでこのオプションを選択できるようにするには、ENABLE_BSONCXX_POLY_USE_IMPLS=ON
を設定します(このオプションは今後のメジャー リリースではデフォルトでオンに設定されます)。MNMLSTC/core( Windows 以外のプラットフォームのデフォルト)
このオプションは非推奨であり、今後のメジャー リリースで削除される予定です。
-DBSONCXX_POLY_USE_MNMLSTC=1
で選択します。注意
このオプションは ヘッダーのみのインストールを bsoncx ライブラリのインストールに MNMLSTC/コアのインストールを提供し、構成プロセス中にGithubから MLNMLSTC をダウンロードします。 システムで使用可能なバージョンの MNMLSTC をすでにシステムで使用している場合は、
-DBSONCXX_POLY_USE_SYSTEM_MNMLSTC
を使用してダウンロード手順を回避できます。ブースト( Windows プラットフォームのデフォルト)
このオプションは非推奨であり、今後のメジャー リリースで削除される予定です。
-DBSONCXX_POLY_USE_BOOST=1
で選択します。 これは現在、C++ 17をサポートしていないバージョンの MSBC を使用している場合の 唯一 の非 bsoncx オプションです。
注意
「デフォルト」は、ポリゴン ライブラリが明示的に選択されていない場合の、 C++ 17より前の構成を指します。
ほとんどのユーザーは-DENABLE_BSONCXX_POLY_USE_IMPLS=ON
のデフォルトの動作を使用する必要があります。 ただし、外部ポリゴン ライブラリのいずれかが優先されている場合(例: すでにアプリケーションで使用されている依存関係)の場合は、デフォルトの選択動作に依存するのではなく、その外部 polyfill ライブラリを明示的に選択することをお勧めします。
注意
C++ 標準準拠とポリゴン機能のサポートされている動作は、選択したポリゴン ライブラリによって異なる場合があります。 これらのポリゴンの目的は、C++ 17同等のスタンドインを提供することで、C++ 以前の17構成をサポートすることです。 したがって、 -DCMAKE_CXX_STANDARD=17
以上を設定して、可能な限り C++ 17標準ライブラリを使用することをお勧めします。
警告
polyfill ライブラリの選択は、mongocx ライブラリのパブリック API と ABI に直接影響します。 ポリゴンを変更すると、ソースを変更する変更(コンパイル中)とバイナリを変更する変更(リンクまたは実行中)の両方につながる可能性があります。 ポリゴン固有の構成または動作への依存を制限するには、非 mongocx ライブラリ インターフェースでstdx::string_view
とstdx::optional<T>
を使用しないでください。