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 for ifadesi 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 durumlardatypename ihtiyacı 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: virtual fonksiyonlar[23], union[24], try-catch,[25] dynamic_cast ve typeid[26], std::pointer_traits[27]
  • yeni consteval anahtar 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ı enumlardausing[34]
  • constinit anahtar sözcüğü[35]

Kütüphane

  • aralıklar (The One Ranges Proposal)[36]
  • Diziler için std::make_shared ve std::allocate_shared[37]
  • atomik akıllı işaretçiler (std::atomic<shared_ptr<T>> ve std::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çin std::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::contains methodu[47]
  • Bit işlemler,[48] ve log2 işlemleri[49][50][51]

Kullanımdan kaldırma

  • Altsimge ifadelerinde virgül operatörü kullanımı kullanımdan kaldırıldı[52]
  • (çoğu) volatile kullanımdan kaldırıldı[53]

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

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads