C++17
std::variant
para C++11 / 14 / 17
MPark.Variant es una implementación de C++17 std::variant
para C++11 / 14 / 17 .
std::variant
para libc++std::variant
de libc++ . La rama de encabezado único proporciona un archivo variant.hpp
independiente para cada versión. ¡Cópialo y #include
inclúyelo!
Puede agregar mpark/variant
como un submódulo a su proyecto.
git submodule add https://github.com/mpark/variant.git 3rdparty/variant
Agregue el directorio include
a su ruta de inclusión con -I3rdparty/variant/include
y luego #include
el encabezado variant.hpp
con #include <mpark/variant.hpp>
.
Si usa CMake, simplemente puede usar 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
Esto instalará mpark/variant
en el directorio de instalación predeterminado para su plataforma ( /usr/local
para Unix, C:Program Files
para Windows). También puede instalar en una ubicación personalizada a través de la variable CMAKE_INSTALL_PREFIX
(por ejemplo, cmake .. -DCMAKE_INSTALL_PREFIX=/opt
).
CMake puede encontrar el mpark/variant
instalado a través de 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 buscará mpark/variant
en su conjunto predeterminado de prefijos de instalación. Si mpark/variant
está instalado en una ubicación personalizada a través de la variable CMAKE_INSTALL_PREFIX
, probablemente necesitará usar CMAKE_PREFIX_PATH
para especificar la ubicación (por ejemplo, cmake .. -DCMAKE_PREFIX_PATH=/opt
).
Esta biblioteca requiere un compilador C++ 11 compatible con el estándar. Los siguientes compiladores se prueban continuamente:
Compilador | Sistema operativo | Cadena de versión |
---|---|---|
CCG 4.8.5 | Ubuntu 16.04.6 LTS | g++-4.8 (Ubuntu 4.8.5-4ubuntu8~16.04.1) 4.8.5 |
CCG 4.9.4 | Ubuntu 16.04.6 LTS | g++-4.9 (Ubuntu 4.9.4-2ubuntu1~16.04) 4.9.4 |
CCG 5.5.0 | Ubuntu 16.04.6 LTS | g++-5 (Ubuntu 5.5.0-12ubuntu1~16.04) 5.5.0 20171010 |
CCG 6.5.0 | Ubuntu 16.04.6 LTS | g++-6 (Ubuntu 6.5.0-2ubuntu1~16.04) 6.5.0 20181026 |
CCG 7.4.0 | Ubuntu 16.04.6 LTS | g++-7 (Ubuntu 7.4.0-1ubuntu1 |
CCG 8.3.0 | Ubuntu 16.04.6 LTS | g++-8 (Ubuntu 8.3.0-16ubuntu3~16.04) 8.3.0 |
CCG 9.2.1 | Ubuntu 16.04.6 LTS | g++-9 (Ubuntu 9.2.1-17ubuntu1~16.04) 9.2.1 20191102 |
Sonido metálico 3.6.2 | Ubuntu 16.04.6 LTS | Ubuntu clang versión 3.6.2-3ubuntu2 (tags/RELEASE_362/final) (basado en LLVM 3.6.2) |
Sonido metálico 3.7.1 | Ubuntu 16.04.6 LTS | Ubuntu clang versión 3.7.1-2ubuntu2 (tags/RELEASE_371/final) (basado en LLVM 3.7.1) |
Sonido metálico 3.8.0 | Ubuntu 16.04.6 LTS | clang versión 3.8.0-2ubuntu4 (etiquetas/RELEASE_380/final) |
Sonido metálico 3.9.1 | Ubuntu 16.04.6 LTS | clang versión 3.9.1-4ubuntu3~16.04.2 (etiquetas/RELEASE_391/rc2) |
Sonido metálico 4.0.0 | Ubuntu 16.04.6 LTS | clang versión 4.0.0-1ubuntu1~16.04.2 (etiquetas/RELEASE_400/rc1) |
Sonido metálico 5.0.0 | Ubuntu 16.04.6 LTS | versión clang 5.0.0-3~16.04.1 (etiquetas/RELEASE_500/final) |
Sonido metálico 6.0.0 | Ubuntu 16.04.6 LTS | clang versión 6.0.0-1ubuntu2~16.04.1 (etiquetas/RELEASE_600/final) |
Sonido metálico 7.1.0 | Ubuntu 16.04.6 LTS | sonido metálico versión 7.1.0-svn353565-1 |
Sonido metálico 8.0.1 | Ubuntu 16.04.6 LTS | sonido metálico versión 8.0.1-svn369350-1 |
Sonido metálico Xcode 8.3 | Versión 16.7.0 del núcleo Darwin (OS X 10.12.6) | Apple LLVM versión 8.1.0 (clang-802.0.42) |
Sonido metálico Xcode 9.4 | Versión 17.4.0 del núcleo Darwin (OS X 10.13.3) | Apple LLVM versión 9.1.0 (clang-902.0.39.2) |
Sonido metálico Xcode 10.1 | Versión 17.7.0 del kernel de Darwin (OS X 10.13.6) | Apple LLVM versión 10.0.0 (clang-1000.11.45.5) |
Estudio visual 14 2015 | Visual Studio 2015 con la Actualización 3 | MSVC 19.0.24241.7 |
Estudio visual 15 2017 | Visual Studio 2017 con la actualización 8 | MSVC 19.15.26732.1 |
Estudio visual 15 2017 | Visual Studio 2017 con la actualización 9 | MSVC 19.16.27025.1 |
Visual Studio 15 2017 ( Clang/LLVM ) | Estudio visual 2017 | Sonido metálico 7.0.0 |
constexpr
no está disponible para operadores relacionales y visit
.std::variant
requiere soporte -std=c++17
. MPARK_VARIANT_INCLUDE_TESTS
: STRING
( predeterminado : ""
)
Lista de pruebas para crear separadas por punto y coma. Los valores posibles son mpark
y libc++
.
NOTA : Las pruebas libc++ std::variant
se crean con -std=c++17
.
Consulte prueba/README.md.
Distribuido bajo la licencia de software Boost, versión 1.0.