Avatar ·

ما هي الميزات الجديدة التي ظهرت في C++17؟ نظرة عامة على التغييرات الرئيسية والأمثلة

مرحبًا بالجميع! أنا أدرس C++ وأحاول حاليًا فهم المعايير الجديدة. قبل ذلك، كنت أعمل بشكل أساسي مع C++11 و C++14، ولكن هنا في المشروع قال الزملاء إنه حان الوقت للانتقال إلى C++17. فتحت الوثائق، وهناك الكثير من الأشياء الجديدة لدرجة أن رأسي يدور. سمعت عن structured bindings، وعن if constexpr، وعن std::optional و std::variant. ولكن كيف يعمل كل هذا عمليًا؟ على سبيل المثال، غالبًا ما أكتب كودًا حيث أحتاج إلى إرجاع إما قيمة أو خطأ من دالة. في السابق، كنت أستخدم tuples أو معاملات الإخراج. سمعت أنه في C++17 يوجد std::optional لهذا الغرض. ولكن كيف أستخدمه بشكل صحيح؟ وما هو "النسخ المضمون" (guaranteed copy elision)؟ سمعت أنه يسرّع إرجاع الكائنات، لكنني لا أفهم الآلية. كما أنني مهتم بكيفية تبسيط العمل مع tuples و pairs. في السابق، لتفكيك std::pair، كنت بحاجة إلى كتابة std::tie(a, b) = my_pair. والآن، يبدو أنه يمكنني كتابة auto [a, b] = my_pair. هل هذا يعمل حقًا؟ والسؤال الأهم: ماذا و