C++23
C++23 je verze normy ISO/IEC 14882 programovacího jazyka C++ z roku 2023, která navazuje na C++20. Závěrečný draft C++23 je N4950.[1][2]
Celkový plán pro C++23,[3][4] podle něhož měla být do C++23 zapracována knihovní podpora korutin, podpora modulárního programování ve standardní knihovně, exekutory a podpora sítí, byl přijat na závěrečném zasedání pro C++20 v únoru 2020 v Praze.
První zasedání WG21 zaměřené na C++23 se mělo uskutečnit ve Varně na začátku června 2020, ale bylo zrušeno kvůli pandemii covidu-19,[5][6] stejně jako zasedání v listopadu 2020 v New Yorku[7][6] a zasedání v únoru 2021 v Kona na Havaji.[7] Všechna následující zasedání uskutečněná do listopadu 2022 byla virtuální, od listopadu 2022 do závěrečného zasedání v únoru 2023 byla zasedání hybridní.[7] Norma C++23 byla technicky finalizována skupinou WG21 během hybridního zasedání v Issaquah v únoru 2023.[8]
Moderní verze „Hello, world“
[editovat | editovat zdroj]Po mnoha změnách v knihovnách provedených v draftu C++23 vypadá nová verze programu Hello world takto:[1]
#include <print>
int main()
{
    std::println("Hello, world!");
}
Vlastnosti
[editovat | editovat zdroj]Ke změnám, které byly přijaty do C++23, patří:
Jazyk
[editovat | editovat zdroj]- explicitní parametr thisobjektu[9]
- if consteval[10]
- operátor vícerozměrných indexů[11]
- statická volání a indexové operátory a statické lambda funkce[12][13]
- zjednodušení implicitního přesunu[14]
- auto(x)a- auto{x}[15]
- nové direktivy preprocesoru:
- rozšíření životnosti některých dočasných entit ve smyčkách přes rozsah[18]
- nový standardní atribut [[assume(expression)]][19]
- vyvozování argumentů šablony třídy ze zděděných konstruktorů[20]
- možnost použití návěstí na konci složeného příkazu[21]
- povolení deklarace aliasů v inicializačních příkazech příkazů if,switchaforpřes rozsah[22]
- sufixy literálů pro std::size_ta odpovídající typ se znaménkem[23]
- rozšířené typy s pohyblivou řádovou čárkou a literály pro tyto typy (podmíněně podporované)[24]
- závorky ()v lambda výrazech bez parametrů jsou nyní nepovinné[25]
- atributy lambda výrazů[26]
- změny v constexpr:- neliterální proměnné, návěstí, a příkazy gotovconstexprfunkcích[27]
- umožnění aby proměnné s paměťovou třídou staticnebothread_localbylo možné používat v konstantních výrazech vconstexprfunkcích[28]
- návratový typ a typy parametrů constexprfunkcí nemusí být literální typy
- nyní je možné napsat constexprfunkci, jejíž žádné vyvolání nesplňuje požadavky na základní konstantní výraz[29]
 
- neliterální proměnné, návěstí, a příkazy 
- zúžení kontextových konverzí na boolvstatic_assertaif constexpr[30]
- vypuštění bílých znaků před spojením řádků[31]
- deklarace pořadí prvků struktury je povinná[32]
- ohraničené escape posloupnosti[33]
- pojmenované univerzální znakové escapy[34]
- změny v kódování textu:
Knihovna
[editovat | editovat zdroj]Standardní podpora knihovních modulů
[editovat | editovat zdroj]- standardní knihovní moduly stdastd.compat[38]
Knihovní podpora korutin
[editovat | editovat zdroj]- synchronní korutina std::generatorpro rozsahy[39]
Podpora obecných programů
[editovat | editovat zdroj]- výsledkový typ std::expected[40]
- monadické operace pro std::optional[41] astd::expected[42]
- pomocná funkce std::to_underlyingpro získání podkladových hodnot enum[43]
- std::move_only_functionpro funkční objekty, které podporují pouze přesun, ne kopírování[44]
- std::forward_like[45]
- std::invoke_r[46]
- std::bind_back[47]
- std::byteswap[48]
- std::unreachable: funkce pro označení nedosažitelného kódu[49]
- std::tupleje nyní kompatibilní s jinými objekty podobnými n-ticím[50]
- specializace std::basic_common_referenceprostd::reference_wrappervracející referenční typy[51]
- přidání implicitních argumentů pro forwardující konstruktor typu std::pair[18]
Podpora pro dobu překladu
[editovat | editovat zdroj]- podpora constexprv:
- nástroje pro metaprogramování:
- přidání podpory výhradně přesunových typů pro porovnání v konceptech[60]
Iterátory, rozsahy a podpora algoritmů
[editovat | editovat zdroj]- nová funkce pro konverze rozsahů std::ranges::to[61]
- nové algoritmy pro omezené rozsahy:
- nový helper std::ranges::range_adaptor_closurepro uživatelské definice uzávěrů adaptérů rozsahů[47]
- nové adaptéry rozsahů:
- std::views::zipa další varianty
- std::views::adjacenta další varianty[67]
- std::views::join_with[68]
- std::views::slide
- std::views::chunk[69]
- std::views::chunk_by[70]
- std::views::as_rvalue[71]
- std::views::as_const[72]
- std::views::repeat[73]
- std::views::stride[74]
- std::views::cartesian_product[75]
- std::views::enumerate[76]
 
