Avatar ·

ما هي الميزات الجديدة التي ظهرت في C++17 وكيفية استخدامها في المشاريع الحقيقية؟

مرحباً بالجميع! أكتب بلغة C++ منذ حوالي عام، وأستخدم بشكل أساسي C++11/14. مؤخراً بدأت في دراسة C++17 ولاحظت أن الكثير من الكود في مشاريع open-source يستخدم تركيبات لا أفهمها. على سبيل المثال، أرى غالباً كوداً مثل:
auto [x, y, z] = getPoint();
أو هذا:
if (auto it = map.find(key); it != map.end()) { ... }
أو أيضاً:
std::variant<int, float, std::string> v = 42;
سؤالي: ما هي الابتكارات التي جلبها C++17 بالضبط؟ سمعت عن structured bindings، if-init، std::variant، std::optional، لكن كيف تعمل كل هذه الأشياء عملياً؟ هل هناك أي شيء آخر يستحق المعرفة؟ أنا مهتم بشكل خاص بـ: 1. ما هي الميزات التي تبسط حقاً التطوير اليومي؟ 2. ما الذي تغير في المكتبة القياسية؟ 3. هل هناك أي مطبات عند الانتقال من C++14 إلى C++17؟ سأكون ممتناً لتحليل مفصل مع أمثلة كود. أريد أن أفهم أي الميزات يجب تطبيقها في مشاريعي، وأيها لا يزال