C++17
std::variant(C++11 / 14 / 17用)
MPark.Variant は、 C++11 / 14 / 17用のC++17 std::variantの実装です。
std::variantの実装に基づくstd::variantテスト スイートに対して継続的にテストされます。 シングルヘッダー ブランチは、リリースごとにスタンドアロンのvariant.hppファイルを提供します。それをコピーして#includeしてください。
mpark/variantサブモジュールとしてプロジェクトに追加できます。
git submodule add https://github.com/mpark/variant.git 3rdparty/variant -I3rdparty/variant/includeを使用してincludeディレクトリをインクルード パスに追加し、その後、 #include <mpark/variant.hpp>を使用して、 variant.hppヘッダー#include 。
CMake を使用する場合は、単純にadd_subdirectory(3rdparty/variant)を使用できます。
cmake_minimum_required ( VERSION 3.6.3)
project (HelloWorld CXX)
add_subdirectory (3rdparty/variant)
add_executable (hello-world hello_world.cpp)
target_link_libraries (hello-world mpark_variant)find_package git clone https://github.com/mpark/variant.git
mkdir variant/build && cd variant/build
cmake ..
cmake --build . --target installこれにより、 mpark/variantプラットフォームのデフォルトのインストール ディレクトリ (Unix の場合は/usr/local 、Windows の場合はC:Program Files ) にインストールされます。 CMAKE_INSTALL_PREFIX変数を使用してカスタムの場所にインストールすることもできます (例: cmake .. -DCMAKE_INSTALL_PREFIX=/opt )。
インストールされたmpark/variant 、 CMake によってfind_package介して検索できます。
cmake_minimum_required ( VERSION 3.6.3)
project (HelloWorld CXX)
find_package (mpark_variant 1.3.0 REQUIRED)
add_executable (hello-world hello_world.cpp)
target_link_libraries (hello-world mpark_variant) CMake は、インストール プレフィックスのデフォルト セットでmpark/variantを検索します。 mpark/variant CMAKE_INSTALL_PREFIX変数を介してカスタムの場所にインストールされている場合は、 CMAKE_PREFIX_PATH使用して場所を指定する必要がある可能性があります (例: cmake .. -DCMAKE_PREFIX_PATH=/opt )。
このライブラリには、標準に準拠したC++11コンパイラが必要です。次のコンパイラは継続的にテストされています。
| コンパイラ | オペレーティング·システム | バージョン文字列 |
|---|---|---|
| GCC 4.8.5 | Ubuntu 16.04.6 LTS | g++-4.8 (Ubuntu 4.8.5-4ubuntu8~16.04.1) 4.8.5 |
| GCC 4.9.4 | Ubuntu 16.04.6 LTS | g++-4.9 (Ubuntu 4.9.4-2ubuntu1~16.04) 4.9.4 |
| GCC 5.5.0 | Ubuntu 16.04.6 LTS | g++-5 (Ubuntu 5.5.0-12ubuntu1~16.04) 5.5.0 20171010 |
| GCC 6.5.0 | Ubuntu 16.04.6 LTS | g++-6 (Ubuntu 6.5.0-2ubuntu1~16.04) 6.5.0 20181026 |
| GCC 7.4.0 | Ubuntu 16.04.6 LTS | g++-7 (Ubuntu 7.4.0-1ubuntu1) |
| GCC 8.3.0 | Ubuntu 16.04.6 LTS | g++-8 (Ubuntu 8.3.0-16ubuntu3~16.04) 8.3.0 |
| GCC 9.2.1 | Ubuntu 16.04.6 LTS | g++-9 (Ubuntu 9.2.1-17ubuntu1~16.04) 9.2.1 20191102 |
| クラン 3.6.2 | Ubuntu 16.04.6 LTS | Ubuntu Clang バージョン 3.6.2-3ubuntu2 (tags/RELEASE_362/final) (LLVM 3.6.2 ベース) |
| クラン 3.7.1 | Ubuntu 16.04.6 LTS | Ubuntu Clang バージョン 3.7.1-2ubuntu2 (tags/RELEASE_371/final) (LLVM 3.7.1 ベース) |
| クラン 3.8.0 | Ubuntu 16.04.6 LTS | Clang バージョン 3.8.0-2ubuntu4 (タグ/RELEASE_380/final) |
| クラン 3.9.1 | Ubuntu 16.04.6 LTS | Clang バージョン 3.9.1-4ubuntu3~16.04.2 (tags/RELEASE_391/rc2) |
| クラン 4.0.0 | Ubuntu 16.04.6 LTS | Clang バージョン 4.0.0-1ubuntu1~16.04.2 (tags/RELEASE_400/rc1) |
| クラン 5.0.0 | Ubuntu 16.04.6 LTS | Clang バージョン 5.0.0-3~16.04.1 (タグ/RELEASE_500/final) |
| クラン 6.0.0 | Ubuntu 16.04.6 LTS | Clang バージョン 6.0.0-1ubuntu2~16.04.1 (タグ/RELEASE_600/final) |
| クラン 7.1.0 | Ubuntu 16.04.6 LTS | Clang バージョン 7.1.0-svn353565-1 |
| クラン 8.0.1 | Ubuntu 16.04.6 LTS | Clang バージョン 8.0.1-svn369350-1 |
| Clang Xcode 8.3 | ダーウィン カーネル バージョン 16.7.0 (OS X 10.12.6) | Apple LLVM バージョン 8.1.0 (clang-802.0.42) |
| Clang Xcode 9.4 | ダーウィン カーネル バージョン 17.4.0 (OS X 10.13.3) | Apple LLVM バージョン 9.1.0 (clang-902.0.39.2) |
| Clang Xcode 10.1 | ダーウィン カーネル バージョン 17.7.0 (OS X 10.13.6) | Apple LLVM バージョン 10.0.0 (clang-1000.11.45.5) |
| Visual Studio 14 2015 | Update 3 を適用した Visual Studio 2015 | MSVC 19.0.24241.7 |
| Visual Studio 15 2017 | Update 8 を適用した Visual Studio 2017 | MSVC 19.15.26732.1 |
| Visual Studio 15 2017 | Update 9 を適用した Visual Studio 2017 | MSVC 19.16.27025.1 |
| Visual Studio 15 2017 ( Clang/LLVM ) | Visual Studio 2017 | クラン 7.0.0 |
constexprサポートは、 visitおよび関係演算子では利用できません。std::variantテストを有効にするには-std=c++17サポートが必要です。 MPARK_VARIANT_INCLUDE_TESTS : STRING (デフォルト: "" )
構築するテストのセミコロン区切りのリスト。可能な値はmparkおよびlibc++です。
注: libc++ std::variantテストは-std=c++17でビルドされます。
test/README.mdを参照してください。
Boost Software License バージョン 1.0 に基づいて配布されます。