C++23 - C++23

C++23 , C++20'yi takip etmesi beklenen C++ programlama dili için ISO / IEC 14882 standardının sonraki sürümünün resmi olmayan adıdır . Geçerli taslak N4892'dir.

Şubat 2020'de Prag'daki C++20 son toplantısında , C++23 için genel bir plan kabul edildi: C++23 için planlanan özellikler, eşyordamlar için kitaplık desteği , modüler bir standart kitaplık, yürütücüler ve ağ oluşturmadır.

İlk WG21 toplantısı gerçekleşecek düşünülmüştü 23 C ++ odaklanmış Varna erken Haziran 2020 yılında, ancak nedeniyle iptal edildi COVID-19 pandemik içinde, gibiydi Kasım 2020 toplantısında New York'ta ve Şubat 2021 toplantısında , Kona Hawaii . 2022'den önce herhangi bir yüz yüze görüşme olması pek olası değil.

Yeni özellikler

Yüz yüze WG21 toplantılarının yokluğunda, C++23 taslağına şimdiye kadar birkaç yeni özellik eklendi. Ancak, saman anketleriyle onaylandıkları 9 Kasım 2020 tarihli sanal WG21 toplantısından sonra aşağıdakiler eklendi:

  • Değişmez son ekler std::size_tve karşılık gelen işaretli tür
  • Dizenin belirli bir alt dize veya karakter içerip içermediğini kontrol etmek containsiçin std::basic_stringve için bir üye işlevistd::basic_string_view
  • Boost .Stacktrace <stacktrace>tabanlı bir yığın izleme kitaplığı ( )
  • Bir tür özelliği std::is_scoped_enum
  • C atomlarıyla <stdatomic.h>birlikte çalışabilirlik için başlık

22 Şubat 2021'deki sanal WG21 toplantısından sonra, saman anketleriyle onaylandıkları yerlere aşağıdaki özellikler eklendi:

  • Giriş aralığı adaptörlerini onarma ve counted_iterator.
  • Gereksiz boş parametre listesi Çıkarma ()gelen lambda ifadeleri .
  • Gereksinimleri gevşetin time_point::clock.
  • std::visittüretilen sınıflar için std::variant.
  • Kilitler kilitlenebilirleri kilitler.
  • Koşullu olarak ödünç alınan aralıklar.
  • std::to_underlying.

Haziran 2021'deki Yaz 2021 ISO C++ standartları genel kurulu sanal toplantısından sonra, yeni özellikler ve kusur raporları saman anketleriyle onaylandı:

  • İstismar eğer ( ).if consteval
  • Bağlamsal dönüşümleri bool.
  • Yinelenen özelliklere izin verilmesi.
  • std::spantabanlı dize akışı ( <spanstream>).
  • std::out_ptr()ve std::inout_ptr().
  • constexpriçin std::optional, std::variant, ve std::type_info::operator==.
  • Yineleyiciler std::stack( yığın ) ve std::queue( kuyruk ) için kurucuları eşleştirir .
  • Aralık kitaplığında birkaç değişiklik:
    • Genelleştirilmiş starts_withve ends_withkeyfi aralıklar için.
    • Yeniden tasarlandı split_viewve yeni lazy_split_view.
    • Üzerindeki kısıtlamayı gevşetmek join_view.
    • default_initializableKavramdan kısıtlamanın kaldırılması view.
    • için aralık oluşturucu std::basic_string_view.
  • Yasaklama std::basic_stringve std::basic_string_viewinşaat nullptr.
  • std::invoke_r.
  • Üzerinde iyileştirmeler std::format.
  • std::pairİletim yapıcısı için varsayılan bağımsız değişkenler ekleniyor.

Kaldırılan özellik

  • Çöp toplama desteği.

Referanslar