C++17
std::variant
for C++11/14/17
MPark.Variant is an implementation of C++17 std::variant
for C++11/14/17.
std::variant
for libc++std::variant
test suite.The single-header branch provides a standalone variant.hpp
file for each release. Copy it and #include
away!
You can add mpark/variant
as a submodule to your project.
git submodule add https://github.com/mpark/variant.git 3rdparty/variant
Add the include
directory to your include path with -I3rdparty/variant/include
then #include
the variant.hpp
header with #include <mpark/variant.hpp>
.
If you use CMake, you can simply use 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)Installation / CMake
find_package
git clone https://github.com/mpark/variant.git mkdir variant/build && cd variant/build cmake .. cmake --build . --target install
This will install mpark/variant
to the default install-directory for your platform (/usr/local
for Unix, C:\Program Files
for Windows). You can also install at a custom location via the CMAKE_INSTALL_PREFIX
variable, (e.g., cmake .. -DCMAKE_INSTALL_PREFIX=/opt
).
The installed mpark/variant
can then be found by CMake via 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 will search for mpark/variant
in its default set of installation prefixes. If mpark/variant
is installed in a custom location via the CMAKE_INSTALL_PREFIX
variable, you'll likely need to use the CMAKE_PREFIX_PATH
to specify the location (e.g., cmake .. -DCMAKE_PREFIX_PATH=/opt
).
This library requires a standard conformant C++11 compiler. The following compilers are continously tested:
Compiler Operating System Version String 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 16.04ppa1) 7.4.0 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 Clang 3.6.2 Ubuntu 16.04.6 LTS Ubuntu clang version 3.6.2-3ubuntu2 (tags/RELEASE_362/final) (based on LLVM 3.6.2) Clang 3.7.1 Ubuntu 16.04.6 LTS Ubuntu clang version 3.7.1-2ubuntu2 (tags/RELEASE_371/final) (based on LLVM 3.7.1) Clang 3.8.0 Ubuntu 16.04.6 LTS clang version 3.8.0-2ubuntu4 (tags/RELEASE_380/final) Clang 3.9.1 Ubuntu 16.04.6 LTS clang version 3.9.1-4ubuntu3~16.04.2 (tags/RELEASE_391/rc2) Clang 4.0.0 Ubuntu 16.04.6 LTS clang version 4.0.0-1ubuntu1~16.04.2 (tags/RELEASE_400/rc1) Clang 5.0.0 Ubuntu 16.04.6 LTS clang version 5.0.0-3~16.04.1 (tags/RELEASE_500/final) Clang 6.0.0 Ubuntu 16.04.6 LTS clang version 6.0.0-1ubuntu2~16.04.1 (tags/RELEASE_600/final) Clang 7.1.0 Ubuntu 16.04.6 LTS clang version 7.1.0-svn353565-1 exp120190408084827.60 (branches/release_70) Clang 8.0.1 Ubuntu 16.04.6 LTS clang version 8.0.1-svn369350-1 exp120190820122438.78 (branches/release_80) Clang Xcode 8.3 Darwin Kernel Version 16.7.0 (OS X 10.12.6) Apple LLVM version 8.1.0 (clang-802.0.42) Clang Xcode 9.4 Darwin Kernel Version 17.4.0 (OS X 10.13.3) Apple LLVM version 9.1.0 (clang-902.0.39.2) Clang Xcode 10.1 Darwin Kernel Version 17.7.0 (OS X 10.13.6) Apple LLVM version 10.0.0 (clang-1000.11.45.5) Visual Studio 14 2015 Visual Studio 2015 with Update 3 MSVC 19.0.24241.7 Visual Studio 15 2017 Visual Studio 2017 with Update 8 MSVC 19.15.26732.1 Visual Studio 15 2017 Visual Studio 2017 with Update 9 MSVC 19.16.27025.1 Visual Studio 15 2017 (Clang/LLVM) Visual Studio 2017 Clang 7.0.0constexpr
support is not available for visit
and relational operators.std::variant
tests require -std=c++17
support.MPARK_VARIANT_INCLUDE_TESTS
:STRING
(default: ""
)
Semicolon-separated list of tests to build. Possible values are mpark
, and libc++
.
NOTE: The libc++ std::variant
tests are built with -std=c++17
.
Refer to test/README.md.
Distributed under the Boost Software License, Version 1.0.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4