- oprava konstantních iterátorů, zarážek (anglicky sentinels) a rozsahů; std::ranges::cbegina další podobné nástroje vracející konstantní iterátory musejí být plně funkční i pro mělké const pohledy (např.std::span)[72]
- umožnění použití iterátorů přes rozsahy jako vstupů pro algoritmy nepracující s rozsahy[77]
- uvolnění adaptérů rozsahu, aby je bylo možné používat pro typy umožňující pouze přesun[78]
- explicitní zpřístupnění některých víceparametrových konstruktorů pohledůexplicit[79]
Podpora správy paměti
[editovat | editovat zdroj]- std::out_ptra- std::inout_ptrpro interoperabilitu s jazykem C[80]
- std::allocate_at_leasta- std::allocator::allocate_at_least[81]
- explicitní funkce std::start_lifetime_aspro správu životnosti pro typy s implicitní životností[82]
- zákaz uživatelských specializací std::allocator_traits[83]
Podpora zpracování řetězců a textu
[editovat | editovat zdroj]- nové členské funkce a změny řetězcových typů:
- std::basic_string_view::containsa- std::basic_string::contains[84]
- zákaz konstrukce std::basic_stringastd::basic_string_viewznullptr[85]
- explicitní konstruktor rozsahu pro std::basic_string_view[86]
- std::basic_string::resize_and_overwrite[87]
- přetížení reference rvalue std::basic_string::substrpro vytváření efektivních řezů[88]
 
- formátování rozsahů, n-tic, escapovaných prezentací znaků a řetězců, std::thread::id, a stacktraces.[89][90][91]
Podpora diagnostiky
[editovat | editovat zdroj]- knihovna stacktrace[92]
Podpora vstupů a výstupů
[editovat | editovat zdroj]- funkce std::printastd::printlnpro formátovaný výstup v novém hlavičkovém souboru<print>[93]
- nový hlavičkový soubor <spanstream>[94]
- podpora výlučného režimu ve funkcích z hlavičkového souboru std::fstream[95]
- std::basic_ostream::operator<<(const volatile void*)[96]
Podpora kontejnerů
[editovat | editovat zdroj]- vícerozměrná verze span std::mdspan[97][98][99][100]
- konstruovatelnost a přiřaditelnost kontejnerů z jiných kompatibilních rozsahů[61]
- adaptéry kontejnerů flat set a flat map[101][102]
- nevyvozování kontextu pro alokátory v průvodcích vyvozování kontejnerů[103]
- heterogenní vymazání přetížení pro asociativní kontejnery[104]
- umožnění konstrukce dvojic iterátorů pro zásobník a frontu[105]
- vyžadování, aby std::spanastd::basic_string_viewbyly triviálně kopírovatelné[106]
Podpora kompatibility s jazykem C
[editovat | editovat zdroj]- nový hlavičkový soubor <stdatomic.h>[107]
Hlášení o vadách jazyka
[editovat | editovat zdroj]- Syntaxe C++ identifikátorů podle Přílohy 31 Mormy Unicode[108]
- umožnění duplicitních atributů[109]
- změna rozsahu platnosti koncového návratového typu lambda funkcí[110]
- omezení změn přetížených operátorů porovnání[111]
- zrušeno nedoporučování volatilních složených přiřazení[112][113]
- oprava kompatibility a přenositelnosti typu char8_t[114]
- zmírnění požadavků na wchar_t, aby odpovídal existující praxi[115]
- povolení určitých ukazatelů a referencí na thisnebo na entity neznámého počátek (souřadnicového systému)/původ v konstantní výrazy[116]
- zavádění of bezprostředně-escalating funkcí promoted na bezprostředně funkcí[117]
- povolení static_assert(false)v kontextech neinstanciovaných šablon
Opravy chyb v knihovně
[editovat | editovat zdroj]- změny v knihovně rozsahů:
- podmíněné vypůjčující rozsahy[118]
- opravy adaptérů vstupních rozsahů a std::counted_iterator[119]
- uvolnění omezení na std::ranges::join_view[120]
- přejmenování std::ranges::split_viewnastd::ranges::lazy_split_viewa novésplit_view[121]
- odstraněno omezení std::default_initializablez konceptustd::ranges::view[122]
- nové std::ranges::owning_view(pohledy s vlastněním)[123]
- oprava std::ranges::istream_view[124]
 
- změny v knihovně pro formátování textu:
- std::basic_format_string[125]
- kontroly formátových řetězců v době překladu
- omezení velikosti binárního kódu std::format_to[126]
- oprava zpracovávání locale v časových formátovačích[127]
- zlepšení odhadu šířky[128] a počtu výplňkových znaků v std::format[129]
- použití forwardujících referencí v argumentech formátu pro umožnění nekonstantně formátovatelných typů[130]
 
