C++20
C++20 je verze normy ISO/IEC 14882 programovacího jazyka C++ z roku 2020, která nahradila předchozí verzi C++17, a později byla sama nahrazena verzí C++23.[1] Technicky byla dopracována[2] skupinou WG21 na zasedání v Praze v únoru 2020,[3] její závěrečná pracovní verze byla ohlášena v březnu 2020,[4] schválena byla 4. září 2020[5][6] a publikována v prosinci 2020.[7]
Vlastnosti
[editovat | editovat zdroj]C++20 přidává více nových velkých vlastností než C++14 nebo C++17.[8] Obsahuje mimo jiné následující změny:[9]
Jazyk
[editovat | editovat zdroj]- koncepty,[10] a jejich stručná syntaxe[11]
- moduly[12]
- pojmenované inicializátory (anglicky designated initializers)[13] (založené na vlastnosti z C99 a běžném rozšíření g++)
[=, this]
jako lambda capture[14]- šablony se seznamem parametrů pro lambda funkce[15]
- třícestné porovnání s použitím
operator <=>
nazývaného podle svého vzhledu „kosmická loď“ - inicializace další proměnné ve
for
cyklu přes rozsah[16] - lambda funkce v neevaluovaných kontextech[17][18]
- implicitní konstruovatelné a přiřaditelné bezstavové lambda funkce[17][19]
- umožnění pack rozšíření v lambda init-capture[17][20]
- typy třídy v netypových parametrech šablony; umožnění řetězcových literálů na místě parametrů šablon[21]
- odstranění potřeby
typename
v určitých místech[22] - nové standardní atributy
[[no_unique_address]]
,[23][[likely]]
a[[unlikely]]
[24] - podmíněný modifikátor
explicit
závislý na logickém výrazu[25] - rozšířené
constexpr
na virtuální funkce,[26]union
,[27]try
acatch
,[28]dynamic_cast
atypeid
,[29]std::pointer_traits
[30] - bezprostřední funkce používající nové klíčové slovo
consteval
[31] - celá čísla se znaménkem jsou nyní definována tak, že jsou reprezentována pomocí dvojkového doplňku (přetečení při výpočtu s celými čísly se znaménkem zůstává nedefinovaným chováním)[32]
- upravený paměťový model[33]
- různé vylepšení strukturovaných vazeb (interakce s lambda captures, třídy paměti
static
athread_local
)[34][35] - korutiny[36]
using
naenum
výčty s rozsahem platnosti[37]- klíčové slovo
constinit
[38]
Knihovna
[editovat | editovat zdroj]- rozsahy (podle One Ranges Proposal)[39]
std::make_shared
astd::allocate_shared
pro pole[40]- atomické chytré ukazatele (např.
std::atomic<shared_ptr<T>>
astd::atomic<weak_ptr<T>>
)[41] std::to_address
pro konverzi ukazatelů na syrový ukazatel[42]- doplňky pro práci s kalendářem a časovými zónami v
<chrono>
[43] std::span
poskytující pohled na souvislá pole (podobnýstd::string_view
s možností, abyspan
modifikoval referencovanou posloupnost)[44]std::erase
astd::erase_if
pro zjednodušení rušení prvků ve většině standardních kontejnerů[45]- hlavičkový soubor
<version>
[46] std::bit_cast<>
pro změnu typové reprezentace objektu, méně upovídané nežmemcpy()
a schopnější využívat vnitřní vlastnosti překladače[47]- makra pro testování rysů (features)[48]
- doplnění chybějících
constexpr
na různých místech v knihovně[49] - vytváření chytrých ukazatelů s implicitní inicializací[50]
- metoda
contains
pro asociativní kontejnery[51] - bitové operace, např. pro počet úvodních nul nebo jedniček,[52] a log2 operace[53][54][55]
std::bind_front
[56]
Nová a změněná klíčová slova
[editovat | editovat zdroj]Bylo přidáno mnoho nových klíčových slov (a nový operátor „kosmické lodi“, operator <=>
), např. concept
, constinit
,[38] consteval
, co_await
, co_return
, co_yield
, requires
(a změněn význam slova export
), a char8_t
(pro podporu UTF-8).[57] explicit
může od C++20 používat výraz.[58] Většina použití klíčového slova volatile
je nedoporučovaná.[59]
Kromě nových klíčových slov byly zavedeny identifikátory se speciálním významem, včetně import
a module
.
Nové atributy v C++20:
[[likely]]
, [[unlikely]]
a [[no_unique_address]]
[60]
Odstraněné a nedoporučované vlastnosti
[editovat | editovat zdroj]Odstraněné vlastnosti:[61]
- Hlavičkové soubory převzaté z jazyka C
<ccomplex>
,<ciso646>
,<cstdalign>
,<cstdbool>
a<ctgmath>
byly odstraněny, protože v C++ nemají smysl. (Odpovídající hlavičkové soubory<*.h>
zůstávají pro kompatibilitu s jazykem C.) - Použití
throw()
jako specifikace výjimky bylo odstraněno. - Některé dříve nedoporučované vlastnosti knihovny byly odstraněny, mj.
std::uncaught_exception
,std::raw_storage_iterator
,std::is_literal_type
,std::is_literal_type_v
,std::result_of
astd::result_of_t
.
Nedoporučované vlastnosti:
- Použití operátoru čárka v indexových výrazech je nyní nedoporučované[62]
- (Většina použití)
volatile
bylo nedoporučovaná[59]
Publikováno jako Technické specifikace (TS)
[editovat | editovat zdroj]Odloženo do pozdějších verzí
[editovat | editovat zdroj]- Byla založena nová studijní skupina (SG21) pro práci na novém návrhu kontraktů[66]
- Reflexe[67][68]
- Metaclasses[69]
- Exekutory[70]
- Síťová rozšíření,[71][72] včetně asynchronních operací, základní V/V služby, časovače, buffery a proudy pracující s buffery, sokety a internetovými protokoly (blokované exekutory)
- Vlastnosti[73]
- Rozšířena futures[74]
Podpora překladačů
[editovat | editovat zdroj]Plný podpora[75]
- Visual Studio 2019 podporuje od verze 16.10.0 všechny vlastnosti C++20 při použití volby
/std:c++latest
.[76] Volba/std:c++20
povolující režim C++20 byla přidána ve verzi 16.11.0.[77][78]
Překladač Microsoftu podporuje nejen Windows, ale také Linux, Android a iOS. Pro vývoj v Linuxu však vyžaduje rozšíření „Visual C++ for Linux Development“.[79]
Částečný
- Clang má částečnou podporu C++20, kterou lze povolit volbou
-std=c++20
(od verze 10) nebo-std=c++2a
(do verze 9).[80] - Překladač EDG začal implementovat vlastnosti C++20 ve verzi 5.0 a od verze 6.1 podporuje většinu jazykových vlastností jádra C++20.[81]
- GCC má částečnou, experimentální podporu C++20 od roku 2017[82] ve verzi 8 volba
-std=c++2a
. Stejně jako Clang nahradilo GCC ve verzi 10 tuto volbu volbou-std=c++20
. Existuje také volba pro povolení GNU rozšíření kromě experimentální podpory C++20,-std=gnu++20
.[83]
Historie
[editovat | editovat zdroj]Změny provedené v pracovní verzi C++20 v červenci 2017 (Toronto) zahrnují:[84]
- koncepty (do normy se dostala ořezaná verze; označovaná jako „Concepts Lite“[85])
- pojmenované inicializátory
[=, this]
jako lambda capture- šablony se seznamem parametrů pro lambda funkce
std::make_shared
astd::allocate_shared
pro pole
Změny provedené v pracovní verzi C++20 na podzimním zasedání v listopadu 2017 v Albuquerque zahrnují:[86][87]
- trojcestné porovnání pomocí operátoru „kosmické lodi“
operator <=>
- inicializace další proměnné ve
for
cyklu přes rozsah - lambda funkce v neevaluovaných kontextech
- implicitní konstruovatelné a přiřaditelné bezstavové lambda funkce
- umožnění pack rozšíření v lambda init-capture
- řetězcové literály jako parametry šablon
- atomické chytré ukazatele (např.
std::atomic<shared_ptr<T>>
astd::atomic<weak_ptr<T>>
) std::to_address
pro konvertování ukazatelů na syrový ukazatel
Změny provedené v pracovní verzi C++20 v březnu 2018 v Jacksonville zahrnují:[88]
- odstranění potřeby
typename
v určitých místech - nové standardní atributy
[[no_unique_address]]
,[[likely]]
a[[unlikely]]
- doplňky kalendáře a časových zón v
<chrono>
std::span
umožňuje pohledy na souvislé pole (podobně jakostd::string_view
alespan
může referencovanou posloupnost modifikovat)- hlavičkový soubor
<version>
Změny provedené v pracovní verzi C++20 na letním zasedání v červnu 2018 v Rapperswilu zahrnují:[89]
kontrakty(později odložené do pozdější verze)[90]- makra pro testy rysů
std::bit_cast<>
pro změnu typové reprezentace objektu, méně upovídané nežmemcpy()
a schopnější využívat vnitřní vlastnosti překladače- podmíněné
explicit
, umožňuje explicitní modifikátor závislý na logickém výrazu constexpr
virtuální funkce
Změny provedené v pracovní verzi C++20 na podzimním zasedání v listopadu 2018 (San Diego) zahrnují:[91]
- rozsahy (The One Ranges Proposal)
- stručná syntaxe konceptů
constexpr
union
,try
acatch
,dynamic_cast
,typeid
astd::pointer_traits
.- přidání různých
constexpr
do knihovny - bezprostřední funkce používající nové klíčové slovo
consteval
- Celá čísla se znaménkem jsou nyní definována tak, že jsou reprezentována pomocí dvojkového doplňku (přetečení při výpočtu s celými čísly se znaménkem zůstává nedefinovaným chováním)
zjemnění nástrojů pro kontrakty (řízení přístupu v podmínkách kontraktu)[92] (viz seznam vlastností odložených do pozdějších verzí)- upravený paměťový model
- vytvoření chytrých ukazatelů s implicitní inicializací
Změny provedené v pracovní verzi C++20 při zimním zasedání v únoru 2019 (Kona) zahrnují:[93][94][95]
- korutiny
- moduly
- různá vylepšení strukturovaných vazeb (interakce s lambda captures, třídy paměti
static
athread_local
)
Změny provedené v pracovní verzi C++20 na letním zasedání v červenci 2019 (Kolín nad Rýnem) zahrnují:[96][97][98][99]
- kontrakty byly odstraněny (viz seznam vlastností odložených do pozdějších verzí)[100]
- použití operátoru čárky ve výrazech v indexu je nedoporučované[62]
- doplňky
constexpr
(triviální implicitní inicializace,[101] neevaluovaná inline montáž[102]) using
naenum
výčty s rozsahem platnosti[37]- různé změny operátoru
<=>
[103][104] - DR: menší změny modulů[105]
- klíčové slovo
constinit
- změny v konceptech (odstranění
-> Type
požadavků na návratový typ[106]) - většina použití
volatile
je nedoporučovaná[59] - DR:
[[nodiscard]]
efekty na konstruktory[107] - Nové koncepty ve standardní knihovně nebudou používat PascalCase (ale
standard_case
, jako zbytek standardní knihovny)[108] - formátování textu (
std::format
, [109][110]chrono
integrace,[111] oprava mezních případů vprintf
[112]) - bitové operace[52]
constexpr INVOKE
[113]- matematické konstanty[114]
- doplňky konzistence k atomic (
std::atomic_ref<T>
,[115]std::atomic<std::shared_ptr<T>>
[116]) - do standardní knihovny přidán operátor
<=>
[117] - hlavičkové jednotky pro standardní knihovna[118]
- synchronizační nástroje[119] (sloučeny z: Efficient atomic waiting and semaphores,[120] latches and bariers,[121] Zlepšení
atomic_flag
,[122] Don't Make C++ Unimplementable On Small CPUs[[123]) std::source_location
[124]constexpr
kontejnery (std::string
,[125]std::vector
[126])std::stop_token
a spojování vláken (std::jthread
)[127]
Změny uplatněné při řešení připomínek NB na podzimním zasedání v listopadu 2019 (Belfast) zahrnují:[128][129][130][131]
- Typy tříd v parametrech netypové šablony (Non-Type Template Parameters, NTTP): Omezení, že není povolen žádný uživatelem definovaný
operator==
bylo odstraněno, protože význam rovnosti argumentů šablony byl oddělen odoperator==
.[132] Lze použít také pro prvky pole v NTTP typu třídy. - Typy s pohyblivou řádovou čárkou,[133] ukazatele a reference a sjednocení a třídy podobné sjednocení (typy tříd obsahující anonymní sjednocení) jsou nyní možné jako NTTP.
- Identita funkcí nyní zahrnuje také koncové klauze requires (P1971)
- Omezené funkce, které nejsou šablonami, byly odstraněny
<compare>
je nyní dostupné v samostatné implementaci[134]- typedef
std::span
byl změněn zindex_type
nasize_type
, aby byl konzistentní se zbytkem standardní knihovny[135] - Konceptové rysy byly přejmenovány, aby odpovídaly přejmenování konceptů, jak bylo schváleno na zasedání v Kolíně nad Rýnem
- Několik oprav a doplňků rozsahů (P1456R1: pohledy prouze pro přesun,[136] P1391R4: konstruktor rozsahu pro
std::string_view
(konstruktor z dvojice iterátorů znaků),[137] P1394R4: konstruktor rozsahu prostd::span<ref>
,[138] P1870R1: forwardování rozsahu<T> je příliš křehké[139]) - Inicializace
std::atomic<T>
byla změněna, aby fungovala s implicitní inicializací a seznamovou inicializací,[140]std::latch
astd::barrier
mohou nyní zjistit maximální počet vláken, které implementace podporuje pomocí nové členské funkcemax()
std::weak_equality
astd::strong_equality
byly odstraněny, protože nejsou vůbec používány- Algoritmům v
<numeric>
bylo doplněnoconstexpr
- Chybějící makra pro test rysů pro vlastnosti nové nebo změněné v C++20 byla doplněna[141]
Odkazy
[editovat | editovat zdroj]Reference
[editovat | editovat zdroj]V tomto článku byl použit překlad textu z článku C++20 na anglické Wikipedii.
- ↑ The Standard [online]. isocpp.org [cit. 2020-09-07]. Dostupné v archivu pořízeném z originálu dne 2020-09-19.
- ↑ SUTTER, Herb. P1000R3: C++ IS schedule [online]. 2019-10-01 [cit. 2020-02-13]. Dostupné v archivu pořízeném z originálu dne 2019-11-14.
- ↑ DUSÍKOVÁ, Hana. N4817: 2020 Prague Meeting Invitation and Information [online]. 2019-11-06 [cit. 2020-02-13]. Dostupné v archivu pořízeném z originálu dne 2019-12-29.
- ↑ N4859 Editors' Report -- Programming Languages -- C++ [online]. [cit. 2023-09-22]. Dostupné v archivu pořízeném z originálu dne 2022-12-09.
- ↑ Current Status [online]. isocpp.org [cit. 2020-09-07]. Dostupné v archivu pořízeném z originálu dne 2020-09-08.
- ↑ C++20 Approved -- Herb Sutter [online]. isocpp.org [cit. 2020-09-08]. Dostupné v archivu pořízeném z originálu dne 2020-09-11.
- ↑ ISO/IEC 14882:2020 [online]. [cit. 2020-12-16]. Dostupné v archivu pořízeném z originálu dne 2020-12-16.
- ↑ Why does the C++ standard ship every three years? [online]. 2019-07-13 [cit. 2019-07-19]. Dostupné v archivu pořízeném z originálu dne 2019-07-13.
- ↑ P0592R0: To boldly suggest an overall plan for C++20 [online]. [cit. 2017-05-06]. Dostupné v archivu pořízeném z originálu dne 2017-03-08.
- ↑ P0606R0: Concepts Are Ready [online]. [cit. 2017-05-06]. Dostupné v archivu pořízeném z originálu dne 2017-03-28.
- ↑ P1141R1 - Yet another approach for constrained declarations [online]. [cit. 2018-11-11]. Dostupné v archivu pořízeném z originálu dne 2018-11-11.
- ↑ N4720: Working Draft, Extensions to C++ for Modules [online]. [cit. 2019-04-30]. Dostupné v archivu pořízeném z originálu dne 2019-04-30.
- ↑ Tim Shen; Richard Smith. Designated Initialization Wording [online]. [cit. 2017-07-16]. Dostupné v archivu pořízeném z originálu dne 2017-10-15.
- ↑ Thomas Köppe. Allow lambda capture [=, this] [online]. [cit. 2017-07-16]. Dostupné v archivu pořízeném z originálu dne 2019-02-09.
- ↑ Familiar template syntax for generic lambdas [online]. [cit. 2017-07-16]. Dostupné v archivu pořízeném z originálu dne 2018-11-21.
- ↑ Range-based for statements with initializer [online]. [cit. 2019-10-30]. Dostupné v archivu pořízeném z originálu dne 2017-04-06.
- ↑ a b c Trip Report: C++ Standards Meeting in Albuquerque, November 2017. botondballo.wordpress.com. 2017-11-20. Dostupné v archivu pořízeném z originálu dne 2017-12-11. (anglicky)
- ↑ Wording for lambdas in unevaluated contexts [online]. [cit. 2017-12-11]. Dostupné v archivu pořízeném z originálu dne 2017-12-12.
- ↑ Default constructible and assignable stateless lambdas [online]. [cit. 2017-12-11]. Dostupné v archivu pořízeném z originálu dne 2017-12-12.
- ↑ Pack expansion in lambda init-capture [online]. www.open-std.org [cit. 2017-12-11]. Dostupné v archivu pořízeném z originálu dne 2020-02-14.
- ↑ Class Types in Non-Type Template Parameters [online]. www.open-std.org, 2018-06-06 [cit. 2022-02-18]. Dostupné v archivu pořízeném z originálu dne 2022-02-05.
- ↑ Nina Ranns; Daveed Vandevoorde. Down with typename! [online]. [cit. 2019-05-18]. Dostupné v archivu pořízeném z originálu dne 2018-04-22.
- ↑ Language support for empty objects [online]. [cit. 2019-08-04]. Dostupné v archivu pořízeném z originálu dne 2018-04-17.
- ↑ Proposed wording for likely and unlikely attributes (Revision 5) [online]. [cit. 2019-05-18]. Dostupné v archivu pořízeném z originálu dne 2018-05-13.
- ↑ explicit(bool) [online]. www.open-std.org [cit. 2018-11-13]. Dostupné v archivu pořízeném z originálu dne 2018-07-20.
- ↑ Allowing Virtual Function Calls in Constant Expressions [online]. www.open-std.org [cit. 2019-03-11]. Dostupné v archivu pořízeném z originálu dne 2018-06-11.
- ↑ P1330R0 - Changing the active member of a union inside constexpr [online]. [cit. 2019-07-26]. Dostupné v archivu pořízeném z originálu dne 2019-07-26.
- ↑ P1002R0 - Try-catch blocks in constexpr functions [online]. [cit. 2018-11-11]. Dostupné v archivu pořízeném z originálu dne 2018-11-11.
- ↑ P1327R0 - Allowing dynamic_cast, polymorphic typeid in Constant Expressions [online]. [cit. 2019-07-26]. Dostupné v archivu pořízeném z originálu dne 2019-07-26.
- ↑ P1006R1 - Constexpr in std::pointer_traits [online]. [cit. 2018-11-11]. Dostupné v archivu pořízeném z originálu dne 2018-11-11.
- ↑ P1073R2 - Immediate functions [online]. [cit. 2018-11-11]. Dostupné v archivu pořízeném z originálu dne 2018-10-26.
- ↑ P1236R0: Alternative Wording for P0907R4 Signed Integers are Two's Complement [online]. [cit. 2018-11-11]. Dostupné v archivu pořízeném z originálu dne 2018-11-11.
- ↑ P0668R4: Revising the C++ memory model [online]. [cit. 2018-11-11]. Dostupné v archivu pořízeném z originálu dne 2018-11-11.
- ↑ P1091R1: Extending structured bindings to be more like variable declarations [online]. www.open-std.org [cit. 2019-02-24]. Dostupné v archivu pořízeném z originálu dne 2019-01-26.
- ↑ P1091R2: Extending structured bindings to be more like variable declarations [online]. www.open-std.org [cit. 2019-02-24]. Dostupné v archivu pořízeném z originálu dne 2019-01-26.
- ↑ N4649: Working Draft, Technical Specification for C++ Extensions for Coroutines [online]. [cit. 2017-05-06]. Dostupné v archivu pořízeném z originálu dne 2017-05-16.
- ↑ a b P1099R5: Using Enum [online]. www.open-std.org, 2019-07-20 [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2019-08-20.
- ↑ a b P1143R2: Adding the constinit keyword [online]. www.open-std.org, 2019-07-20 [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2019-08-20.
- ↑ P0896R3 [online]. [cit. 2018-11-11]. Dostupné v archivu pořízeném z originálu dne 2018-11-11.
- ↑ Extending make_shared to Support Arrays [online]. [cit. 2020-02-12]. Dostupné v archivu pořízeném z originálu dne 2017-09-06.
- ↑ MEREDITH, Alisdair; SUTTER, Herb. Revising atomic_shared_ptr for C++20 [online]. ISO [cit. 2018-12-27]. Dostupné v archivu pořízeném z originálu dne 2018-01-04.
- ↑ Utility to convert a pointer to a raw pointer [online]. [cit. 2020-02-12]. Dostupné v archivu pořízeném z originálu dne 2018-02-20.
- ↑ Howard E. Hinnant; Tomasz Kamiński. Extending<chrono>to Calendars and Time Zones [online]. [cit. 2019-05-18]. Dostupné v archivu pořízeném z originálu dne 2018-05-13.
- ↑ Neil MacIntosh; Stephan T. Lavavej. span: bounds-safe views for sequences of objects [online]. [cit. 2019-05-18]. Dostupné v archivu pořízeném z originálu dne 2019-05-18.
- ↑ Alisdair Meredith; Stephan T. Lavavej. Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20 [online]. 2018-10-04 [cit. 2020-12-14]. Dostupné v archivu pořízeném z originálu dne 2021-03-08.
- ↑ Alan Talbot. <version> [online]. [cit. 2019-05-18]. Dostupné v archivu pořízeném z originálu dne 2019-05-18.
- ↑ Bit-casting object representations [online]. www.open-std.org [cit. 2018-11-10]. Dostupné v archivu pořízeném z originálu dne 2018-08-18.
- ↑ Integrating feature-test macros into the C++ WD (rev. 2) [online]. www.open-std.org [cit. 2018-11-10]. Dostupné v archivu pořízeném z originálu dne 2018-07-20.
- ↑ P1032R1 - Misc constexpr bits [online]. [cit. 2018-11-11]. Dostupné v archivu pořízeném z originálu dne 2018-10-26.
- ↑ Smart pointer creation with default initialization [online]. [cit. 2020-02-12]. Dostupné v archivu pořízeném z originálu dne 2019-01-26.
- ↑ Mikhail Maltsev. P0458R2: Checking for Existence of an Element in Associative Containers [online]. [cit. 2022-01-02]. Dostupné v archivu pořízeném z originálu dne 2022-01-16.
- ↑ a b P0553R4: Bit operations [online]. www.open-std.org, 2019-07-20 [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2019-07-20.
- ↑ P0556R3: Integral power-of-2 operations [online]. www.open-std.org, 2018-06-06 [cit. 2020-08-08]. Dostupné v archivu pořízeném z originálu dne 2019-06-26.
- ↑ P1355R2 Exposing a narrow contract for ceil2 [online]. www.open-std.org, 2019-06-11 [cit. 2020-08-08]. Dostupné v archivu pořízeném z originálu dne 2019-08-05.
- ↑ On the names of low-level bit manipulation functions [online]. www.open-std.org, 2020-02-11 [cit. 2020-08-08]. Dostupné v archivu pořízeném z originálu dne 2020-03-24.
- ↑ Tomasz Kamiński. Simplified partial function application [online]. 2017-11-09 [cit. 2020-11-08]. Dostupné v archivu pořízeném z originálu dne 2020-09-28.
- ↑ C++ keywords - cppreference.com [online]. en.cppreference.com [cit. 2019-08-04]. Dostupné v archivu pořízeném z originálu dne 2012-03-19.
- ↑ explicit specifier - cppreference.com [online]. en.cppreference.com [cit. 2019-08-04]. Dostupné v archivu pořízeném z originálu dne 2012-02-21.
- ↑ a b c P1152R4: Deprecating volatile [online]. www.open-std.org, 2019-07-20 [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2019-06-23.
- ↑ attribute specifier sequence(since C++11) - cppreference.com [online]. en.cppreference.com [cit. 2019-08-04]. Dostupné v archivu pořízeném z originálu dne 2012-07-05.
- ↑ Working Draft, Standard for Programming Language C++ (Annex C, §C.1) [online]. [cit. 2020-11-18]. Dostupné v archivu pořízeném z originálu dne 2020-04-27.
- ↑ a b P1161R2: Deprecate uses of the comma operator in subscripting expressions [online]. www.open-std.org [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2019-07-20.
- ↑ C++ Extensions for Parallelism Version 2 [online]. [cit. 2019-07-09]. Dostupné v archivu pořízeném z originálu dne 2022-09-21.
- ↑ C++ Extensions for Reflection [online]. [cit. 2019-07-09]. Dostupné v archivu pořízeném z originálu dne 2022-09-21.
- ↑ C++ Extensions for Networking [online]. [cit. 2019-07-09]. Dostupné v archivu pořízeném z originálu dne 2022-09-21.
- ↑ SUTTER, Herb. Trip report: Summer ISO C++ standards meeting (Cologne) [online]. Sutter's Mill, 2019-07-20 [cit. 2019-07-21]. Dostupné v archivu pořízeném z originálu dne 2020-04-17. (anglicky)
- ↑ Reflections on the reflection proposals - Meeting C++ [online]. meetingcpp.com [cit. 2017-06-30]. Dostupné v archivu pořízeném z originálu dne 2017-06-23. (anglicky)
- ↑ Static reflection [online]. www.open-std.org [cit. 2018-11-10]. Dostupné v archivu pořízeném z originálu dne 2020-02-22.
- ↑ Herb Sutter. Metaclasses [online]. [cit. 2017-07-23]. Dostupné v archivu pořízeném z originálu dne 2020-11-11.
- ↑ A Unified Executors Proposal for C++ [online]. www.open-std.org [cit. 2019-02-24]. Dostupné v archivu pořízeném z originálu dne 2020-02-20.
- ↑ N4771: Working Draft, C++ Extensions for Networking [online]. [cit. 2019-03-23]. Dostupné v archivu pořízeném z originálu dne 2020-04-19.
- ↑ ISO/IEC TS 19216:2018 Programming Languages -- C++ Extensions for Networking [online]. [cit. 2018-12-17]. Dostupné v archivu pořízeném z originálu dne 2019-01-15.
- ↑ A General Property Customization Mechanism [online]. www.open-std.org [cit. 2019-02-24]. Dostupné v archivu pořízeném z originálu dne 2020-01-19.
- ↑ A Unified Futures Proposal for C++ [online]. [cit. 2019-07-08]. Dostupné v archivu pořízeném z originálu dne 2022-09-21.
- ↑ C++ compiler support - cppreference.com [online]. en.cppreference.com [cit. 2022-08-12]. Dostupné v archivu pořízeném z originálu dne 2022-08-08.
- ↑ JAWIDDIS. Visual Studio 2019 version 16.10 Release Notes [online]. docs.microsoft.com [cit. 2021-07-13]. Dostupné v archivu pořízeném z originálu dne 2021-08-11. (anglicky)
- ↑ MSVC C++20 and the /std:c++20 Switch [online]. docs.microsoft.com, 2021-09-02 [cit. 2021-09-07]. Dostupné v archivu pořízeném z originálu dne 2021-09-06. (anglicky)
- ↑ Visual Studio documentation for Microsoft C++. [s.l.]: Microsoft Docs, 2022-04-19. Dostupné v archivu pořízeném z originálu dne 2022-04-19.
- ↑ Visual Studio 2019 Compatibility [online]. docs.microsoft.com [cit. 2022-08-12]. Dostupné v archivu pořízeném z originálu dne 2020-06-03. (anglicky)
- ↑ Clang - C++ Programming Language Status [online]. clang.llvm.org [cit. 2022-04-19]. Dostupné v archivu pořízeném z originálu dne 2013-07-04.
- ↑ C++ compiler support - cppreference.com [online]. en.cppreference.com [cit. 2020-10-10]. Dostupné v archivu pořízeném z originálu dne 2020-10-03.
- ↑ Andrew Sutton - [PATCH] Add -std=c++2a [online]. gcc.gnu.org [cit. 2022-04-19]. Dostupné v archivu pořízeném z originálu dne 2021-03-01.
- ↑ C++ Standards Support in GCC - GNU Project [online]. gcc.gnu.org [cit. 2022-04-19]. Dostupné v archivu pořízeném z originálu dne 2022-04-20.
- ↑ Herb Sutter. Trip report: Summer ISO C++ standards meeting (Toronto) [online]. 2017-07-15 [cit. 2017-07-16]. Dostupné v archivu pořízeném z originálu dne 2017-08-06.
- ↑ Andrew Sutton; Bjarne Stroustrup. Concepts Lite: Constraining Templates with Predicates [online]. isocpp.org, 2013-02-24 [cit. 2021-01-13]. Dostupné v archivu pořízeném z originálu dne 2021-01-16.
- ↑ Herb Sutter. Trip report: Fall ISO C++ standards meeting (Albuquerque) [online]. 2017-11-11 [cit. 2017-12-04]. Dostupné v archivu pořízeném z originálu dne 2019-02-13.
- ↑ SMITH, Richard; PERCHIK, Dawn; KÖPPE, Thomas. N4714 Editors' Report -- Programming Languages -- C++ [online]. GitHub [cit. 2018-12-27]. Dostupné v archivu pořízeném z originálu dne 2022-09-21.
- ↑ Botond Ballo. Trip Report: C++ Standards Meeting in Jacksonville, March 2018 [online]. 2018-03-28 [cit. 2019-05-18]. Dostupné v archivu pořízeném z originálu dne 2019-05-18.
- ↑ Herb Sutter. Trip report: Summer ISO C++ standards meeting (Rapperswil) [online]. 2018-07-02 [cit. 2018-11-10]. Dostupné v archivu pořízeném z originálu dne 2020-05-23.
- ↑ Support for contract based programming in C++ [online]. www.open-std.org [cit. 2018-11-10]. Dostupné v archivu pořízeném z originálu dne 2020-01-15.
- ↑ fall meeting in November 2018
- ↑ P1289R0 - Access control in contract conditions [online]. [cit. 2018-11-11]. Dostupné v archivu pořízeném z originálu dne 2018-11-11.
- ↑ winter meeting in February 2019
- ↑ r/cpp - 2019-02 Kona ISO C++ Committee Trip Report (C++20 design is complete; Modules in C++20; Coroutines in C++20; Reflection TS v1 published; work begins on a C++ Ecosystem Technical Report) [online]. reddit, 2019-02-23 [cit. 2019-02-24]. Dostupné v archivu pořízeném z originálu dne 2019-02-23. (anglicky)
- ↑ Trip report: Winter ISO C++ standards meeting (Kona) [online]. Sutter's Mill, 2019-02-23 [cit. 2019-02-24]. Dostupné v archivu pořízeném z originálu dne 2019-02-24. (anglicky)
- ↑ 2019 Cologne Meeting Invitation and Information [online]. Dostupné online.
- ↑ r/cpp - 2019-07 Cologne ISO C++ Committee Trip Report — 🚀 The C++20 Eagle has Landed 🚀 (C++20 Committee Draft shipped; Contracts Moved From C++20 to a Study Group; 'std::format' in C++20; C++20 Synchronization Library) [online]. reddit, 2019-07-20 [cit. 2019-09-15]. Dostupné v archivu pořízeném z originálu dne 2020-04-20. (anglicky)
- ↑ Botond Ballo. Trip Report: C++ Standards Meeting in Cologne, July 2019 [online]. 2019-07-26 [cit. 2019-08-05]. Dostupné v archivu pořízeném z originálu dne 2020-02-26.
- ↑ SUTTER, Herb. Trip report: Summer ISO C++ standards meeting (Cologne) [online]. 2019-07-20 [cit. 2019-07-21]. Dostupné v archivu pořízeném z originálu dne 2020-04-17.
- ↑ JOSUTTIS, Nicolai. P1823R0: Remove Contracts from C++20 [online]. [cit. 2019-08-20]. Dostupné v archivu pořízeném z originálu dne 2020-08-13.
- ↑ Permitting trivial default initialization in constexpr contexts [online]. [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2020-10-19.
- ↑ P1668R1: Enabling Constexpr Intrinsics By Permitting Unevaluated inline-asm in Constexpr Functions [online]. www.open-std.org [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2020-01-19.
- ↑ P1186R3: When do you actually use <=>? [online]. www.open-std.org, 2019-07-20 [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2019-08-20.
- ↑ P1630R1: Spaceship needs a tune-up [online]. www.open-std.org, 2019-07-20 [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2019-08-20.
- ↑ P1766R1: Mitigating minor modules maladies [online]. www.open-std.org, 2019-07-20 [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2019-08-20.
- ↑ P1452R2: On the non-uniform semantics of return-type-requirements [online]. www.open-std.org, 2019-07-20 [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2019-08-20.
- ↑ P1771R1: nodiscard for constructors [online]. www.open-std.org, 2019-07-20 [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2022-09-21.
- ↑ P1754R1: Rename concepts to standard_case for C++20, while we still can [online]. www.open-std.org, 2019-07-20 [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2019-08-20.
- ↑ P0645R10: Text Formatting [online]. www.open-std.org, 2019-07-20 [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2019-08-20.
- ↑ std::format in C++20 [online]. www.zverovich.net, 2019-07-23 [cit. 2019-09-15]. Dostupné v archivu pořízeném z originálu dne 2019-07-23.
- ↑ P1361R2: Integration of chrono with text formatting [online]. www.open-std.org, 2019-07-20 [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2019-08-20.
- ↑ P1652R1: Printf corner cases in std::format [online]. www.open-std.org, 2019-07-20 [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2019-08-20.
- ↑ P1965R2: constexpr INVOKE [online]. www.open-std.org, 2019-07-20 [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2019-08-20.
- ↑ P0631R8: Math Constants [online]. www.open-std.org, 2019-07-20 [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2019-08-20.
- ↑ P1643R1: Add wait/notify to atomic_ref<T> [online]. www.open-std.org, 2019-07-20 [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2019-08-20.
- ↑ P1664R0: Add wait/notify to atomic<shared_ptr<T>> [online]. www.open-std.org, 2019-07-20 [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2021-11-05.
- ↑ P1614R2: The Mothership has Landed - Adding <=> to the Library [online]. www.open-std.org, 2019-07-20 [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2019-08-20.
- ↑ P1502R1: Standard library header units for C++20 [online]. www.open-std.org, 2019-07-20 [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2019-08-20.
- ↑ P1135R6: The C++20 Synchronization Library [online]. www.open-std.org, 2019-07-20 [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2019-08-20.
- ↑ P0514R4: Efficient concurrent waiting for C++20 [online]. [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2018-08-18.
- ↑ P0666R2: Revised Latches and Barriers for C++20 [online]. [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2018-08-18.
- ↑ P0995R1: Improving atomic_flag [online]. [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2019-07-20.
- ↑ P1285R0: Don't Make C++ Unimplementable On Small CPUs [online]. [cit. 2019-07-20]. Dostupné v archivu pořízeném z originálu dne 2019-07-15.
- ↑ P1208R6: Adopt source_location from Library Fundamentals V3 for C++20 [online]. [cit. 2019-08-20]. Dostupné v archivu pořízeném z originálu dne 2019-08-20.
- ↑ P0980R1: Making std::string constexpr [online]. [cit. 2020-07-30]. Dostupné v archivu pořízeném z originálu dne 2020-09-29.
- ↑ P1004R2: Making std::vector constexpr [online]. [cit. 2020-07-30]. Dostupné v archivu pořízeném z originálu dne 2020-09-28.
- ↑ P0660R10: Stop Token and Joining Thread [online]. [cit. 2019-08-20]. Dostupné v archivu pořízeném z originálu dne 2019-08-20.
- ↑ fall meeting in November 2019
- ↑ r/cpp - 2019-11 Belfast ISO C++ Committee Trip Report — Started Processing Feedback on the C++20 Committee Draft; ABI Review Group Formed [online]. reddit, 2019-11-09 [cit. 2019-11-09]. Dostupné v archivu pořízeném z originálu dne 2019-11-09. (anglicky)
- ↑ SUTTER, Herb. Trip report: Autumn ISO C++ standards meeting (Belfast) [online]. Sutter's Mill, 2019-11-09 [cit. 2019-11-09]. Dostupné v archivu pořízeném z originálu dne 2019-11-09. (anglicky)
- ↑ BOTONDBALLO. Trip Report: C++ Standards Meeting in Belfast, November 2019 [online]. There's Waldo!, 2019-11-15 [cit. 2019-11-24]. Dostupné v archivu pořízeném z originálu dne 2019-11-20. (anglicky)
- ↑ P1907R0: Inconsistencies with non-type template parameters [online]. www.open-std.org, 2019-10-07 [cit. 2019-11-09]. Dostupné v archivu pořízeném z originálu dne 2019-11-09.
- ↑ P1714: NTTP are incomplete without float, double, and long double! (Revision 1) [online]. www.open-std.org, 2019-07-19 [cit. 2019-11-09]. Dostupné v archivu pořízeném z originálu dne 2019-11-09.
- ↑ P1855R=: Make<compare>freestanding [online]. www.open-std.org, 2019-10-05 [cit. 2019-11-09]. Dostupné v archivu pořízeném z originálu dne 2019-11-09.
- ↑ P1872R0: span should have size_type not index_type [online]. www.open-std.org, 2019-09-16 [cit. 2019-11-09]. Dostupné v archivu pořízeném z originálu dne 2019-11-09.
- ↑ P1456: Move-only views [online]. www.open-std.org, 2019-01-25 [cit. 2019-11-09]. Dostupné v archivu pořízeném z originálu dne 2019-11-09.
- ↑ P1391: Range constructor for std::string_view [online]. www.open-std.org [cit. 2019-11-09]. Dostupné v archivu pořízeném z originálu dne 2020-01-04.
- ↑ P1394: Range constructor for std::span [online]. www.open-std.org, 2019-08-02 [cit. 2019-11-09]. Dostupné v archivu pořízeném z originálu dne 2019-11-09.
- ↑ P1870R1: forwarding-range<T> is too subtle [online]. www.open-std.org, 2019-10-06 [cit. 2019-11-09]. Dostupné v archivu pořízeném z originálu dne 2019-11-09.
- ↑ P0883: Fixing Atomic Initialization [online]. www.open-std.org, 2018-06-05 [cit. 2019-11-09]. Dostupné v archivu pořízeném z originálu dne 2019-11-09.
- ↑ Missing feature-test macros 2018-2019 [online]. www.open-std.org, 2019-10-06 [cit. 2019-11-09]. Dostupné v archivu pořízeném z originálu dne 2019-11-09.
Externí odkazy
[editovat | editovat zdroj]- Odkaz na nákup ISO/IEC 14882:2020 z ISO online uložiště.
- N4860, závěrečná pracovní verze normy.
- JTC1/SC22/WG21 ISO/IEC C++ Standard pracovní skupina (neboli Výbor pro normu C++)
- Rozsahy (range-v3) GitHub repozitář, od Erica Nieblera