C++20
Edició 2020 de l'estàndard del llenguatge de programació C++ From Wikipedia, the free encyclopedia
Remove ads
C++20 és una versió de l'estàndard ISO / IEC 14882 per al llenguatge de programació C++. C++20 va substituir la versió anterior de l'estàndard C++, anomenada C++17.[1] L'estàndard va ser finalitzat tècnicament[2] pel WG21 a la reunió a Praga el febrer de 2020,[3] va tenir el seu esborrany final anunciat el març de 2020,[4] es va aprovar el 4 de setembre de 2020,[5][6] i es va publicar al desembre de 2020.[7]
Remove ads
Característiques
C++20 afegeix més funcions principals noves que C++14 o C++17.[8] Els canvis que s'han acceptat a C++20 inclouen:[9]
Llenguatge
- conceptes, amb sintaxi concisa
- mòduls
- inicialitzadors designats (basats en la característica C99 i l'extensió comuna g++)
[=, this]com a captura lambda- llistes de paràmetres de plantilla a lambdas
- comparació de tres direccions mitjançant l'operador "operador de nau espacial",
operator < = > - inicialització d'una variable addicional dins
foruna declaració basada en intervals - lambdas en contextos no avaluats
- Lambdas sense estat construïbles i assignables per defecte
- permet expansions de paquets a lambda init-capture
- tipus de classe en paràmetres de plantilla no tipus, també permetent literals de cadena com a paràmetres de plantilla
- eliminació de la necessitat del
typenameen determinades circumstàncies - nous atributs estàndard
[[no_unique_address]],[[likely]]i[[unlikely]] - condicional
explicit, permetent que el modificadorexplicitsigui contingent d'una expressió booleana constexprexpandit: funcions virtuals,union,tryandcatch,dynamic_castitypeid,std::pointer_traits- funcions immediates utilitzant la nova paraula clau
consteval - Els nombres enters amb signe es defineixen ara per ser representats utilitzant el complement de dos (el desbordament de nombres enters amb signe segueix sent un comportament sense definir)
- un model de memòria revisat
- diverses millores a les unions estructurades (interacció amb captures lambda, durada d'emmagatzematge
staticithread_local) - corrutines
usingl'enumeració ambenums- paraula clau
constinit
Biblioteca
- rangs (The One Ranges Proposal)
std::make_sharedistd::allocate_sharedper a matrius- punters intel·ligents atòmics (com ara
std::atomic<shared_ptr<T>>istd::atomic<weak_ptr<T>>) std::to_addressper convertir un punter en un punter en brut- addicions de calendari i fus horari a
<chrono> std::span, proporcionant una vista a una matriu contigua (anàloga astd::string_viewperòspanpot mutar la seqüència de referència)std::eraseistd::erase_if, simplificant l'esborrat d'elements per a la majoria de contenidors estàndard<version>capçalerastd::bit_cast<>per al càsting de tipus de representacions d'objectes, amb menys verbositat quememcpy()i més capacitat per explotar els components interns del compilador- macros de prova de característiques
- diversos bits de biblioteca constexpr
- creació de punter intel·ligent amb inicialització predeterminada
contains-mètode per a contenidors associatius- operacions de bits, com ara el recompte zero/un inicial/final, i operacions log2
std::bind_front
Remove ads
Referències
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads