C++ 17
std::variant
لـ C++ 11 / 14 / 17
MPark.Variant هو تطبيق لـ C++ 17 std::variant
لـ C++ 11 / 14 / 17 .
std::variant
لـ libc++std::variant
. يوفر الفرع ذو الرأس الواحد ملف 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 . يتم اختبار المترجمات التالية باستمرار:
مترجم | نظام التشغيل | سلسلة الإصدار |
---|---|---|
دول مجلس التعاون الخليجي 4.8.5 | أوبونتو 16.04.6 إل تي إس | g++-4.8 (أوبونتو 4.8.5-4ubuntu8~16.04.1) 4.8.5 |
دول مجلس التعاون الخليجي 4.9.4 | أوبونتو 16.04.6 إل تي إس | g++-4.9 (أوبونتو 4.9.4-2ubuntu1~16.04) 4.9.4 |
دول مجلس التعاون الخليجي 5.5.0 | أوبونتو 16.04.6 إل تي إس | g++-5 (أوبونتو 5.5.0-12ubuntu1~16.04) 5.5.0 20171010 |
دول مجلس التعاون الخليجي 6.5.0 | أوبونتو 16.04.6 إل تي إس | g++-6 (أوبونتو 6.5.0-2ubuntu1~16.04) 6.5.0 20181026 |
دول مجلس التعاون الخليجي 7.4.0 | أوبونتو 16.04.6 إل تي إس | g++-7 (أوبونتو 7.4.0-1ubuntu1 |
دول مجلس التعاون الخليجي 8.3.0 | أوبونتو 16.04.6 إل تي إس | g++-8 (أوبونتو 8.3.0-16ubuntu3~16.04) 8.3.0 |
دول مجلس التعاون الخليجي 9.2.1 | أوبونتو 16.04.6 إل تي إس | g++-9 (أوبونتو 9.2.1-17ubuntu1~16.04) 9.2.1 20191102 |
رنة 3.6.2 | أوبونتو 16.04.6 إل تي إس | إصدار Ubuntu clang 3.6.2-3ubuntu2 (العلامات/RELEASE_362/نهائي) (استنادًا إلى LLVM 3.6.2) |
رنة 3.7.1 | أوبونتو 16.04.6 إل تي إس | إصدار Ubuntu clang 3.7.1-2ubuntu2 (العلامات/RELEASE_371/نهائي) (استنادًا إلى LLVM 3.7.1) |
رنة 3.8.0 | أوبونتو 16.04.6 إل تي إس | نسخة clang 3.8.0-2ubuntu4 (العلامات/RELEASE_380/نهائي) |
رنة 3.9.1 | أوبونتو 16.04.6 إل تي إس | إصدار clang 3.9.1-4ubuntu3~16.04.2 (العلامات/RELEASE_391/rc2) |
رنة 4.0.0 | أوبونتو 16.04.6 إل تي إس | إصدار clang 4.0.0-1ubuntu1~16.04.2 (العلامات/RELEASE_400/rc1) |
رنة 5.0.0 | أوبونتو 16.04.6 إل تي إس | نسخة clang 5.0.0-3~16.04.1 (العلامات/RELEASE_500/نهائي) |
رنة 6.0.0 | أوبونتو 16.04.6 إل تي إس | نسخة clang 6.0.0-1ubuntu2~16.04.1 (العلامات/RELEASE_600/نهائي) |
رنة 7.1.0 | أوبونتو 16.04.6 إل تي إس | نسخة رنة 7.1.0-svn353565-1 |
رنة 8.0.1 | أوبونتو 16.04.6 إل تي إس | نسخة رنة 8.0.1-svn369350-1 |
كلانج اكس كود 8.3 | إصدار داروين كيرنل 16.7.0 (OS X 10.12.6) | إصدار Apple LLVM 8.1.0 (clang-802.0.42) |
كلانج اكس كود 9.4 | إصدار داروين كيرنل 17.4.0 (OS X 10.13.3) | إصدار Apple LLVM 9.1.0 (clang-902.0.39.2) |
كلانج اكس كود 10.1 | إصدار داروين كيرنل 17.7.0 (OS X 10.13.6) | إصدار Apple LLVM 10.0.0 (clang-1000.11.45.5) |
فيجوال ستوديو 14 2015 | فيجوال ستوديو 2015 مع التحديث 3 | إم إس في سي 19.0.24241.7 |
فيجوال ستوديو 15 2017 | فيجوال ستوديو 2017 مع التحديث 8 | إم إس في سي 19.15.26732.1 |
فيجوال ستوديو 15 2017 | فيجوال ستوديو 2017 مع التحديث 9 | إم إس في سي 19.16.27025.1 |
فيجوال ستوديو 15 2017 ( Clang/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
.
الرجوع إلى اختبار/README.md.
يتم توزيعه بموجب ترخيص برنامج Boost، الإصدار 1.0.