C++20

C++20, C++17'den sonra C++ programlama dili için ISO/IEC standardının revizyonunun adıdır. Bu standart Şubat 2020'de Prag'daki toplantıda WG21 tarafından sonuçlandırıldı. Taslak 4 Eylül 2020 tarihinde onaylandıktan sonra C++20 standardı şu anda son çalışmalardan geçiyor.

C++20, C++17 ve C++14'ten daha fazla sayıda yeni ve büyük özellikler ekledi. C++20'ye dahil ve kabul edilen değişikliklerin listesinin bir kısmı aşağıda listelenmiştir.

 Yeni özellikler 
C++20 ile birçok yeni özellik tanıtıldı. Aşağıdaki liste tamamlanmamış olabilir.

 Dil 

 kısa sözdizimi ile, konseptler 
 modüller
 belirlenmiş ilklendiriciler (C99 özelliğine ve yaygın G ++ uzantısına dayanarak)
 lambda yakalama olarak[=, this]
 lambdalardaki şablon parametre listeleri
 "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
 değerlendirilmemiş bağlamlarda lambdalar
 varsayılan yapılandırılabilir ve atanabilir durumsuz lambdalar
 şablon parametreleri olarak dize değişmezleri
 belirli durumlardatypename ihtiyacı kaldırıldı
 yeni standart özellikler[[no_unique_address]],[[likely]] ve [[unlikely]]
 koşullu explicit, belirtik değiştiricinin bir bool ifadesine bağlı olmasına izin verir
 genişletilmiş constexpr: virtual fonksiyonlar, union, try-catch, dynamic_cast ve typeid, std::pointer_traits
 yeni consteval anahtar sözcüğünü kullanan dolaysız fonksiyonlar
 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)
 revize edilmiş bir bellek modeli
 yapısal bağlamalarda çeşitli iyileştirmeler (lambda yakalamalarıyla etkileşim, static ve thread_local depolama süresi)
 Eş programlar
 kapsamlı enumlardausing
 constinit anahtar sözcüğü

 Kütüphane 

 aralıklar (The One Ranges Proposal)  
 Diziler için std::make_shared ve std::allocate_shared
 atomik akıllı işaretçiler (std::atomic<shared_ptr<T>> ve std::atomic<weak_ptr<T>> )
 bir işaretçiyi ham işaretçiye dönüştürmek için std::to_address
 <chrono>'ya takvim ve saat dilimi eklemeleri
 std::span, bitişik bir diziye bir görünüm sağlar
 <version>başlığı
 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<>
 özellik test makroları
 çeşitli constexpr kitaplık bitleri
 varsayılan ilklendirme ile akıllı işaretçi oluşturma
 std::map::contains methodu 
 Bit işlemler, ve log2 işlemleri

 Kullanımdan kaldırma 

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

 Yeni (ve değiştirilmiş) anahtar kelimeler 
concept, constinit, 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. Ek olarak explicit, C++20'den itibaren ifade alabilecek.

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]]

 Ayrıca bakınız 

 C++
 C++98
 C18 (C standart revizyonu)

 Kaynaklar 

 Dış bağlantılar 

 JTC1 / SC22 / WG21ISO / IEC C++ Standart Çalışma Grubu (diğer adıyla C++ Standartlar Komitesi)
 Ranges (range-v3  ) Github deposu, Eric Niebler

Kategori:Programlama dilleri standartları
Kategori:C++