En İyi Sorular
Zaman Çizelgesi
Sohbet
Bakış Açıları
C++20
Vikipedi'den, özgür ansiklopediden
Remove ads
C++20, C++17'den sonra C++ programlama dili için ISO/IEC standardının revizyonunun adıdır.[1] Bu standart[2] Şubat 2020'de Prag'daki toplantıda WG21 tarafından sonuçlandırıldı.[3] Taslak 4 Eylül 2020 tarihinde onaylandıktan sonra C++20 standardı şu anda son çalışmalardan geçiyor.[4][5]
C++20, C++17 ve C++14'ten daha fazla sayıda yeni ve büyük özellikler ekledi.[6] C++20'ye dahil ve kabul edilen değişikliklerin listesinin bir kısmı aşağıda listelenmiştir.[7]
Remove ads
Yeni özellikler
Özetle
Bakış açısı
C++20 ile birçok yeni özellik tanıtıldı. Aşağıdaki liste tamamlanmamış olabilir.
Dil
- kısa sözdizimi ile,[8] konseptler[9]
- modüller[10]
- belirlenmiş ilklendiriciler[11] (C99 özelliğine ve yaygın G ++ uzantısına dayanarak)
- lambda yakalama olarak
[=, this][12] - lambdalardaki şablon parametre listeleri[13]
- "uzay gemisi operatörü" (<=>) kullanarak üç yönlü karşılaştırma
- aralık tabanlı bir
forifadesi içerisinde ek bir değişkenin ilklendirilmesi[14] - değerlendirilmemiş bağlamlarda lambdalar[15][16]
- varsayılan yapılandırılabilir ve atanabilir durumsuz lambdalar[17]
- şablon parametreleri olarak dize değişmezleri[18]
- belirli durumlarda
typenameihtiyacı kaldırıldı[19] - yeni standart özellikler
[[no_unique_address]],[20][[likely]]ve[[unlikely]][21] - koşullu
explicit,belirtik değiştiricinin bir bool ifadesine bağlı olmasına izin verir[22] - genişletilmiş
constexpr:virtualfonksiyonlar[23],union[24],try-catch,[25]dynamic_castvetypeid[26],std::pointer_traits[27] - yeni
constevalanahtar sözcüğünü kullanan dolaysız fonksiyonlar[28] - işaretli tam sayılar artık ikinin tümleyeni kullanılarak gösterilmek üzere tanımlanmaktadır (işaretli tam sayı taşması tanımsız davranış olarak kalır)[29]
- revize edilmiş bir bellek modeli[30]
- yapısal bağlamalarda çeşitli iyileştirmeler (lambda yakalamalarıyla etkileşim, static ve thread_local depolama süresi)[31][32]
- Eş programlar[33]
- kapsamlı enumlarda
using[34] constinitanahtar sözcüğü[35]
Kütüphane
- aralıklar (The One Ranges Proposal)[36]
- Diziler için
std::make_sharedvestd::allocate_shared[37] - atomik akıllı işaretçiler (
std::atomic<shared_ptr<T>>vestd::atomic<weak_ptr<T>>)[38] - bir işaretçiyi ham işaretçiye dönüştürmek için
std::to_address[39] <chrono>'ya takvim ve saat dilimi eklemeleri[40]std::span, bitişik bir diziye bir görünüm sağlar[41]<version>başlığı[42]memcpy()'den daha az ayrıntı ve derleyici dahili öğelerinden daha fazla yararlanma yeteneği ile nesne gösterimlerinin tür dökümleri içinstd::bit_cast<>[43]- özellik test makroları[44]
- çeşitli constexpr kitaplık bitleri[45]
- varsayılan ilklendirme ile akıllı işaretçi oluşturma[46]
std::map::containsmethodu[47]- Bit işlemler,[48] ve log2 işlemleri[49][50][51]
Kullanımdan kaldırma
Yeni (ve değiştirilmiş) anahtar kelimeler
concept, constinit,[54] consteval, co_await, co_return, co_yield, requires, export ve char8_t.gibi birçok yeni anahtar kelime (ve yeni "uzay gemisi operatörü" (<=>)) eklendi.[55] Ek olarak explicit, C++20'den itibaren ifade alabilecek.[56]
Anahtar kelimelere ek olarak, yeni import ve module dahil olmak üzere özel anlamı olan tanımlayıcılar da var.
C++20'deki yeni nitelikler: [[likely]], [[unlikely]] ve [[no_unique_address]][57]
Remove ads
Ayrıca bakınız
Kaynaklar
Dış bağlantılar
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads