C++23

De la Viquipèdia, l'enciclopèdia lliure
C++23

Tipusentitat proposada Modifica el valor a Wikidata
Epònim2023 Modifica el valor a Wikidata
Característiques tècniques
PlataformaC standard library

C++20 Modifica el valor a Wikidata
C++26 (en) Tradueix Modifica el valor a Wikidata

C++23 és el nom informal de la propera versió de l'estàndard ISO / IEC 14882 per al llenguatge de programació C++ que seguirà C++20. L'esborrany final d'aquesta versió és N4950.[1][2]

El febrer de 2020, a la reunió final de C++20 a Praga, es va adoptar un pla general per a C++23: [3][4] les característiques previstes per a C++23 són suport de biblioteques per a coroutines, una biblioteca estàndard modular, executors i treball en xarxa.

La primera reunió del WG21 centrada en C++23 estava pensada per tenir lloc a Varna a principis de juny de 2020, però es va cancel·lar a causa de la pandèmia de COVID-19,[5][6] igual que la reunió de novembre de 2020 a Nova York [7][6] i la reunió de febrer de 2021 a Kona, Hawaii.[7] Totes les reunions fins al novembre de 2022 van ser virtuals, mentre que la reunió de novembre de 2022 va ser híbrida.[7]

Noves característiques[modifica]

En absència de reunions presencials del WG21 durant la pandèmia de COVID, es van afegir poques funcions noves a l'esborrany de C++23 a les primeres reunions d'estàndards. Els següents es van afegir després de la reunió virtual del GT21 del 9 de novembre de 2020, on van ser aprovats per enquestes de palla: [8]

  • Sufixos literals per std:: size_t i el tipus signat corresponent
  • Una funció membre containsper std :: basic_stringi std :: basic_string_view, per comprovar si la cadena conté o no una subcadena o caràcter determinats
  • Una biblioteca de stacktrace (< stacktrace >), basat en Boost. Stacktrace
  • Un tret de tipus std :: is_scoped_enum
  • La capçalera < stdatomic. h >, per a la interoperabilitat amb C atòmics

Després de la reunió virtual del GT21 del 22 de febrer de 2021, s'afegeixen les funcions següents on van ser aprovades per enquestes de palla: [9]

  • Eliminació de la llista de paràmetres buida innecessària ()a partir d'expressions lambda.[10]
  • S'estan reparant els adaptadors d'interval d'entrada i counted_iterator.[11]
  • Relaxeu els requisits de time_point :: clock.[12]
  • std :: visit per a les classes que es deriven de std :: variant.[13]
  • Panys amb pany.[14]
  • Intervals prestats condicionalment.[15]
  • std :: to_underlying.[16]

Després de la reunió virtual plenaria dels estàndards ISO C++ de l'estiu de 2021 del juny de 2021, les enquestes de palla van aprovar noves característiques i informes de defectes: [17]

  • Consteval si (if consteval).
  • Reducció de conversions contextuals a bool.
  • Permet atributs duplicats.
  • std :: span -based string-stream (< spanstream >).
  • std :: out_ptr () i std :: inout_ptr ().
  • constexpr per std :: optional, std :: variant, i std :: type_info :: operator ==.
  • Els iteradors parelles constructors per a std :: stack(pila) i std :: queue(cua).
  • Pocs canvis a la biblioteca d'intervals:
    • Generalitzat starts_withi ends_withper a intervals arbitraris.
    • S'ha canviat el nom split_viewa lazy_split_viewi nou split_view.
    • Relaxant la restricció a join_view.
    • S'està eliminant default_initializablerestricció des de view del concepte.
    • Constructor d'interval per std :: basic_string_view.
  • Prohibició de std :: basic_stringi std :: basic_string_viewconstrucció de nullptr.
  • std :: invoke_r.
  • Millores al std :: format.
  • Afegint arguments per defecte per a std :: pairel constructor de reenviament.

Referències[modifica]

  1. «Working Draft, Standard for Programming Language C++» (en anglès), 10-05-2023.
  2. «N4951 Editors' Report: Programming Languages - C++» (en anglès), 10-05-2023. Arxivat de l'original el 2023-06-05.
  3. Dusíková, Hana. «N4817: 2020 Prague Meeting Invitation and Information» (en anglès), 06-11-2019. Arxivat de l'original el 2019-12-29. [Consulta: 13 febrer 2020].
  4. Voutilainen, Ville. «To boldly suggest an overall plan for C++23» (en anglès). www.open-std.org, 25-11-2019. Arxivat de l'original el 2019-12-24. [Consulta: 13 febrer 2020].
  5. «P2145R0: Evolving C++ Remotely» (en anglès). www.open-std.org.
  6. 6,0 6,1 Error en arxiuurl o arxiudata.Sutter, Herb. «[Herb Sutter Business Plan and Convener's Report: ISO/IEC JTC1/SC22/WG21 (C++)]» (en anglès), 29-07-2020.
  7. 7,0 7,1 7,2 «Upcoming Meetings, Past Meetings : Standard C++» (en anglès). isocpp.org.
  8. Ranns, Nina. «WG21 2020-11 Virtual Meeting: Minutes of Meeting» (en anglès), 19-11-2020.
  9. Ranns, Nina. «WG21 2021-02 Virtual Meeting: Minutes of Meeting» (en anglès), 22-02-2021.
  10. Alex Christensen. «P1102R2: Down with ()!» (en anglès), 11-12-2020.
  11. Tim Song. «Repairing input range adaptors and counted_iterator» (en anglès), 12-01-2021.
  12. Alexey Dmitriev. «Relax Requirements for time_point::clock» (en anglès), 22-10-2020.
  13. Barry Revzin. «Inheriting from std::variant» (en anglès), 30-10-2020.
  14. Tim Song. «Locks lock lockables» (en anglès), 13-11-2020.
  15. Barry Revzin. «Conditionally borrowed ranges» (en anglès), 19-02-2020.
  16. JeanHeyd Meneide. «std::to_underlying for enumerations» (en anglès), 22-01-2021.
  17. Ranns, Nina. «WG21 2021-06 Virtual MeetingMinutes of Meeting» (en anglès), 07-06-2021.