- úplné constexprstd::variantastd::optional[131]
- pomocné typy odvozené z std::variantvstd::visit[132]
Odstraněné a nedoporučované vlastnosti
[editovat | editovat zdroj]Odstraněné vlastnosti:
- podpora garbage collectoru a (striktní) bezpečnosti ukazatelů[133] (což znamená, že bude dostupná pouze volná bezpečnost ukazatelů[134]). Tato minimální podpora garbage collection (a pro ni potřebná bezpečnost ukazatelů) byla přidána do C++11, ale žádný kompilátor ji nikdy nepodporoval, takže v C++23 byla odstraněna.[135] To však neznamená, že se v C++ nepoužívalo a nepoužívá mnoho implementací GC, například Boehm GC (kterou lze použít také v režimu ladění pro detekci úniků paměti), a taková GC je často implementována v C++, aby ji mohly používat i jiné jazyky
- smíšené spojování literálů širokých řetězců[136]
- nekódovatelné široké znakové literály a víceznakové široké znakové literály.[137]
Nedoporučované vlastnosti:
Znovu zavedené vlastnosti, které byly dříve nedoporučované:
- používání operátoru čárky v indexových výrazech již není nedoporučované, ale jeho sémantika byla změněna, aby podporovala přetížitelný n-adický operator[]
- hlavičkové soubory pro jazyk C (odpovídající hlavičkovým souborům <*.h>pro kompatibilitu s jazykem C)
Publikováno jako technické specifikace
[editovat | editovat zdroj]- Concurrency TS v2[140]
Podpora překladače
[editovat | editovat zdroj]- Do překladače Clang byla částečná podpora C++23 postupně doplňována od verze 13 z roku 2021 do verze 18 z roku 2024; je dostupná pomocí volby -std=c++23. [141]
- Do překladače GCC byla částečná experimentální podpora C++23 přidána v roce 2021 ve verzi 11; je dostupná pomocí volby -std=c++2bnebo-std=c++23. Existuje také má volba-std=gnu++2bpro povolení GNU rozšíření s experimentální podporou C++23. [142]
Historie
[editovat | editovat zdroj]Protože nebylo možné pořádat prezenční zasedání skupiny WG21, byly některé změny schváleny na několika virtuálních zasedáních skupiny WG21 po neformálních hlasováních:
Po virtuálním zasedání WG21 9. listopadu 2020 byly přidány následující vlastnosti schválené neformálním hlasováním:[143]
- sufixy literálů pro std::size_ta odpovídající typy se znaménkem
- členská funkce containsprostd::basic_stringastd::basic_string_viewvracející, zda řetězec obsahuje zadaný podřetězec nebo znak
- knihovna stacktrace (<stacktrace>) vycházející z knihovny Boost.Stacktrace
- znakový typ std::is_scoped_enum
- hlavičkový soubor <stdatomic.h>pro interoperabilitu s atomickými operacemi v jazyce C
Po virtuálním zasedání WG21 22. února 2021 byly přidány následující vlastnosti, které byly schváleny neformálním hlasováním:[144]
- možnost vypustit závorky ()prázdného seznamu parametrů v lambda výrazech
- oprava vstupních adaptérů rozsahů a counted_iterator
- uvolnění požadavků na time_point::clock[145]
- std::visitpro třídy, které jsou odvozené z- std::variant
- locks lock lockables[146]
- mechanismus pro označení rozsahů jako conditionally borrowed, který vývojářům umožňuje kontrolovat, zda je bezpečné s nimi zacházet jako s „půjčenými“ (tj. lze je bezpečně používat i po přechodu do funkce, která rozsah převzala jako argument, aniž by bylo nutné kopírovat nebo přesouvat data)
- std::to_underlying
Po letním 2021 plenárním virtuálním zasedání pro ISO C++ standardy v červnu 2021 byly neformálním hlasováním schváleny nové vlastnosti a zprávy o defektech:[147]
- consteval, pokud (if consteval)
- zúžení kontextové konverze pro bool
- povolení duplicitních atributů
- řetězcový proud (<spanstream>) založený nastd::span
- std::out_ptr()a- std::inout_ptr()
- constexprpro- std::optional,- std::variant, a- std::type_info::operator==
- konstruktory dvojic iterátorů pro std::stack(zásobník) astd::queue(frontu)
- změny v knihovně rozsahů:
- zobecnění starts_withaends_withpro libovolné rozsahy
- přejmenování split_viewtolazy_split_viewa novýsplit_view
- uvolnění omezení na join_view
- Odstraňování default_initializableomezení z konceptview
- konstruktor rozsahu pro std::basic_string_view
 
- zobecnění 
- zákaz konstrukcí std::basic_stringastd::basic_string_viewznullptr
- std::invoke_r
- vylepšení std::format
- přidání implicitních argumentů k forwardujícímu konstruktoru pro std::pair
Od podzimu 2021 ISO C++ standardy plenárním virtuálním zasedání v říjnu 2021 byly schváleny nové vlastnosti a zprávy o defektech neformálním hlasováním:[148]
- neliterální proměnné, návěstí a příkazy goto v constexprfunkcích, ale stále chybně utvořené pro jejich vyhodnocení v době překladu
- explicitní thisobjekt parametr
- změny znakové sady a kódování
- nové direktivy preprocesoru: #elifdefa#elifndef. Obě direktivy byly přidány v C23 (aktualizace normy jazyka C) a GCC 12[149]
- umožnění deklarace aliasů v init-příkazech
- přetěžování operátoru vícerozměrného indexu (například arr[1, 2])
- decay copy v jazyce: auto(x)neboauto(x)
- změny v knihovně pro formátování textu:
- oprava zpracovávání locales ve formátovačích času
- použití předběžných referencí v argumentech formátu umožňuje typy podobné typu std::generator
 
