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 durumlarda
typename
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
vetypeid
[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ı enumlarda
using
[34] constinit
anahtar sözcüğü[35]
Kütüphane
- aralıklar (The One Ranges Proposal)[36]
- Diziler için
std::make_shared
vestd::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::contains
methodu[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