لجنة ISO لتوحيد لغة C++ وافق المعيار الدولي "سي ++ 20". القدرات المقدمة في المواصفات، باستثناء الحالات المعزولة، أيد في المجمعين الخليج, قعقع и مايكروسوفت البصرية C ++. يتم تنفيذ المكتبات القياسية التي تدعم C++ 20 داخل المشروع زيادة.
في الشهرين المقبلين، ستكون المواصفات المعتمدة في مرحلة إعداد الوثيقة للنشر، حيث سيتم العمل على التصحيح التحريري للأخطاء الإملائية والأخطاء المطبعية. وفي أوائل نوفمبر، سيتم إرسال الوثيقة الناتجة إلى ISO للنشر تحت الاسم الرسمي ISO/IEC 14882:2020. في غضون ذلك، بدأت اللجنة بالفعل العمل على معيار C++23 التالي (C++2b) وستنظر في الخيارات الممكنة في اجتماعها الافتراضي التالي. الابتكارات.
تمت إضافة "المفاهيم" وامتدادات القالب التي تسمح لك بتحديد مجموعة من متطلبات معلمات القالب التي، في وقت الترجمة، تحد من مجموعة الوسائط التي يمكن قبولها كمعلمات قالب. يمكن استخدام المفاهيم لتجنب التناقضات المنطقية بين خصائص أنواع البيانات المستخدمة داخل القالب وخصائص نوع البيانات لمعلمات الإدخال.
نموذج
مفهوم المساواة القابلة للمقارنة = يتطلب (T a، T b) {
{ أ == ب } -> std::boolean;
{ أ != ب } -> std::boolean;
};
قبلت توسع للعمل مع الوحدات النمطية التي يمكن استخدامها بدلاً من ملفات الرأس. توفر الوحدات طريقة جديدة لتنظيم التعليمات البرمجية المصدرية بناءً على تحديد حدود المكونات، دون تضمين ملفات الرأس عبر "#include".
ماكرو __VA_OPT__ للتوسيع التكيفي لوحدات الماكرو المتغيرة اعتمادًا على وجود الرموز المميزة في وسيطة المتغير.
دعم المشغل "" للمقارنة الثلاثية.
دعم مُهيئات العناصر الافتراضية لحقول البت.
القدرة على التقاط تعبيرات لامدا "*هذا".
البنية int_value {
كثافة العمليات ن = 0 ؛
السيارات getter_fn () {
//سيء:
// العودة [=]() { العودة ن؛ };
// جيد:
return [=, *this]() { return n; };
}
};
استدعاء العناصر بواسطة المؤشر (مؤشر إلى عضو)، باستخدام مؤشرات إلى كائنات مؤقتة محددة من خلال تعبير "const &".
عامل الحذف مع أداة التدمير الموضحة في المستند P0722.
تمت إضافة وظيفة std::to_array لتحويل الكائنات الشبيهة بالمصفوفة إلى std::array.
بناء جملة التعداد أكثر ملاءمة:
فئة التعداد rgba_color_channel {أحمر، أخضر، أزرق، ألفا}؛
ستد::string_view to_string(rgba_color_channel my_channel) {
التبديل (my_channel) {
باستخدام التعداد rgba_color_channel؛
الحالة الحمراء: إرجاع "أحمر"؛
الحالة الخضراء: إرجاع "أخضر"؛
الحالة الزرقاء: إرجاع "أزرق"؛
حالة ألفا: إرجاع "ألفا"؛
}
}
في الفهارس، وبسبب سلوك غير محدد، يُحظر استخدام العملية "،" ("a[b,c]"). تم إيقاف دعم معظم العمليات التي تحتوي على متغيرات مُعلنة باستخدام الكلمة الأساسية المتقلبة، بما في ذلك العمليات "++" و"—" مع الأنواع القياسية.
تم تقليل عدد المواقف التي يكون فيها "اسم الكتابة" مطلوبًا للإشارة إلى وجود النوع.