Dil özellikleri:
Şablonlar ve Genel Kod
Lambda
Öznitellikler
Sözdizimi temizleme
Daha temiz çoklu dönüş ve akış kontrolü
Çeşitli
Kütüphane ilaveleri:
Veri tipleri
Bir şeyler çağır
std::invoke
- Herhangi bir çağrılabilir (işlev işaretçisi, işlev, üye işaretçisi) bir sözdizimi ile çağırın. Standart INVOKE konseptinden.
std::apply
- Fonksiyona benzer ve bir demet alır ve paketi çağrının içine açar.
std::make_from_tuple
, std::apply
nesne yapımına uygulanır
is_invocable
, is_invocable_r
,invoke_result
Threading
(bölümleri) Kütüphane Temelleri TS v1 yukarıda veya aşağıda ele alınmamıştır
Konteyner İyileştirmeleri
Akıllı işaretçi değişiklikleri
Diğer std
veri tipi geliştirmeleri:
Çeşitli
C ++ 17 kütüphanesi C99 yerine C11 tabanlıdır
Gelecekteki standart kütüphanelerstd[0-9]+
için ayrılmıştır
destroy(_at|_n)
, uninitialized_move(_n)
, uninitialized_value_construct(_n)
,uninitialized_default_construct(_n)
- çoğu
std
uygulamada zaten kullanılan yardımcı program kodu
- Özel matematik fonksiyonları
- bilim adamları onları beğenebilir
std::clamp()
std::clamp( a, b, c ) == std::max( b, std::min( a, c ) )
kabaca
gcd
ve lcm
std::uncaught_exceptions
- Sadece yıkıcılardan korunuyorsa atmak istiyorsanız gereklidir
std::as_const
std::bool_constant
- Bir dizi
_v
şablon değişkeni
std::void_t<T>
- Şablon yazarken şaşırtıcı derecede faydalı
std::owner_less<void>
- gibi
std::less<void>
, ancak akıllı işaretçilerin içeriğe göre sıralanması
std::chrono
Lehçe
std::conjunction
, std::disjunction
,std::negation
Maruz
std::not_fn
- İçinde istisnasız kurallar
std
- std :: is_contiguous_layout , verimli karma için yararlıdır
- std :: to_chars / std :: from_chars , yüksek performans, yerel agnostik sayı dönüşümü; nihayet insan tarafından okunabilir formatları serileştirmek / serisini kaldırmak için bir yol (JSON & co)
std :: default_order , dolaylı aktarmastd::less
. (ad yönetimi nedeniyle bazı derleyicilerin ABI'sini kaldırır, kaldırılır.)
özellikleri
Kaldırıldı
Isocpp.org, C ++ 14'ten bu yana bağımsız bir değişiklik listesine sahiptir; kısmen yağmalandı.
Doğal olarak TS çalışması paralel olarak devam eder, bu yüzden olgunlaşmamış bir sonraki TS'yi beklemek zorunda kalacak bazı TS vardır. Bir sonraki yinelemenin hedefi, bazı söylentilerin ima ettiği gibi C ++ 19 değil, daha önce planlandığı gibi C ++ 20'dir. C ++ 1O önlendi.
Bu reddit gönderisinden ve bu reddit gönderisinden alınan , googling veya yukarıdaki isocpp.org sayfasından bağlantılar eklenmiş ilk liste .
SD-6 özellik testi listesinden yağmalanan ek girişler .
clang'ın özellik listesi ve kütüphane özellik listesi yağmalanacak. Bu güvenilir görünmüyor, çünkü C ++ 17 değil, C ++ 1z.
bu slaytlarda başka yerlerde eksik bazı özellikler vardı.
"Kaldırılanlar" sorulmasa da, C ++ 17'den C ++ 'dan kaldırılan birkaç şeyin ((çoğunlukla?) Daha önce kullanımdan kaldırıldı) kısa bir listesi:
kaldırıldı:
Yeniden düzenlemeler vardı. Bunların kod üzerinde herhangi bir etkisi olup olmadığından veya yalnızca standarttaki temizlemelerden emin değilim:
Henüz yukarıdakilere entegre edilmemiş kağıtlar:
P0505R0 (constexpr chrono)
P0418R2 (atomik ayarlamalar)
P0512R0 (şablon bağımsız değişken kesinti tweaks)
P0490R0 (yapısal bağlayıcı ince ayarlar )
P0513R0 (olarak değişir std::hash
)
P0502R0 (paralel istisnalar)
P0509R1 (kural dışı durum işleme ile ilgili kısıtlamaların güncellenmesi)
P0012R1 (istisna özelliklerini tip sisteminin bir parçası haline getirin)
P0510R0 (varyantlarda kısıtlamalar)
P0504R0 (isteğe bağlı / değişken / herhangi biri için etiketler)
P0497R0 (paylaşılan ptr tweaks)
P0508R0 (yapısal bağlantılar düğüm tutamaçları)
P0521R0 (paylaşılan işaretçi kullanım sayısı ve benzersiz değişiklikler?)
Spesifikasyon değişiklikleri:
Daha fazla referans: