سیپلاسپلاس ۲۰
ویرایشهای زبان سیپلاسپلاس |
---|
سیپلاسپلاس ۲۰ (به انگلیسی: C++20) استاندارد رسمی از زبان برنامه نویسی سیپلاسپلاس است که بر مبنای استاندارد سازمان بینالمللی استانداردسازی / 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();
//خطا، در مفهوم قالب تعریف شد که قالب باید قابل محاسبه و عددی باشد.
}
با محدود کردن قالبها سرعت برنامه و همگردانی بالاتر میرود زیرا جزئیات بیشتری مطرح شده است.[۲][۱]
منابع
[ویرایش]- ↑ ۱٫۰ ۱٫۱ "C++20". Wikipedia (به انگلیسی). 2020-07-30.
- ↑ «C++20 - cppreference.com». en.cppreference.com. دریافتشده در ۲۰۲۰-۰۸-۰۷.