C ++ 23 - C++23

C ++ 23 je neformální název pro další verzi normy ISO / IEC 14882 pro programovací jazyk C ++, která by měla následovat C ++ 20 . Aktuální návrh je N4892.

V únoru 2020 byl na závěrečné schůzce C ++ 20 v Praze přijat celkový plán pro C ++ 23: plánovanými funkcemi pro C ++ 23 jsou podpora knihovny pro korutiny , standardní modulární knihovna, exekutory a vytváření sítí.

První setkání WG21 zaměřené na C ++ 23 se mělo konat ve Varně na začátku června 2020, ale bylo zrušeno kvůli pandemii COVID-19 , stejně jako setkání v listopadu 2020 v New Yorku a setkání v únoru 2021 v Koně, Havaj . Je nepravděpodobné, že by do roku 2022 proběhlo osobní setkání.

Nové vlastnosti

Při absenci osobních schůzek WG21 bylo do konceptu C ++ 23 zatím přidáno několik nových funkcí. Po virtuální schůzce WG21 dne 9. listopadu 2020, kde byly schváleny průzkumy slámy, však byly přidány následující:

  • Doslovné přípony pro std::size_ta odpovídající podepsaný typ
  • Členská funkce containspro std::basic_stringa std::basic_string_viewpro kontrolu, zda řetězec obsahuje daný podřetězec nebo znak
  • Knihovna stacktrace ( <stacktrace>), založená na Boost .Stacktrace
  • Typová vlastnost std::is_scoped_enum
  • Záhlaví <stdatomic.h>pro interoperabilitu s C atomics

Po virtuální schůzce WG21 ze dne 22. února 2021 byly přidány následující funkce, kde byly schváleny průzkumy slámy:

  • Oprava adaptérů vstupního rozsahu a counted_iterator.
  • Odebrání nepotřebného seznamu prázdných parametrů ()z výrazů lambda .
  • Uvolněte požadavky na time_point::clock.
  • std::visitpro třídy, ze kterých jsou odvozeny std::variant.
  • Zámky zámek zamykatelné.
  • Podmíněně vypůjčené rozsahy.
  • std::to_underlying.

Po virtuálním zasedání plenárního zasedání norem ISO C ++ v létě 2021 v červnu 2021 byly nové funkce a zprávy o závadách schváleny průzkumy slámy:

  • Konstantní if ( ).if consteval
  • Zúžení kontextových převodů na bool.
  • Povolení duplicitních atributů.
  • std::span-string string-stream ( <spanstream>).
  • std::out_ptr()a std::inout_ptr().
  • constexprpro std::optional, std::varianta std::type_info::operator==.
  • Iterátory spárují konstruktory pro std::stack( zásobník ) a std::queue( fronta ).
  • Několik změn knihovny rozsahů:
    • Zobecněné starts_witha ends_withpro libovolné rozsahy.
    • Přepracovaný split_viewa nový lazy_split_view.
    • Uvolnění omezení join_view.
    • Odstranění default_initializableomezení z konceptu view.
    • Konstruktor rozsahu pro std::basic_string_view.
  • Zákaz std::basic_stringa std::basic_string_viewkonstrukce od nullptr.
  • std::invoke_r.
  • Vylepšení na std::format.
  • Přidání výchozích argumentů pro std::pairkonstruktor pro předávání.

Odebrána funkce

  • Podpora sbírání odpadků.

Reference