معيار C++23 الجديد: التغييرات والتحسينات الرئيسية في اللغة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

تم إصدار المعيار الجديد C++23: ما الذي تغير وكيف سيؤثر على التطوير



قامت اللجنة الدولية لتوحيد معايير C++ (ISO/IEC JTC1/SC22/WG21) باعتماد النسخة الجديدة من اللغة رسميًا — C++23. هذا الإصدار ليس أساسيًا مثل C++11 أو C++20، ولكنه يتضمن العديد من التحسينات المنتظرة التي ستجعل الكود أكثر أمانًا وتعبيرًا وأداءً. سنستعرض المستجدات الرئيسية التي يجب أن يعرفها كل مطور C++.



التغييرات الرئيسية في C++23



  • Deducing this (P0847R7) — المستجد الأكثر انتظارًا. الآن يمكن تحديد الكائن الذي يتم استدعاء الدالة عليه بشكل صريح، مما يبسط التحميل الزائد لإصدارات lvalue/rvalue والثابتة وغير الثابتة، ويتخلص من تكرار الكود في قوالب CRTP.
  • std::expected (P0323R12) — نوع لمعالجة الأخطاء بدون استثناءات، بديل لـ std::optional والاستثناءات. يسمح بإرجاع إما قيمة أو خطأ، وهو أمر بالغ الأهمية للأنظمة ذات متطلبات الأداء الصارمة.
  • الوحدات النمطية std (P2465R3) — يتم الآن تصدير المكتبة القياسية عبر الوحدات النمطية، مما يسرع التجميع ويحسن عزل الكود. على سبيل المثال، import std; يحل محل عشرات #include.
  • تحسينات coroutines — تمت إضافة النوع std::generator للتسلسلات الكسولة وتم إصلاح العديد من مشكلات الأداء وبيئة العمل في coroutines من C++20.
  • تعدد العمليات — آلية جديدة std::latch و std::barrier لمزامنة الخيوط، بالإضافة إلى std::counting_semaphore المحسّن.


ماذا يعني هذا للمطورين؟



C++23 لا يكسر التوافق مع الإصدارات السابقة، ولكنه يقدم ممارسات جديدة. على سبيل المثال، deducing this يبسط كتابة المكتبات، و std::expected سيحل تدريجيًا محل الفحوصات الضخمة لرموز الإرجاع. العديد من المترجمات (GCC 13+، Clang 16+، MSVC 2022 17.6+) تدعم بالفعل جزءًا من الميزات.



بالنسبة لأولئك الذين يعملون مع الأنظمة عالية التحميل، تعتبر الوحدات النمطية (تسريع البناء بنسبة 20-40%) ومعالجة الأخطاء المحسّنة بدون استثناءات مهمة بشكل خاص. إذا كنت تستخدم C++20، فإن الترحيل إلى C++23 لن يتطلب إعادة كتابة الكود — يكفي تفعيل علامة التجميع الجديدة.



متى نتوقع الدعم الكامل؟



من المتوقع أن يكون الدعم الكامل لـ C++23 في المترجمات بحلول نهاية عام 2024. يمكنك حاليًا اختبار الميزات الفردية باستخدام العلامات -std=c++2b (GCC/Clang) أو /std:c++latest (MSVC). نوصي بالبدء بـ std::expected و deducing this — فهي الأكثر فائدة في المشاريع الحقيقية.



ستجد أمثلة الكود الحالية والمقارنة مع C++20 في وثائق المترجمات. C++23 هي خطوة تطورية تجعل اللغة أكثر أمانًا وراحة دون التضحية بالأداء.

المكتبات الموصى بها