C++ – Metaprogramování a výkonné aplikace (CPP5)
Programování, C, C++
Od C++20 máme k dispozici koncepty, které zásadním způsobem ulehčují používání šablon a typových argumentů. Je to další zásadní krok pro embedded software a náročné aplikace, kdy se upouští od používání virtuálních metod a klasického objektově orientovaného programování ve prospěch vysokého výkonu a předvídatelných latencí.
Ne všichni budete moci od začátku využívat C++26, které obohacuje metaprogramování o reflexi v době kompilace. Ta vám časem umožní spoustu věcí vyjádřit stručněji a srozumitelněji. Na druhou stranu C++ nabízí spoustu knihovních nástrojů, kterými se můžete inspirovat a vytvořit si vlastní implementaci.
Kurz je od základu postavený pro standardy C++20, C++23 a C++26. Na požádání lze upravit pro starší verzi C++.
TOTO ŠKOLENÍ VÁM POMŮŽE:
- Uvědomit si možnosti optimalizací při kompilaci kódu v C++
- Seznámit se s možnostmi metaprogramování v nejnovějších verzích C++
- Vyzkoušet si práci se šablonami na mnoho různých způsobů
- Porozumět fungování spouštění C++ kódu v době kompilace
KDO BY SE MĚL KURZU ZÚČASTNIT?
- Zkušení vývojáři v C++, kteří chtějí aktualizovat své znalosti
- Vývojáři v C++, kteří se chtějí naučit pracovat s šablonami, koncepty a constexpr
- Zájemci o průmyslové programovací jazyky a jejich možnosti a omezení
Privátní školení a termíny na míru
Specifičnost tohoto školení a nízký zájem jednotlivců neumožňuje pro tento kurz vypisovat veřejné termíny. Tento kurz nabízíme pouze jako uzavřené privátní školení. Obsah, délka a termíny kurzů budou vytvořeny podle vašich specifických potřeb.
Cenovou nabídku vám rádi připravíme na základě vašich požadavků a cílů zaslaných e-mailem nebo zadaných prostřednictvím poptávkového formuláře. Cena privátního školení vychází z náročnosti požadované obsahové náplně školení, časového rozsahu a celkového počtu přihlášených osob.
KDE A KDY KURZ PROBÍHÁ?
Kontaktujte nás
S námi
máte na výběr: Přijďte na
kurz osobně do naší učebny, nebo se ke kurzu
připojte online. Pokud preferujete online formu, uveďte prosím do poznámky v objednávce "Připojím se virtuálně".
Více informací k hybridní formě školení
naleznete zde.
Náplň kurzu:
Skrýt detaily
-
Metaprogramování v C++20 a C++23
-
Tvorba výkonného obecného kódu
-
Umožnění maximální optimalizace
-
Přehlednější a srozumitelnější než dříve
-
Programování pomocí šablon
-
Parametrické datové struktury
-
Obecné algoritmy a pomocné struktury
-
Statická typová kontrola a
safety
-
Specializace šablon
-
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ů pomocí šablon a dědičnosti
-
Variadické šablony
-
Proměnný počet parametrů
-
Výrazy založené na sadách parametrů
-
Techniky založené na vícenásobné dědičnosti
-
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
-
Vyhodnocování v době kompilace
-
Klíčová slova
constexpr a consteval
-
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
-
Design šablonových knihoven
-
Metody nebo globální funkce
-
vyhledávání podle argumentu (ADL)
-
Bod přizpůsobení (customization point)
-
Implementace univerzálních šablon
-
Specializované chytré ukazatele
-
Vlastní kontejnerové typy
-
Datové struktury bez dynamické alokace
-
Bonus: Reflexe v C++26
-
Informace o typech a proměnných
-
Vkládání informací do kódu
-
Praktická aplikace reflexe
-
Předpokládané znalosti:
-
Dobrá znalost programování v jazyce C++
-
Doporučený předchozí kurz:
-
C++ – Praktické programování pro pokročilé (CPP2)
-
Doporučený následný kurz:
-
C++ – Návrhové vzory a idiomy (CPP3)
-
Časový rozvrh:
-
3 dny (9:00hod. - 17:00hod.)