C++17
std::variantC++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 그러면 플랫폼의 기본 설치 디렉터리(Unix의 경우 /usr/local , Windows의 경우 C:Program Files )에 mpark/variant 설치됩니다. CMAKE_INSTALL_PREFIX 변수를 통해 사용자 정의 위치에 설치할 수도 있습니다(예: cmake .. -DCMAKE_INSTALL_PREFIX=/opt ).
설치된 mpark/variant find_package 를 통해 CMake에서 찾을 수 있습니다.
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 | 우분투 16.04.6 LTS | g++-4.8 (우분투 4.8.5-4ubuntu8~16.04.1) 4.8.5 |
| GCC 4.9.4 | 우분투 16.04.6 LTS | g++-4.9 (우분투 4.9.4-2ubuntu1~16.04) 4.9.4 |
| GCC 5.5.0 | 우분투 16.04.6 LTS | g++-5 (우분투 5.5.0-12ubuntu1~16.04) 5.5.0 20171010 |
| GCC 6.5.0 | 우분투 16.04.6 LTS | g++-6(우분투 6.5.0-2ubuntu1~16.04) 6.5.0 20181026 |
| GCC 7.4.0 | 우분투 16.04.6 LTS | g++-7(우분투 7.4.0-1ubuntu1 |
| GCC 8.3.0 | 우분투 16.04.6 LTS | g++-8(우분투 8.3.0-16ubuntu3~16.04) 8.3.0 |
| GCC 9.2.1 | 우분투 16.04.6 LTS | g++-9 (우분투 9.2.1-17ubuntu1~16.04) 9.2.1 20191102 |
| 클랭 3.6.2 | 우분투 16.04.6 LTS | Ubuntu clang 버전 3.6.2-3ubuntu2(tags/RELEASE_362/final)(LLVM 3.6.2 기반) |
| 클랭 3.7.1 | 우분투 16.04.6 LTS | Ubuntu clang 버전 3.7.1-2ubuntu2(tags/RELEASE_371/final)(LLVM 3.7.1 기반) |
| 클랭 3.8.0 | 우분투 16.04.6 LTS | clang 버전 3.8.0-2ubuntu4(태그/RELEASE_380/최종) |
| 클랭 3.9.1 | 우분투 16.04.6 LTS | clang 버전 3.9.1-4ubuntu3~16.04.2(태그/RELEASE_391/rc2) |
| 클랭 4.0.0 | 우분투 16.04.6 LTS | clang 버전 4.0.0-1ubuntu1~16.04.2 (태그/RELEASE_400/rc1) |
| 클랭 5.0.0 | 우분투 16.04.6 LTS | clang 버전 5.0.0-3~16.04.1 (태그/RELEASE_500/최종) |
| 클랭 6.0.0 | 우분투 16.04.6 LTS | clang 버전 6.0.0-1ubuntu2~16.04.1 (태그/RELEASE_600/final) |
| 클랭 7.1.0 | 우분투 16.04.6 LTS | 클랭 버전 7.1.0-svn353565-1 |
| 클랭 8.0.1 | 우분투 16.04.6 LTS | 클랭 버전 8.0.1-svn369350-1 |
| 클랭 Xcode 8.3 | 다윈 커널 버전 16.7.0(OS X 10.12.6) | Apple LLVM 버전 8.1.0(clang-802.0.42) |
| 클랭 Xcode 9.4 | 다윈 커널 버전 17.4.0(OS X 10.13.3) | Apple LLVM 버전 9.1.0(clang-902.0.39.2) |
| 클랭 Xcode 10.1 | 다윈 커널 버전 17.7.0(OS X 10.13.6) | Apple LLVM 버전 10.0.0(clang-1000.11.45.5) |
| 비주얼 스튜디오 14 2015 | 업데이트 3이 포함된 Visual Studio 2015 | MSVC 19.0.24241.7 |
| 비주얼 스튜디오 15 2017 | 업데이트 8이 포함된 Visual Studio 2017 | MSVC 19.15.26732.1 |
| 비주얼 스튜디오 15 2017 | 업데이트 9가 포함된 Visual Studio 2017 | MSVC 19.16.27025.1 |
| 비주얼 스튜디오 15 2017( Clang/LLVM ) | 비주얼 스튜디오 2017 | 클랭 7.0.0 |
visit 및 관계 연산자에는 constexpr 지원을 사용할 수 없습니다.std::variant 테스트를 활성화하려면 -std=c++17 지원이 필요합니다. MPARK_VARIANT_INCLUDE_TESTS : STRING ( 기본값 : "" )
빌드할 테스트의 세미콜론으로 구분된 목록입니다. 가능한 값은 mpark 및 libc++ 입니다.
참고 : libc++ std::variant 테스트는 -std=c++17 로 빌드됩니다.
test/README.md를 참조하세요.
Boost 소프트웨어 라이선스 버전 1.0에 따라 배포됩니다.