C++17
std::variant
สำหรับ C++11 / 14 / 17
MPark.Variant คือการใช้งาน C++17 std::variant
สำหรับ C++11 / 14 / 17
std::variant
สำหรับ libc++ ของฉันstd::variant
ของ libc++ สาขาส่วนหัวเดียวจัดเตรียมไฟล์ variant.hpp
แบบสแตนด์อโลนสำหรับแต่ละรีลีส คัดลอกแล้ว #include
ไปเลย!
คุณสามารถเพิ่ม mpark/variant
เป็นโมดูลย่อยให้กับโปรเจ็กต์ของคุณได้
git submodule add https://github.com/mpark/variant.git 3rdparty/variant
เพิ่มไดเรกทอรี include
ไปยังพาธรวมของคุณด้วย -I3rdparty/variant/include
จากนั้น #include
หัว variant.hpp
ด้วย #include <mpark/variant.hpp>
หากคุณใช้ 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
ไปยังไดเรกทอรีการติดตั้งเริ่มต้นสำหรับแพลตฟอร์มของคุณ ( /usr/local
สำหรับ Unix, C:Program Files
สำหรับ Windows) คุณยังสามารถติดตั้งในตำแหน่งที่กำหนดเองผ่านตัวแปร 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 | อูบุนตู 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 (แท็ก/RELEASE_362/สุดท้าย) (อิงตาม LLVM 3.6.2) |
เสียงดังกราว 3.7.1 | อูบุนตู 16.04.6 LTS | Ubuntu clang เวอร์ชัน 3.7.1-2ubuntu2 (แท็ก/RELEASE_371/สุดท้าย) (อิงตาม LLVM 3.7.1) |
เสียงดังกราว 3.8.0 | อูบุนตู 16.04.6 LTS | เสียงดังกราวเวอร์ชัน 3.8.0-2ubuntu4 (แท็ก/RELEASE_380/สุดท้าย) |
เสียงดังกราว 3.9.1 | อูบุนตู 16.04.6 LTS | เสียงดังกราวเวอร์ชัน 3.9.1-4ubuntu3~16.04.2 (แท็ก/RELEASE_391/rc2) |
เสียงดังกราว 4.0.0 | อูบุนตู 16.04.6 LTS | เสียงดังกราวเวอร์ชัน 4.0.0-1ubuntu1~16.04.2 (แท็ก/RELEASE_400/rc1) |
เสียงดังกราว 5.0.0 | อูบุนตู 16.04.6 LTS | เสียงดังกราวเวอร์ชัน 5.0.0-3~16.04.1 (แท็ก/RELEASE_500/สุดท้าย) |
เสียงดังกราว 6.0.0 | อูบุนตู 16.04.6 LTS | เสียงดังกราวเวอร์ชัน 6.0.0-1ubuntu2~16.04.1 (แท็ก/RELEASE_600/สุดท้าย) |
เสียงดังกราว 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.1 | เคอร์เนลดาร์วินเวอร์ชัน 17.7.0 (OS X 10.13.6) | Apple LLVM เวอร์ชัน 10.0.0 (เสียงดังกราว-1000.11.45.5) |
วิชวลสตูดิโอ 14 2015 | Visual Studio 2015 พร้อมอัปเดต 3 | MSVC 19.0.24241.7 |
วิชวลสตูดิโอ 15 2017 | Visual Studio 2017 พร้อมอัปเดต 8 | MSVC 19.15.26732.1 |
วิชวลสตูดิโอ 15 2017 | Visual Studio 2017 พร้อมอัปเดต 9 | MSVC 19.16.27025.1 |
Visual Studio 15 2017 ( เสียงดังกราว/LLVM ) | วิชวลสตูดิโอ 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