C++20

Edició 2020 de l'estàndard del llenguatge de programació C++ From Wikipedia, the free encyclopedia

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]

Dades ràpides Tipus, Versió inicial ...
C++20

Tipusedició d'estàndard ISO
Versió inicial2020
Epònim2020
Característiques tècniques
PlataformaC standard library
Més informació
Lloc webiso.org… (anglès)


C++17
C++23
Tanca

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 for una 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 typename en determinades circumstàncies
  • nous atributs estàndard [[no_unique_address]], [[likely]] i [[unlikely]]
  • condicional explicit, permetent que el modificador explicit sigui contingent d'una expressió booleana
  • constexpr expandit: funcions virtuals, union, try and catch, dynamic_cast i typeid, 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 static i thread_local)
  • corrutines
  • using l'enumeració amb enum s
  • paraula clau constinit

Biblioteca

  • rangs (The One Ranges Proposal)
  • std::make_shared i std::allocate_shared per a matrius
  • punters intel·ligents atòmics (com ara std::atomic<shared_ptr<T>> i std::atomic<weak_ptr<T>> )
  • std::to_address per 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 a std::string_view però span pot mutar la seqüència de referència)
  • std::erase i std::erase_if, simplificant l'esborrat d'elements per a la majoria de contenidors estàndard
  • <version> capçalera
  • std::bit_cast<> per al càsting de tipus de representacions d'objectes, amb menys verbositat que memcpy() 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

Referències

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.