سی‌پلاس‌پلاس ۲۰

سی‌پلاس‌پلاس ۲۰   استاندارد رسمی از زبان برنامه نویسی سی‌پلاس‌پلاس است که بر مبنای استاندارد سازمان بین‌المللی استانداردسازی / IEC در ادامه  سی‌پلاس‌پلاس ۱۷ به وجود آمده است. این استاندارد در سال ۲۰۲۰ بصورت رسمی منتشر شد.

ویژگی‌های جدید 
کلان‌دستور (ماکرو)های جدید.

اضافه شدن  عملگر <=> یا عملگرهای سه گانه،
این عملگر تمامی مقایسات را محاسبه می‌کند، اگر 
x=2 و y=3 با عملگر سه گانه در z باشند، اگر z مساوی 0 باشد یعنی این دو مساوی‌اند، اگر 1 باشد یعنی x یا اولین محاسبه بزرگ‌تر است، اگر 2 باشد y یا محاسبه دوم بزرگ‌تر است.

قابلیت تعریف یا اعلام یک متغیر در دامنه حلقههای بر پایه محدوده مانند:

#include <iosteam>
#include <vector>
using namespace std;
int main(){
  vector<unsigned int> test={3,8,9,10};
  for(int i=0;auto& t:test){
    cout<<"at "<<i<<' '<<t<<endl;
    i++;
  }
}

char8_t،u8string: کاراکتر و رشته حروف ۸ بیتی امضا نشده.

افزوده شدن صفت های [[unlikely]],[[likely]] و [[no_unique_address]].

افزوده شدن دو کلیدواژه، consteval، که یک تابع با بازگشت یک مقدار ثابت همگردانی هنگام یا موقع کامپایل می‌سازد و constinit که یک متغیر مقدار ثابت همگردانی هنگام می‌سازد، شبیه به constexpr اما با تفاوت اینکه constexpr لزومی ندارد مقدار ثابت باشد و ممکن است همگردانی هنگام باشد یا اجرا هنگام، اما constinit و consteval حتما باید مقدار ثابت باشد و حتما موقع همگردانی محاسبه می‌شوند.

اولیه‌سازی چندتایی با استفاده از پرانتزها.

coroutineها، قابلیتی هستند که میتواند یک تابع را در حالتی که هست نگه دارد؛ بدون از دست دادن موقعیتش و بعد میتواند دوباره از همان موقعیت ادامه دهد.

قابلیت ماژول‌ها یا کلیدواژه‌های export/import.

conceptها یا مفاهیم که برای محدود کردن جنریک‌ها یا درواقع قالب‌ها هستند مانند کد زیر:
#include <iostream>
#include <concepts>
using namespace std;
template<typename T>
concept mahdode=is_integral_v<T>&&is_arithmetic_v<T>
template<mahdode M>
class GM{
M test(){
return 1;
};
int main(){
GM<int> g();
cout<<g.test()<<endl;
// مشکلی نیست
GM<string> g2();
//خطا، در مفهوم قالب تعریف شد که قالب باید قابل محاسبه و عددی باشد.
}
با محدود کردن قالب‌ها سرعت برنامه و همگردانی بالاتر می‌رود زیرا جزئیات بیشتری مطرح شده است.

منابع 

استانداردهای زبان برنامه‌نویسی
سی++
استانداردهای آی‌ئی‌سی
استانداردهای ایزو