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 teknik olarak sonuçlandırıldı. Bir taslak 4 Eylül 2020 tarihinde onaylandıktan sonra C++20 şu anda son makale çalışmalarından geçiyor.

C++20, C++14 veya C++17'den daha fazla yeni büyük özellik ekleyecektir. Aşağıda C++20'ye dahil edilmesi konuşulan veya kabul edilen değişikliklerin listesinin bir kısmı bulunmaktadır.

Yeni özellikler 
C++20 ile birçok yeni özelliği tanıtıldı. Aşağıdaki listeler 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 durumlardatypenamekihtiyacıkaldırıldı
 yeni standart özellikler[[no_unique_address]], [[likely]] ve [[unlikely]]
 koşullu explicit, belirtik değiştiricinin bir boole ifadesine bağlı olmasına izin verir
 genişletilmiş constexpr: sanal fonksiyonlar, birleşim, dene ve yakala, 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>'yatakvim 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 (plus changed meaning for export), and char8_t.gibi birçok yeni anahtar kelime (ve yeni "uzay gemisi operatörü" (<=>)) eklendi. Ve explicit artık C ++ 20'den itibaren ifade alabilecek. Ek olarakvolatile anahtar kelimesinin çoğu kullanımı kaldırılmıştır.

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)
 Aralıklar (aralık-v3  ) github deposu, Eric Niebler

Programlama dilleri standartları
C++