- přidání typového aliasu std::pmr::stacktrace, který je ekvivalentní sstd::basic_stacktrace<std::pmr::polymorphic_allocator>[150]
- změny v knihovně rozsahů:
- upřesněná definice view
- nahrazení šablony funkce std::ranges::istream_viewšablonami aliasůstd::ranges::istream_view,std::ranges::wistream_viewa objektemstd::views::istream
- ziprodina adaptérů rozsahů:- zip_view
- zip_transform_view
- adjacent_view(a- std::views::pairwiseje ekvivalentní s- std::views::adjacent<2>)
- adjacent_transform_view(a- std::views::pairwise_transformje ekvivalentní s- std::views::adjacent_transform<2>)
 
 
- upřesněná definice 
- std::move_only_function
- monadické operace pro std::optional
- šablona členské funkce std::basic_string::resize_and_overwrite
- výpis volatileukazatele (volatile T*)
- std::byteswap
- heterogenní přetížení eraseaextractpro asociativní kontejnery
- každá specializace std::spanastd::basic_string_viewje triviálně kopírovatelná
- přidání podmíněných noexceptspecifikací prostd::exchange[151]
- přepracování specifikace a použití typů třídy integer[152]
- vyjasnění statusu hlavičkových souborů z jazyka C ve standardní knihovně C++: Hlavním účelem hlavičkových souborů z jazyka C je zajištění interoperability s jazykem ISO C a s ostatními systémy, které používají ABI a spojovací konvence jazyka C. Ve zdrojovém kódu, který je určen pouze pro jazyk C++, nejsou hlavičkové soubory z jazyka C potřebné. Standardní knihovna C++ poskytuje hlavičkové soubory z jazyka C pro programy jako plně podporovanou, nikoliv nedoporučovaná část, ale zároveň nedoporučuje jejich používání v kódu, který nezajišťuje interoperabilitu s jinými programovacími jazyky.[153]
Po virtuálním zasedání WG21 7. února 2022 byly přidány následující vlastnosti, které byly schváleny na základě neformálních hlasování:[154]
- povolení atributů operátorů volání lambda funkcí
- std::expected
- constexprv- cmatha- cstdlib
- funkce pro označení nedosažitelného kódu
- ranges::to
- typová vlastnost pro detekci vazby reference na dočasný objekt
- std::unique_ptrje nyní- constexpr
- podpora uživatelem definovaných adaptérů rozsahů
- ranges::iota,- ranges::shift_lefta- ranges::shift_right
- views::join_with
- použití okének v adaptérech rozsahů: views::chunkaviews::slide
- views::chunk_by
Po virtuálním zasedání WG21 25. července 2022 byly přidány následující vlastnosti a zprávy o defektech, které byly schváleny neformálním hlasováním:[155]
- omezení změn přetížených operátorů porovnání
- zrušeno nedoporučování bitových přiřazení do volatileproměnné
- přidána direktiva preprocesoru #warning
- odstraněny nekódovatelné široké znakové literály a víceznakové široké znakové literály
- povolení návěstí na konci složených příkazů
- přidány escape posloupnosti ve složených závorkách pro čísla v osmičkové a šestnáctkové soustavě a pro univerzální jména znaků
- umožnění, aby constexprfunkcí na nikdy být konstantní výrazy
- zjednodušení některých implicitních přesunových pravidel z C++20 a umožnění implicitního přesunu při vrácení rvalue reference
- přidána možnost zadávání znaků Unicode jménem. Například U'\N{LATIN CAPITAL LETTER A WITH MACRON}' // Ekvivalent U'\u0100'
- umožnění, aby operator()a lambda funkce mohly býtstatic
- umožnění ukazatelů a referencí na thisa entity neznámého původu v konstantních výrazech
- umožnění, aby implementace definovala rozšířené typy s pohyblivou řádovou čárkou vedle tří standardních typů. Přidané typové aliasy std::float16_t,std::float32_t,std::float64_t,std::float128_t,std::bfloat16_tpro tyto rozšířené typy zpřístupněné v hlavičkovém souboru<stdfloat>, odpovídající literální sufixyf16f32f64f128bf16neboF16F32F64F128BF16a přidané přetížení do různých standardních knihovních funkcí, jejichž parametry jsou typy s pohyblivou řádovou čárkou
- přidán atribut [[assume(expression)]], který umožňuje překladači předpokládat, že poskytnutý výraz je pravdivý pro umožnění optimalizací
- povinná podpora zdrojových souborů v UTF-8; poskytuje přenositelné kódování zdrojových souborů
- umožnění, aby pole prvků typu charaunsigned charbyla inicializována řetězcovými literály v kódování UTF-8
- odstranění požadavku, aby wchar_tmohl kódovat všechny znaky rozšířené znakové sady, ve výsledku umožňuje, aby se UTF-16 mohlo používat pro široké řetězcové literály
- přidáno std::mdspan, pohled na vícerozměrná pole podobnýstd::span
- doplnění flat_mapaflat_setke standardní knihovně
- přidány funkce std::printastd::printlnpro tisk formátovaného textu na stdout
- pojmenované moduly stdastd.compatpro import standardní knihovny
- přidána podpora výlučného režimu fstreams, podobná použití příznaku "x" vfopen
- umožnění, aby std::formatzpracovávalo rozsahy, n-tice a jiné kontejnery
- přidáno std::forward_like
- funkce std::string::substrnyní používá přesunovou sémantiku
- přidána funkce std::generator, která implementuje generátor korutin modelujícístd::ranges::input_range
- views::cartesian_product,- views::repeat,- views::stride,- views::as_const,- views::as_rvalue
- přidány nové algoritmy: ranges::find_last,ranges::contains, a rozsahy záhyb algoritmy
- std::tupleje kompatibilní s jinými objekty podobnými n-ticím
- explicitní řízení životnosti pro typy s implicitní životností
- funkce std::bitseta celočíselná přetížení funkcístd::to_charsastd::from_charsjsou kompatibilní sconstexpr
- přidána podpora pouze přesunových typů pro porovnávání konceptů
- iterátory přes rozsahy jako vstupy pro algoritmy nepracující s rozsahy
- uvolnění adaptérů rozsahů pro typy umožňující pouze přesun
Po hybridním zasedání WG21 7. listopadu 2022 byly doplněny následující vlastnosti a zprávy o defektech, které byly schváleny neformálním hlasováním:[156]
- umožnění, aby operator[]bylstatic
- umožnění, aby se proměnné s třídou paměti staticathread_localmohly používat vconstexprfunkcích, pokud jsou použitelné v konstantních výrazech
- propagace constevalvzhůru, což znamená, že určité existující funkce sconstexprnyní budouconsteval, pokud mohou být vyvolané pouze v době překladu
- životnost dočasných proměnných, které se vyskytují v inicializátoru forcyklů přes rozsahy, rozšířena aby pokrývala celý cyklus
- zrušeno nedoporučování (všech, nejen bitových) složené přiřazení do proměnných volatile
- monadické funkce pro std::expected
- synchronizuje výstup funkce std::prints podkladovým proudem, pokud se používá nativní Unicode API[157]
Po závěrečném hybridním zasedání WG21 ve dnech 6.-11. února 2023 byly přidány následující vlastnosti a zprávy o defektech, které byly schváleny neformálním hlasováním:[158]
- odkaz na normu Unicode[159]
- stashing iterators (iterátory, které si ukládají kopii hodnot) mohou být pouze vstupní[160]
- views::enumerate
- explicitní zpřístupnění víceparametrových konstruktorů pohledů
- mírné uvolnění pravidel pro rozsahy
- vylepšení escapování v std::format
- zlepšení odhadu šířky v std::format
- přípustné vyplňkové znaky v std::format
- formátování thread::ida výstupustacktrace
- typová vlastnost std::is_implicit_lifetime
- std::common_reference_tv- std::reference_wrappermusí být referenčního typu
- zákaz uživatelských specializací std::allocator_traits
- std::pmr::generator
- označení std::numeric_limits::has_denormjako zastaralé
- záruky dokončení fáze std::barrier
Odkazy
[editovat | editovat zdroj]Reference
[editovat | editovat zdroj]V tomto článku byl použit překlad textu z článku C++23 na anglické Wikipedii.
- ↑ Working Draft, Standard for Programming Language C++ [online]. ISO/IEC, Open Standards, 2023-05-10. Dostupné v archivu pořízeném z originálu dne 2024-02-16.
- ↑ N4951 Editors' Report: Programming Languages - C++ [online]. Open Standards, 2023-05-10. Dostupné v archivu pořízeném z originálu dne 2023-06-05.
- ↑ DUSÍKOVÁ, Hana. N4817: 2020 Prague Meeting Invitation and Information [online]. Open Standards, 2019-11-06 [cit. 2020-02-13]. Dostupné v archivu pořízeném z originálu dne 2019-12-29.
- ↑ VOUTILAINEN, Ville. To boldly suggest an overall plan for C++23 [online]. Open Standards, 2019-11-25 [cit. 2020-02-13]. Dostupné v archivu pořízeném z originálu dne 2019-12-24.
- ↑ LELBACH, Bryce Adelstein; WINTERS, Titus; FRACASSI, Fabio; BAKER, Billy; LIBER, Nevin; BASTIEN, JF; STONE, David. P2145R0: Evolving C++ Remotely [online]. Open Standards, 2020-04-20. Dostupné v archivu pořízeném z originálu dne 2024-02-12.
- ↑ a b SUTTER, Herb. Business Plan and Convener's Report: ISO/IEC JTC1/SC22/WG21 (C++) [online]. 2020-07-29. Dostupné online.
- ↑ a b c Upcoming Meetings, Past Meetings : Standard C++ [online]. isocpp.org. Dostupné online.
- ↑ C++23 "Pandemic Edition" is complete (Trip report: Winter ISO C++ standards meeting, Issaquah, WA, USA) [online]. herbsutter.com, 2023-02-13. Dostupné online.
- ↑ Gašper Ažman; Sy Brand; Ben Deane; Barry Revzin. Deducing this [online]. 2021-07-12. Dostupné online.
- ↑ Barry Revzin; Richard Smith; Andrew Sutton; Daveed Vandevoorde. if consteval [online]. 2021-03-22. Dostupné online.
- ↑ Mark Hoemmen; Daisy Hollman; Corentin Jabot; Isabella Muerte; Christian Trott. Multidimensional subscript operator [online]. 2021-09-14. Dostupné online.
- ↑ static operator() [online]. 2022-04-08. Dostupné online.
- ↑ static operator[] [online]. 2022-11-11. Dostupné online.
- ↑ Simpler implicit move [online]. 2022-03-23. Dostupné online.
- ↑ Zhihao Yuan. auto(x): decay-copy in the language [online]. 2021-07-12. Dostupné online.
- ↑ Melanie Blower. Add support for preprocessing directives elifdef and elifndef [online]. 2021-04-30. Dostupné online.
- ↑ Aaron Ballman. Support for #warning [online]. 2022-01-13. Dostupné online.
- ↑ a b Wording for P2644R1 Fix for Range-based for Loop [online]. 2022-11-11. Dostupné online.
- ↑ Portable assumptions [online]. 2022-04-22. Dostupné online.
- ↑ Timur Doumler. Wording for class template argument deduction from inherited constructors [online]. 2022-05-20. Dostupné online.
- ↑ Labels at the end of compound statements (C compatibility) [online]. 2022-01-13. Dostupné online.
- ↑ Jens Maurer. Extend init-statement to allow alias-declaration [online]. 2021-04-13. Dostupné online.
- ↑ JeanHeyd Meneide; Rein Halbersma. Literal Suffix for (signed) size_t [online]. 2019-11-24. Dostupné online.
- ↑ Extended floating-point types and standard names [online]. 2022-04-22. Dostupné online.
- ↑ Alex Christensen; JF Bastien. P1102R2: Down with ()! [online]. 2020-12-11. Dostupné online.
- ↑ Attributes on Lambda-Expressions [online]. Dostupné online.
- ↑ Ville Voutilainen. Non-literal variables (and labels and gotos) in constexpr functions [online]. 2021-07-12. Dostupné online.
- ↑  Permittingstatic constexprvariables inconstexprfunctions [online]. 2022-11-07. Dostupné online.
- ↑ Relaxing some constexpr restrictions [online]. 2022-01-27. Dostupné online.
- ↑ Andrzej Krzemieński. Narrowing contextual conversions to bool [online]. 2021-04-12. Dostupné online.
- ↑ Corentin Jabot. Trimming whitespaces before line splicing [online]. 2021-04-13. Dostupné online.
- ↑ Pal Balog. Make declaration order layout mandated [online]. 2021-04-02. Dostupné online.
- ↑ Delimited escape sequences [online]. 2022-02-25. Dostupné online.
- ↑ Named universal character escapes [online]. 2022-03-25. Dostupné online.
- ↑ Support for UTF-8 as a portable source file encoding [online]. 2022-07-01. Dostupné online.
- ↑ Corentin Jabot. Consistent character literal encoding [online]. 2021-09-14. Dostupné online.
- ↑ Jens Maurer. Character sets and encodings [online]. 2021-09-21. Dostupné online.
- ↑ Standard Library Modules std and std.compat [online]. Dostupné online.
- ↑ (std::generator: Synchronous Coroutine Generator for Ranges) [online]. Dostupné online.
- ↑ Vicente Botet; JF Bastien; Jonathan Wakely. std::expected [online]. 2022-01-07. Dostupné online.
- ↑ Sy Brand. Monadic operations for std::optional [online]. 2021-04-27. Dostupné online.
- ↑ Jeff Garland. P2505R5 Monadic Functions forstd::expected[online]. 2022-09-28. Dostupné online.
- ↑ JeanHeyd Meneide. std::to_underlying for enumerations [online]. 2021-01-22. Dostupné online.
- ↑ Matt Calabrese; Ryan McDougall. move_only_function [online]. 2021-07-09. Dostupné online.
- ↑ Gašper Ažman. std::forward_like [online]. 2022-05-13. Dostupné online.
- ↑ Zhihao Yuan. invoke_r [online]. 2020-04-29. Dostupné online.
- ↑ a b Barry Revzin. Pipe support for user-defined range adaptors [online]. 2021-12-17. Dostupné online.
- ↑ Isabella Muerte; Corentin Jabot. Byteswapping for fun&&nuf [online]. 2021-09-17. Dostupné online.
- ↑ Melissa Mears; Jens Maurer. Function to mark unreachable code [online]. 2021-10-15. Dostupné online.
- ↑ Corentin Jabot. Compatibility between tuple, pair and tuple-like objects [online]. 2022-07-15. Dostupné online.
- ↑ Hui Xie; S. Levent Yilmaz; Tim Song. common_reference_t of reference_wrapper Should Be a Reference Type [online]. 2023-02-07. Dostupné online.
- ↑ Peter Dimov. Making std::type_info::operator== constexpr [online]. 2021-05-01. Dostupné online.
- ↑ Daniil Goncharov. A more constexpr bitset [online]. 2022-06-25. Dostupné online.
- ↑ Andreas Fertig. Making std::unique_ptr constexpr [online]. 2021-11-06. Dostupné online.
- ↑ Edward J. Rosten; Oliver J. Rosten. constexpr for<cmath>and<cstdlib> [online]. 2021-11-12. Dostupné online.
- ↑ Daniil Goncharov; Alexander Karaev. Add Constexpr Modifiers to Functions to_chars and from_chars for Integral Types in<charconv>Header [online]. 2021-09-18. Dostupné online.
- ↑ Juan Alday. A proposal for a type trait to detect scoped enumerations [online]. 2020-10-12. Dostupné online.
- ↑ Timur Doumler; Vittorio Romeo. A trait for implicit lifetime types [online]. 2022-11-11. Dostupné online.
- ↑ Tim Song. A type trait to detect reference binding to temporary [online]. 2021-10-13. Dostupné online.
- ↑ Justin Bassett. Move-only types for equality_comparable_with, totally_ordered_with, and three_way_comparable_with [online]. 2022-07-02. Dostupné online.
- ↑ a b Corentin Jabot; Eric Niebler; Casey Carter. Conversions from ranges to containers [online]. 2022-01-21. Dostupné online.
- ↑ Christopher Di Bella. starts_with and ends_with [online]. 2021-02-19. Dostupné online.
- ↑ Christopher Di Bella. std::ranges::contains [online]. 2021-04-16. Dostupné online.
- ↑ Zach Laine. find_last [online]. 2022-06-17. Dostupné online.
- ↑ Tim Song. ranges::iota, ranges::shift_left, and ranges::shift_right [online]. 2021-12-05. Dostupné online.
- ↑ Barry Revzin. ranges::fold [online]. 2022-04-22. Dostupné online.
- ↑ Tim Song. zip [online]. 2021-06-11. Dostupné online.
- ↑ Barry Revzin. views::join_with [online]. 2022-01-28. Dostupné online.
- ↑ Tim Song. Windowing range adaptors: views::chunk and views::slide [online]. 2021-12-05. Dostupné online.
- ↑ Tim Song. views::chunk_by [online]. 2021-11-19. Dostupné online.
- ↑ Barry Revzin. views::as_rvalue [online]. 2022-02-14. Dostupné online.
- ↑ a b Barry Revzin. cbegin should always return a constant iterator [online]. 2022-06-17. Dostupné online.
- ↑ Michał Dominiak. views::repeat [online]. 2022-07-13. Dostupné online.
- ↑ Christopher Di Bella; Tim Song. stride_view [online]. 2022-07-08. Dostupné online.
- ↑ Sy Brand; Michał Dominiak. views::cartesian_product [online]. 2022-07-13. Dostupné online.
- ↑ Corentin Jabot. views::enumerate [online]. 2022-12-07. Dostupné online.
- ↑ David Olsen. Ranges iterators as inputs to non-Ranges algorithms [online]. 2022-04-22. Dostupné online.
- ↑ Michał Dominiak. Relaxing range adaptors to allow for move only types [online]. 2022-07-13. Dostupné online.
- ↑ Ville Voutilainen. Making multi-param constructors of views explicit [online]. 2022-11-12. Dostupné online.
- ↑ JeanHeyd Meneide; Todor Buyukliev; Isabella Muerte. out_ptr - a scalable output pointer abstraction [online]. 2021-04-15. Dostupné online.
- ↑ Jonathan Wakely; Chris Kennelly. Providing size feedback in the Allocator interface [online]. 2021-01-22. Dostupné online.
- ↑ Timur Doumler; Richard Smith. Explicit lifetime management [online]. 2022-07-15. Dostupné online.
- ↑ Pablo Halpern. Disallow User Specialization of allocator_traits [online]. 2023-02-08. Dostupné online.
- ↑ Wim Leflere; Paul Fee. string contains function [online]. 2020-06-13. Dostupné online.
- ↑ Yuriy Chernyshov. A Proposal to Prohibit std::basic_string and std::basic_string_view construction from nullptr. [online]. 2020-09-06. Dostupné online.
- ↑ Corentin Jabot. Range constructor forstd::string_view 2: Constrain Harder [online]. 2021-03-17. Dostupné online.
- ↑ Chris Kennelly; Mark Zeren. basic_string::resize_and_overwrite [online]. 2021-09-14. Dostupné online.
- ↑ std::string::substr() && [online]. Dostupné online.
- ↑ Formatting Ranges [online]. 2022-05-16. Dostupné online.
- ↑ Barry Revzin. Improve default container formatting [online]. 2022-07-15. Dostupné online.
- ↑ Corentin Jabot; Victor Zverovich. Formatting thread::id and stacktrace [online]. 2023-02-09. Dostupné online.
- ↑ Alexey Gorgurov; Antony Polukhin. A Proposal to add stacktrace library [online]. 2020-09-16. Dostupné online.
- ↑ Formatted output [online]. Dostupné online.
- ↑  s funkcemi pro proudy používající řetězce ze std::spanPeter Sommerlad. A strstream replacement using span<chart>as buffer [online]. 2021-02-26. Dostupné online.
- ↑ Support exclusive mode for fstreams [online]. Dostupné online.
- ↑ Bryce Adelstein Lelbach. Printing volatile Pointers [online]. 2021-09-25. Dostupné online.
- ↑ MDSPAN [online]. 2022-07-13. Dostupné online.
- ↑ index_type & size_type in mdspan [online]. Dostupné online.
- ↑  mdspan: renamepointerandcontiguous[online]. 2022-06-15. Dostupné online.
- ↑  Add the missingemptytomdspan[online]. Dostupné online.
- ↑ A Standard flat_map [online]. Dostupné online.
- ↑ A Standard flat_set [online]. Dostupné online.
- ↑ Arthur O'Dwyer; Mike Spertus. Stop overconstraining allocators in container deduction guides [online]. 2021-03-14. Dostupné online.
- ↑ Konstantin Boyarinov; Sergey Vinogradov; Ruslan Arutyunyan. Heterogeneous erasure overloads for associative containers [online]. 2020-12-15. Dostupné online.
- ↑ Corentin Jabot. Iterators pair constructors for stack and queue [online]. 2021-03-05. Dostupné online.
- ↑ Nevin Liber. Require span & basic_string_view to be TriviallyCopyable [online]. 2021-03-19. Dostupné online.
- ↑ Hans-J. Boehm. P0943R6: Support C atomics in C++ [online]. 2020-10-23. Dostupné online.
- ↑ Steve Downey; Zach Laine; Tom Honermann; Peter Bindels; Jens Maurer. C++ Identifier Syntax using Unicode Standard Annex 31 [online]. 2021-04-12. Dostupné online.
- ↑ Erich Keane. Allow Duplicate Attributes [online]. 2020-07-02. Dostupné online.
- ↑ Barry Revzin. Change scope of lambda trailing-return-type [online]. 2021-09-14. Dostupné online.
- ↑ The Equality Operator You Are Looking For [online]. 2022-01-13. Dostupné online.
- ↑ De-deprecating volatile compound operations [online]. Dostupné online.
- ↑ Core Language Working Group NB comment resolutions for the November, 2022 meeting : 2654. Un-deprecation of compound volatile assignments [online]. Dostupné online.
- ↑  char8_tCompatibility and Portability Fix [online]. 2022-06-17. Dostupné online.
- ↑  Relax requirements onwchar_tto match existing practices [online]. 2022-07-15. Dostupné online.
- ↑ Using unknown pointers and references in constant expressions [online]. 2022-04-08. Dostupné online.
- ↑  constevalneeds to propagate up [online]. 2022-11-11. Dostupné online.
- ↑ Barry Revzin. Conditionally borrowed ranges [online]. 2020-02-19. Dostupné online.
- ↑ Tim Song. Repairing input range adaptors and counted_iterator [online]. 2021-01-12. Dostupné online.
- ↑ Tim Song. join_view should join all views of ranges [online]. 2021-05-06. Dostupné online.
- ↑ Barry Revzin. Superior String Splitting [online]. 2021-03-05. Dostupné online.
- ↑ Barry Revzin. Views should not be required to be default constructible [online]. 2021-05-14. Dostupné online.
- ↑ Barry Revzin; Tim Song. What is a view? [online]. 2021-08-15. Dostupné online.
- ↑ Nicolai Josuttis. Fix istream_view [online]. 2021-09-24. Dostupné online.
- ↑ Barry Revzin. Expose std::basic-format-string<chart, Args...> [online]. 2022-01-18. Dostupné online.
- ↑ Victor Zverovich. std::format improvements [online]. 2021-02-05. Dostupné online.
- ↑ Victor Zverovich; Corentin Jabot. Fixing locale handling in chrono formatters [online]. 2021-09-11. Dostupné online.
- ↑ Corentin Jabot. format's width estimation is too approximate and not forward compatible [online]. 2022-12-02. Dostupné online.
- ↑ Tom Honermann. std::format() fill character allowances [online]. 2023-02-08. Dostupné online.
- ↑ Victor Zverovich. Add support for std::generator-like types to std::format [online]. 2021-09-24. Dostupné online.
- ↑ Barry Revzin. Missing constexpr in std::optional and std::variant [online]. 2021-02-11. Dostupné online.
- ↑ Barry Revzin. Inheriting from std::variant [online]. 2020-10-30. Dostupné online.
- ↑ [cit. 2024-12-14]. Dostupné online.
- ↑ [cit. 2024-12-14]. Dostupné online.
- ↑ Dostupné online.
- ↑ MAURER, Jens. Mixed string literal concatenation [online]. 2021-04-12. Dostupné online.
- ↑ Remove non-encodable wide character literals and multicharacter wide character literals [online]. Dostupné online.
- ↑ CJ Johnson. Deprecate std::aligned_storage and std::aligned_union [online]. 2021-11-22. Dostupné online.
- ↑ Matthias Kretz. Deprecate numeric_limits::has_denorm [online]. 2022-11-08. Dostupné online.
- ↑ Programming Languages — Technical specification for C++ extensions for concurrency 2 [online]. Dostupné online.
- ↑ C++ Support in Clang [online]. Dostupné online.
- ↑ C++ Standards Support in GCC - GNU Project [online]. Dostupné online.
- ↑ RANNS, Nina. WG21 2020-11 Virtual Meeting: Minutes of Meeting [online]. 2020-11-19. Dostupné online.
- ↑ RANNS, Nina. WG21 2021-02 Virtual Meeting: Minutes of Meeting [online]. 2021-02-22. Dostupné online.
- ↑ Alexey Dmitriev; Howard Hinnant. Relax Requirements for time_point::clock [online]. 2020-10-22. Dostupné online.
- ↑ Tim Song. Locks lock lockables [online]. 2020-11-13. Dostupné online.
- ↑ RANNS, Nina. WG21 2021-06 Virtual Meeting Minutes of Meeting [online]. 2021-06-07. Dostupné online.
- ↑ RANNS, Nina. WG21 2021-10 Virtual Meeting Minutes of Meeting [online]. 2021-10-04. Dostupné online.
- ↑ GCC 12 Adds Support For New #elifdef #elifndef Directives [online]. phoronix, 2021-05-12. Dostupné v archivu pořízeném z originálu dne 2022-12-27.
- ↑ Steve Downey. Add a pmr alias for std::stacktrace [online]. 2021-06-14. Dostupné online.
- ↑ Giuseppe D'Angelo. Add a conditional noexcept specification to std::exchange [online]. 2021-06-28. Dostupné online.
- ↑ Tim Song. Cleaning up integer-class types [online]. 2021-08-06. Dostupné online.
- ↑ Thomas Köppe. Clarifying the status of the "C headers" [online]. 2021-06-11. Dostupné online.
- ↑ RANNS, Nina. WG21 2022-02 Virtual Meeting: Minutes of Meeting [online]. 2022-02-07. Dostupné online.
- ↑ RANNS, Nina. WG21 2022-07 Virtual Meeting: Minutes of Meeting [online]. 2022-08-09. Dostupné online.
- ↑ RANNS, Nina. WG21 2022-11 Hybrid Meeting: Minutes of Meeting [online]. 2022-12-05. Dostupné online.
- ↑ Victor Zverovich. Should the output of std::print to a terminal be synchronized with the underlying stream? [online]. 2022-11-08. Dostupné online.
- ↑ RANNS, Nina. WG21 2023-02 Hybrid Meeting: Minutes of Meeting [online]. 2023-03-06. Dostupné online.
- ↑ Corentin Jabot. Referencing The Unicode Standard [online]. 2023-02-09. Dostupné online.
- ↑ Tim Song. Stashing stashing iterators for proper flattening [online]. 2023-01-31 [cit. 2024-12-14]. Dostupné online.
