C++26

Verze jazyka C++

C++26 je neformální jméno pro připravovanou verzi ISO a IEC 14882 normy programovacího jazyka C++, která následuje po C++23. Aktuální draft této verze je N4981.[1]

Vlastnosti

Mezi změny, které mají být součástí C++26, patří:

Jazyk

  • Nevyhodnocované řetězce
  • Přidání znaků @, $ a ` k základní znakové sadě
  • constexpr změna typu z void*
  • Uživatelsky generované zprávy static_assert
  • Zástupné proměnné bez jména
  • Zhuštěné indexování
  • Atributy pro strukturované vazby
  • Chybné chování pro neinicializovaná čtení
  • = delete("reason");
  • Variadické friend funkce
  • constexpr umístění new
  • Deklarace strukturované vazby jako podmínka
  • Řazení omezení obsahující výrazy s opakovaným použitím operátoru (anglicky fold expressions)
  • Smazání ukazatele na neúplný typ musí být chyba
  • Strukturované vazby mohou zavést balíček s proměnným počtem prvků (anglicky pack)[2]
  • Umožnění vyhazování výjimek při vyhodnocování konstant
  • strukturované constexpr vazby a odkazy na constexpr proměnné
  • „Vypuštění parametrů bez předchozí čárky je nedoporučované. Zápis (int...) je nekompatibilní s jazykem C, škodlivý v C++ a snadno nahraditelný zápisem (int, ...).“[3]
  • Odstranění nedoporučovaných porovnání polí

Knihovna

  • Podpora hašování pro hodnoty třídy std::chrono
  • std::is_within_lifetime
  • Nativní manipulátory v souborových proudech
  • Rozhraní řetězcových proudů s std::string_view
  • Rozhraní std::bitset s std::string_view
  • Další constexpr v hlavičkových souborech <cmath> a <complex>
  • Přidání nových předpon podle SI z roku 2022 násobky: std::quecto, std::ronto, std::ronna a std::quetta
  • std::copyable_function
  • std::submdspan()
  • <debugging>: podpora ladění
  • <linalg>: volné rozhraní pro funkce lineární algebry vycházející z BLAS
  • Přidán protokol n-tic do std::complex
  • views::concat
  • Zřetězování řetězců a řetězcových pohledů
  • std::ranges::generate_random
  • Tisk prázdných řádků funkcí std::println()
  • std::formatter<std::filesystem::path>
  • Aritmetika se saturací, mimo jiné std::add_sat a std::div_sat

Odkazy

Reference

V tomto článku byl použit překlad textu z článku C++26 na anglické Wikipedii.

  1. Working Draft, Standard for Programming Language C++ [online]. Open Standards, 2024-04-16. Dostupné online. 
  2. REVZIN, Barry; WAKELY, Jonathan. 2024-11-22 [cit. 2024-12-27]. Dostupné online. 
  3. P3176R1: The Oxford variadic comma [online]. eisenwave.github.io [cit. 2024-12-09]. Dostupné online. 

Externí odkazy