د C++ ژبې د معیاري کولو په اړه د ISO کمیټه
په راتلونکو دوو میاشتو کې، تصویب شوي توضیحات به د خپرولو لپاره د سند چمتو کولو په مرحله کې وي، په کوم کې چې د املا د غلطیو او ټایپونو د سمون په اړه کار ترسره کیږي. د نومبر په پیل کې، پایله لرونکی سند به د ISO/IEC 14882:2020 رسمي نوم لاندې د خپرولو لپاره ISO ته واستول شي. په ورته وخت کې ، کمیټې دمخه په راتلونکي C++ 23 معیار (C++2b) کار پیل کړی او په راتلونکي مجازی ناسته کې به احتمالي اختیارونه په پام کې ونیسي.
- اضافه شوي "مفکورې"، د ټیمپلیټ توسیعونه، چې تاسو ته اجازه درکوي د ټیمپلیټ پیرامیټرو اړتیاو سیټ تعریف کړئ چې د تالیف په وخت کې، د دلیلونو سیټ محدود کړي چې د ټیمپلیټ پیرامیټونو په توګه منل کیدی شي. مفاهیم د ټیمپلیټ دننه کارول شوي ډیټا ډولونو ملکیتونو او د ان پټ پیرامیټرو ډیټا ډول ملکیتونو ترمینځ د منطقي تضادونو مخنیوي لپاره کارول کیدی شي.
کينډۍ
د مساوات مفهوم = اړتیا (T a, T b) {
{ a == b } -> std:: boolean;
{a != b } -> std::boolean;
}; - ومنل شو
پراختیا د ماډلونو سره کار کولو لپاره چې د سرلیک فایلونو پرځای کارول کیدی شي. موډلونه د "#شامل" له لارې د سرلیک فایلونو شاملولو پرته د اجزاو د حدودو ټاکلو پراساس د سرچینې کوډ تنظیم کولو لپاره نوې لاره چمتو کوي. - میکرو __VA_OPT__ د متغیر میکرو د تطبیق وړ توسعې لپاره چې په متغیر دلیل کې د توکیو شتون پورې اړه لري.
- د درې اړخیز پرتله کولو لپاره د "" آپریټر لپاره ملاتړ.
- د بټ فیلډونو لپاره د ډیفالټ عنصر پیل کونکو لپاره ملاتړ.
- د لامبډا د نیولو وړتیا "* دا" څرګندونې.
جوړښت int_value {
int n = 0 ;
auto getter_fn() {
// بد:
// راستنیدنه [=]() { بیرته راستنیدنه n; };// ښه:
راستنیدنه [=, *دا]() { بیرته راستنیدنه n; };
}
}; - د پوائنټر په واسطه عناصرو ته زنګ وهل (د پوائنټر څخه غړي)، لنډمهاله شیانو ته د اشارې په کارولو سره چې د "const &" بیان له لارې تعریف شوي.
- د حذف کولو آپریټر د ویجاړونکي سره په سند کې بیان شوی
P0722R1 . - ټولګیو ته اجازه ورکول کیږي چې پرته له ډول څخه د ټیمپلیټ پیرامیټونه وکاروي.
جوړښت foo {
foo() = ډیفالټ؛
constexpr foo(int) {}
};کينډۍ
اوتومات get_foo() {
راستنیدنه f;
}get_foo(); // ضمني جوړونکي کاروي
get_foo (); - د جوړونکي سره غیر دوامداره لامبډا څرګندونې.
- د لامبډا څرګندونو لپاره د ټیمپلیټ ترکیب ته اجازه ورکول ("آټو f = [] (std::vector v)").
- د ټیمپلیټ پیرامیټونو کې د سټینګ لیکونو کارولو وړتیا.
- د C-style ابتدايي ترکیب لپاره ملاتړ - هغه ساحې چې په ښکاره ډول د ابتدايي لیست کې لیست شوي ندي د ډیفالټ لخوا پیل شوي.
جوړښت A {
انټ ایکس؛
int y;
int z = 123 ;
};A a {.x = 1, .z = 2}; // ax == 1، ay == 0، az == 2
- د خالي معلوماتو جوړښت غړو لپاره ملاتړ.
- د احتمالي او احتمالي ځانګړتیاو لپاره ملاتړ چې مطلوب کونکي ته د مشروط جوړونې د احتمال په اړه خبر کړي ("[[احتمال]] که (تصادفي> 0) {").
- د "لپاره" لوپ کې د متغیر ارزښتونو پیل کولو لپاره د رینجونو کارولو وړتیا
لپاره (آټو v = std::vector{1, 2, 3}; auto&e : v) {
- په نوي ("نوی ډبل[]{1,2,3}") کې د سرې اندازې اتوماتیک محاسبه؛
- د "[[no_unique_address]]" خاصیت په کوم کې چې له ډیټا پرته متغیرونه ځای نه نیسي.
- اټومي ټکي (std::اتومي > او std::اتومي >).
- په مشروط بیانونو کې د مجازی افعال غږولو وړتیا.
- د فوري دندو لپاره ملاتړ چې یوازې د ثابت سره کار کولی شي.
consteval int sqr(int n) {
بیرته راستنیدنه n * n;
}constexpr int r = sqr(100); // سمه ده
int x = 100
int r2 = sqr(x); // تېروتنه: 'x' د ثابت په توګه نشي کارول کیدی - د مجازی دندو سره د constexpr کارولو امکان ("constexpr virtual int f() const {return 2؛ }").
- په معیاري کتابتون کې:
- د UTF-8 تارونو لپاره د char8_t ډول لپاره ملاتړ اضافه شوی.
- اضافه شوي سرلیک فایلونه بټ (بټ عملیات) او نسخه.
- اوس دا ممکنه ده چې د تارونو مخفف او ضمیمه وګورئ (شروع_سره، پای_سره).
- std::remove_cvref، std::unwrap_reference، std::unwrap_decay_ref، std::is_nothrow_convertible او std::type_identity ځانګړتیاوې اضافه شوي.
- std::midpoint، std::lerp، std::bind_front، std::source_location، std::visit، std::is_constant_evaluated او std:: assume_aligned افعال اضافه کړل.
- std::make_shared ته د اریونو لپاره ملاتړ اضافه شوی.
- د std::to_array فنکشن اضافه شوی ترڅو د صف په څیر شیان std::array ته واړوي.
- د شمیرنې ډیر اسانه ترکیب:
د enum ټولګي rgba_color_channel {سور، شنه، نیلي، الفا}؛
std::string_view to_string(rgba_color_channel my_channel) {
بدل کړئ (زما_چینل) {
د enum rgba_color_channel کارول؛
سور قضیه: بیرته "سر"؛
شنه قضیه: بیرته "شین"؛
نیلي قضیه: بیرته "نیلي"؛
د الفا قضیه: بیرته "الفا"؛
}
} - په شاخصونو کې، د نه تعریف شوي چلند له امله، د عملیاتو کارول "،" ("a[b،c]") منع دي. د بې ثباته کلیدي کلمې سره اعلان شوي متغیرونو سره د ډیری عملیاتو لپاره ملاتړ بند شوی ، پشمول د معیاري ډولونو سره "++" او "—" عملیات.
- د هغه حالتونو شمیر کم شوی چې په کوم کې د ډول شتون په ګوته کولو لپاره "ټایپین نوم" اړین دی.
سرچینه: opennet.ru