C++26
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 zvoid*
- 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 naconstexpr
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
sstd::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
astd::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
astd::div_sat
Odkazy
Reference
V tomto článku byl použit překlad textu z článku C++26 na anglické Wikipedii.
- ↑ Working Draft, Standard for Programming Language C++ [online]. Open Standards, 2024-04-16. Dostupné online.
- ↑ REVZIN, Barry; WAKELY, Jonathan. 2024-11-22 [cit. 2024-12-27]. Dostupné online.
- ↑ P3176R1: The Oxford variadic comma [online]. eisenwave.github.io [cit. 2024-12-09]. Dostupné online.