C++17/20/23 (CPP6)
Programming, C, C++
Location, current course term
Contact us
The course:
Hide detail
-
Co přináší nové verze C++
-
Nástroje pro větší čitelnost a spolehlivost
-
Zlepšení výkonu a latence v embedded světě
-
Nástroje C++20 a C++23, očekávání od C++26
-
Různá drobná vylepšení
-
Formátovaný výstup a
std::println
-
Změny v inicializaci hodnot a proměnných
-
Spaceship a strong či weak pořadí
-
Zajímavé specializované nástroje
-
Více hodnot při indexování
-
Počítání se
std::lerp
-
Endianess a byteswap
-
Práce s adresářovou strukturou
-
Procházení adresářové struktury
-
Zásahy do souborů a adresářů
-
Interakce se zbytkem standardní knihovny
-
Práce s kusy polí a řetězců
-
Souvislé sekvence a
std::span
-
Předávání řetězců a
std::string_view
-
Výhody a rizika pohledů do paměti
-
Vylepšení práce s kontejnery
-
Mazání prvků pomocí
std::erase
-
Rozebírání přes structured bindings
-
Opouštíme přímé používání iterátorů
-
Jak fungují ranges a views
-
Vztah ranges, views a kontejnerů
-
Co je špatně na iterátorech v C++
-
Na co si dávat pozor u ranges
-
Nástroje pro filtrování a transformaci
-
Views jako líné iterátory
-
Řetězení operací nad views
-
Jaké views máme k dispozici
-
Moderní práce s vlákny
-
Futures a promises
-
Práce s
std::jthread
-
Použití
std::async
-
Asynchronní volání přes callbacky
-
Předávání callbacků k událostem
-
Skládání sekvencí callbacků
-
Řešení přes korutiny
-
Korutiny a asynchronní I/O
-
Motivace práce s korutinami
-
Externí knihovny s plánovačem
-
Potenciální dopady v embedded světě
-
Asynchronní síťová komunikace
-
Komunikace pomocí TCP/IP
-
HTTP server a klient
-
Souběh s ostatními operacemi
-
Výpočetní vlákna a korutiny
-
Korutiny mají řešit I/O
-
CPU bound versus I/O bound
-
Kombinace vláken a korutin
-
Šablony a jejich specializace
-
Zvláštní zacházení s konkrétními případy
-
Specializace pomocí tagování a policy
-
Metafunkce a výpočty v době kompilace
-
Vymezení typových parametrů
-
Dokumentace požadavků na typy
-
SFINAE a programování pomocí type traits
-
Explicitní vymezení a concepts
-
Pohodlnější práce s šablonami
-
Zkrácené šablony funkcí
-
Deducing this a perfect forwarding
-
CTAD a vynechávání typových parametrů
-
Kombinace OOP a šablon
-
Využití dědičnosti bez virtuálních metod
-
Doplňování funkcionality pomocí CRTP
-
Vymazání typů a
std::any
-
Knihovny v hlavičkových souborech
-
Moderní význam keywordu inline
-
ODR a jak to všechno funguje
-
Kombinace se šablonami a třídami
-
Metaprogramování mimo šablony
-
Klíčová slova
constexpr, consteval a constinit
-
Podmínky
if constexpr a if consteval
-
Použití
static_assert()
-
Kombinace constexpr a šablon
-
Větvení podle typu v době kompilace
-
Zásadní zjednodušení některých šablon
-
Šablony constexpr funkcí a proměnných
-
Modularita
-
Hlavičkové soubory a
#pragma once
-
Vlastní moduly a úprava ODR
-
Standardní knihovna ve formě modulu
-
Lambdy a jejich vylepšení
-
Implicitní a explicitní šablony
-
Lambdy s
constexpr a consteval
-
Implicitní chování bezstavové lambdy
-
Řízení chyb bez použití výjimek
-
Návratová hodnota
std::expected
-
Práce se
std::optional
-
Řetězení monadických operací
-
Běhový polymorfismus bez heapu
-
Polymorfní typ
std::variant
-
Aplikace overloadů přes
‘std::visit’
-
Od lambda šablon k overloaded pattern
-
Recommended previous course:
-
C++ – Advanced Programming (CPP2)
-
Recommended subsequent course:
-
C++ – Design Patterns (CPP3)
-
Schedule:
-
5 days (9:00 AM - 5:00 PM )
-
Language:
-